From 636eaefe59f578df7a7e8289ac9cdb1dd0373717 Mon Sep 17 00:00:00 2001 From: Nexoniarz Date: Sun, 25 Oct 2026 21:48:11 +0100 Subject: [PATCH] finch lsp: the language server, written in Finch Hover, go to definition, completion (after a dot too: fields, methods, a module's names, an enum's variants, array/text/map methods), signature help, the outline and errors while typing -- everything the C++ one did, and the same tests/lsp_test.py passes against it. It doesn't type-check by itself: for every change it runs finch index on the editor's text (--overlay says which file the text stands in for) and reads what the compiler learned about every name, which is also what the compiler's own error messages are made of. Half-typed code keeps using the last version that compiled. src/docs.fch is the one description of the built-ins that hover and completion share. tests/run.sh runs the LSP test too. 107 passed. --- bootstrap/linux-x86_64.ll | 77860 +++++++++++++++++++++--------------- shell.nix | 1 + src/ast.fch | 1 + src/docs.fch | 109 + src/gen.fch | 173 +- src/lsp.fch | 875 + src/main.fch | 35 +- src/parser.fch | 2 + tests/run.sh | 11 + 9 files changed, 47681 insertions(+), 31386 deletions(-) create mode 100644 src/docs.fch create mode 100644 src/lsp.fch diff --git a/bootstrap/linux-x86_64.ll b/bootstrap/linux-x86_64.ll index 28068bd..18d30e5 100644 --- a/bootstrap/linux-x86_64.ll +++ b/bootstrap/linux-x86_64.ll @@ -1,15 +1,15 @@ ; generated by the Finch compiler written in Finch -%S.main.Loader = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.main.Loader = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } %S.lexer.Token = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1 } %S.lexer.Lexer = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } %S.ast.Type = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } -%S.ast.Node = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64 } +%S.ast.Node = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i64 } %S.ast.Program = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } %S.parser.Parser = type { { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 } } -%S.gen.Var = type { { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, i64 } +%S.gen.Var = type { { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, i64, { ptr, i64, i64 }, i64, i64 } %S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, { ptr, i64, i64 }, %S.platform.Target } +%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } %S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } %S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } %S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } @@ -21,13 +21,14 @@ %S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } %S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } %S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.gen.FnSig, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, %S.cimport.CImports, i1, i1, %S.platform.Target, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i64, i64 } +%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.gen.FnSig, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, %S.cimport.CImports, i1, i1, { ptr, i64, i64 }, i1, %S.platform.Target, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i64, i64 } %S.gen.Saved = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i1, i64 } %S.gen.SizeAlign = type { i64, i64 } %S.gen.Fallible = type { %S.gen.Val, { ptr, i64, i64 }, { ptr, i64, i64 } } %S.gen.Abi = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64 } %S.gen.Leaf = type { i64, i64, i1, i1 } %S.gen.Plan = type { %S.gen.Abi, { ptr, i64, i64 }, { ptr, i64, i64 }, i1 } +%S.docs.Doc = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } %S.cimport.CFunc = type { { ptr, i64, i64 }, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, i1, { ptr, i64, i64 } } %S.cimport.CConst = type { i1, i64, double, { ptr, i64, i64 } } %S.cimport.CField = type { { ptr, i64, i64 }, %S.ast.Type, i64, i64, i64, i1 } @@ -39,6 +40,18 @@ %S.cimport.Number = type { %S.cimport.CConst, i1 } %S.linker.Names = type { { ptr, i64, i64 } } %S.linker.Build = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 } } +%S.lsp.Ref = type { { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.VarRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, i64, i64 } +%S.lsp.FnRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.lsp.StructRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.lsp.EnumRec = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.Diag = type { i1, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 } } +%S.lsp.Analysis = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, %S.lsp.Diag } +%S.lsp.Server = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 }, i1 } +%S.lsp.Names = type { { ptr, i64, i64 } } +%S.json.Json = type { i32, i1, double, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } +%S.json.Writer = type { { ptr, i64, i64 } } +%S.json.Reader = type { { ptr, i64, i64 }, i64 } %S.C.fd_set = type { [16 x i64] } %S.C.timeval = type { i64, i64 } %S.C.timespec = type { i64, i64 } @@ -84,6 +97,11 @@ %S.C.CXIdxIBOutletCollectionAttrInfo = type { ptr, ptr, %S.C.CXCursor, %S.C.CXIdxLoc } %S.C.CXIdxCXXClassDeclInfo = type { ptr, ptr, i32, [4 x i8] } %S.C.IndexerCallbacks = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } +%S.C.FILE = type { i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, [3 x i8], [1 x i8], i64, i16, i8, [1 x i8], [4 x i8], ptr, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i64, [8 x i8] } +%S.C.cookie_io_functions_t = type { ptr, ptr, ptr, ptr } +%S.C.__va_list_tag = type { i32, i32, ptr, ptr } +%S.C.__mbstate_t = type { i32, [4 x i8] } +%S.C.fpos_t = type { i64, %S.C.__mbstate_t } @.str.1 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.2 = private unnamed_addr constant [2 x i8] c".\00" @.str.3 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @@ -94,43 +112,43 @@ @.str.8 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.9 = private unnamed_addr constant [2 x i8] c".\00" @.str.10 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.11 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.12 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.13 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.14 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.11 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.12 = private unnamed_addr constant [37 x i8] c"used .overlayPaths on a null pointer\00" +@.str.13 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.14 = private unnamed_addr constant [37 x i8] c"used .overlayFiles on a null pointer\00" @.str.15 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.16 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" -@.str.17 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.16 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.17 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.18 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.19 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.20 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.21 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" -@.str.22 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.23 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.24 = private unnamed_addr constant [30 x i8] c"used .paths on a null pointer\00" +@.str.19 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.20 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.21 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.22 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.23 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.24 = private unnamed_addr constant [5 x i8] c".fch\00" @.str.25 = private unnamed_addr constant [2 x i8] c"/\00" @.str.26 = private unnamed_addr constant [2 x i8] c"_\00" @.str.27 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.28 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" @.str.29 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.30 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.31 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.32 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.33 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" -@.str.34 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.35 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.30 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.31 = private unnamed_addr constant [30 x i8] c"used .paths on a null pointer\00" +@.str.32 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.33 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.34 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.35 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" @.str.36 = private unnamed_addr constant [5 x i8] c".fch\00" @.str.37 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.38 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.38 = private unnamed_addr constant [2 x i8] c"_\00" @.str.39 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.40 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" -@.str.41 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.42 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" -@.str.43 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.44 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.45 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.46 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" -@.str.47 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.40 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.41 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.42 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.43 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.44 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.45 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.46 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.47 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" @.str.48 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.49 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" @.str.50 = private unnamed_addr constant [2 x i8] c"/\00" @@ -141,384 +159,384 @@ @.str.55 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.56 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" @.str.57 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.58 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.58 = private unnamed_addr constant [2 x i8] c"_\00" @.str.59 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.60 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" -@.str.61 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.62 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.63 = private unnamed_addr constant [31 x i8] c"error: can't find the module '\00" -@.str.64 = private unnamed_addr constant [15 x i8] c"' (looked for \00" -@.str.65 = private unnamed_addr constant [2 x i8] c")\00" -@.str.66 = private unnamed_addr constant [1 x i8] c"\00" -@.str.67 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.68 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.69 = private unnamed_addr constant [20 x i8] c"error: can't open '\00" -@.str.70 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.71 = private unnamed_addr constant [1 x i8] c"\00" -@.str.72 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.73 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.74 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.75 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.76 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.77 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.78 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.79 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.80 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.81 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.82 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" +@.str.60 = private unnamed_addr constant [27 x i8] c"used .os on a null pointer\00" +@.str.61 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.62 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.63 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.64 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.65 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.66 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.67 = private unnamed_addr constant [28 x i8] c"used .std on a null pointer\00" +@.str.68 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.69 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.70 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.71 = private unnamed_addr constant [37 x i8] c"used .overlayPaths on a null pointer\00" +@.str.72 = private unnamed_addr constant [31 x i8] c"error: can't find the module '\00" +@.str.73 = private unnamed_addr constant [15 x i8] c"' (looked for \00" +@.str.74 = private unnamed_addr constant [2 x i8] c")\00" +@.str.75 = private unnamed_addr constant [1 x i8] c"\00" +@.str.76 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.77 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.78 = private unnamed_addr constant [20 x i8] c"error: can't open '\00" +@.str.79 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.80 = private unnamed_addr constant [1 x i8] c"\00" +@.str.81 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.82 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.83 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.84 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" -@.str.85 = private unnamed_addr constant [42 x i8] c"Finch -- the compiler is written in Finch\00" -@.str.86 = private unnamed_addr constant [1 x i8] c"\00" -@.str.87 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.88 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.89 = private unnamed_addr constant [7 x i8] c"usage:\00" -@.str.90 = private unnamed_addr constant [1 x i8] c"\00" -@.str.91 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.92 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.93 = private unnamed_addr constant [61 x i8] c" finch run [args...] build and run a program\00" +@.str.84 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.85 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.86 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.87 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.88 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.89 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.90 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" +@.str.91 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.92 = private unnamed_addr constant [31 x i8] c"used .loaded on a null pointer\00" +@.str.93 = private unnamed_addr constant [42 x i8] c"Finch -- the compiler is written in Finch\00" @.str.94 = private unnamed_addr constant [1 x i8] c"\00" @.str.95 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.96 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.97 = private unnamed_addr constant [53 x i8] c" finch build [-o name] build a program\00" +@.str.97 = private unnamed_addr constant [7 x i8] c"usage:\00" @.str.98 = private unnamed_addr constant [1 x i8] c"\00" @.str.99 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.100 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.101 = private unnamed_addr constant [55 x i8] c" finch ir print the LLVM IR\00" +@.str.101 = private unnamed_addr constant [61 x i8] c" finch run [args...] build and run a program\00" @.str.102 = private unnamed_addr constant [1 x i8] c"\00" @.str.103 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.104 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.105 = private unnamed_addr constant [54 x i8] c" finch version show the version\00" +@.str.105 = private unnamed_addr constant [53 x i8] c" finch build [-o name] build a program\00" @.str.106 = private unnamed_addr constant [1 x i8] c"\00" @.str.107 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.108 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.109 = private unnamed_addr constant [9 x i8] c"options:\00" +@.str.109 = private unnamed_addr constant [55 x i8] c" finch ir print the LLVM IR\00" @.str.110 = private unnamed_addr constant [1 x i8] c"\00" @.str.111 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.112 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.113 = private unnamed_addr constant [54 x i8] c" -O0 no optimization (faster to build)\00" +@.str.113 = private unnamed_addr constant [54 x i8] c" finch version show the version\00" @.str.114 = private unnamed_addr constant [1 x i8] c"\00" @.str.115 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.116 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.117 = private unnamed_addr constant [77 x i8] c" -l link a library (the same as link \22lib\22 in the program)\00" +@.str.117 = private unnamed_addr constant [91 x i8] c" finch lsp the language server, for editors (VS Code, Kate, ...)\00" @.str.118 = private unnamed_addr constant [1 x i8] c"\00" @.str.119 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.121 = private unnamed_addr constant [58 x i8] c" -I look for imported C headers there too\00" +@.str.121 = private unnamed_addr constant [9 x i8] c"options:\00" @.str.122 = private unnamed_addr constant [1 x i8] c"\00" @.str.123 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.124 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.125 = private unnamed_addr constant [67 x i8] c" -g debug info (for gdb and lldb; use -O0 with it)\00" +@.str.125 = private unnamed_addr constant [54 x i8] c" -O0 no optimization (faster to build)\00" @.str.126 = private unnamed_addr constant [1 x i8] c"\00" @.str.127 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.128 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.129 = private unnamed_addr constant [102 x i8] c" --target build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple\00" +@.str.129 = private unnamed_addr constant [77 x i8] c" -l link a library (the same as link \22lib\22 in the program)\00" @.str.130 = private unnamed_addr constant [1 x i8] c"\00" @.str.131 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.132 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.133 = private unnamed_addr constant [79 x i8] c"not in this compiler yet: lsp. It is in the C++ one (branch before-bootstrap).\00" +@.str.133 = private unnamed_addr constant [58 x i8] c" -I look for imported C headers there too\00" @.str.134 = private unnamed_addr constant [1 x i8] c"\00" @.str.135 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.136 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.137 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.138 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.139 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.140 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.141 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" +@.str.137 = private unnamed_addr constant [67 x i8] c" -g debug info (for gdb and lldb; use -O0 with it)\00" +@.str.138 = private unnamed_addr constant [1 x i8] c"\00" +@.str.139 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.140 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.141 = private unnamed_addr constant [102 x i8] c" --target build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple\00" @.str.142 = private unnamed_addr constant [1 x i8] c"\00" @.str.143 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.144 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.145 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.146 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.148 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.149 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.146 = private unnamed_addr constant [8 x i8] c"version\00" +@.str.147 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.148 = private unnamed_addr constant [10 x i8] c"--version\00" +@.str.149 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" @.str.150 = private unnamed_addr constant [1 x i8] c"\00" -@.str.151 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.154 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.155 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.151 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.152 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.153 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.154 = private unnamed_addr constant [4 x i8] c"lsp\00" +@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.156 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.157 = private unnamed_addr constant [9 x i8] c"--shared\00" +@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.158 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.159 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.160 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.161 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.162 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.169 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.170 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.171 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.172 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.173 = private unnamed_addr constant [16 x i8] c"/tmp/finch_run_\00" -@.str.174 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.176 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.177 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.178 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.179 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.180 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.181 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.159 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.160 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.161 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.162 = private unnamed_addr constant [1 x i8] c"\00" +@.str.163 = private unnamed_addr constant [4 x i8] c"-O2\00" +@.str.164 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.165 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.166 = private unnamed_addr constant [3 x i8] c"-o\00" +@.str.167 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.168 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.169 = private unnamed_addr constant [9 x i8] c"--shared\00" +@.str.170 = private unnamed_addr constant [6 x i8] c"build\00" +@.str.171 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.172 = private unnamed_addr constant [4 x i8] c"-O0\00" +@.str.173 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.175 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.176 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.177 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.178 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.179 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.180 = private unnamed_addr constant [10 x i8] c"--overlay\00" +@.str.181 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" @.str.182 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.183 = private unnamed_addr constant [8 x i8] c"/../std\00" +@.str.183 = private unnamed_addr constant [2 x i8] c"=\00" @.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.186 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.187 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.188 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.189 = private unnamed_addr constant [1 x i8] c"\00" +@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.186 = private unnamed_addr constant [3 x i8] c"-g\00" +@.str.187 = private unnamed_addr constant [9 x i8] c"--target\00" +@.str.188 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.189 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.190 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.191 = private unnamed_addr constant [16 x i8] c"/tmp/finch_run_\00" +@.str.192 = private unnamed_addr constant [5 x i8] c".dll\00" +@.str.193 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.194 = private unnamed_addr constant [7 x i8] c".dylib\00" +@.str.195 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.196 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.197 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.198 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.199 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.200 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.201 = private unnamed_addr constant [8 x i8] c"/../std\00" +@.str.202 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.203 = private unnamed_addr constant [5 x i8] c"/std\00" +@.str.204 = private unnamed_addr constant [4 x i8] c"std\00" +@.str.205 = private unnamed_addr constant [10 x i8] c"/path.fch\00" +@.str.206 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" +@.str.207 = private unnamed_addr constant [1 x i8] c"\00" declare ptr @getenv(ptr) -@.str.190 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.191 = private unnamed_addr constant [2 x i8] c":\00" -@.str.192 = private unnamed_addr constant [1 x i8] c"\00" -@.str.193 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.197 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.198 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.199 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.200 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.201 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.202 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.203 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.204 = private unnamed_addr constant [1 x i8] c"\00" -@.str.205 = private unnamed_addr constant [1 x i8] c"\00" -@.str.206 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.208 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.209 = private unnamed_addr constant [1 x i8] c"\00" -@.str.210 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.211 = private unnamed_addr constant [1 x i8] c"\00" -@.str.212 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.213 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.214 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.215 = private unnamed_addr constant [1 x i8] c"\00" -@.str.216 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.217 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.218 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.219 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.220 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.221 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.222 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00" +@.str.208 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.209 = private unnamed_addr constant [2 x i8] c":\00" +@.str.210 = private unnamed_addr constant [1 x i8] c"\00" +@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.212 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.214 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.216 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.217 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.218 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.219 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.220 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.221 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.222 = private unnamed_addr constant [1 x i8] c"\00" @.str.223 = private unnamed_addr constant [1 x i8] c"\00" @.str.224 = private unnamed_addr constant [5 x i8] c"%.*s\00" @.str.225 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.226 = private unnamed_addr constant [1 x i8] c"\00" -@.str.227 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.228 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.229 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.230 = private unnamed_addr constant [2 x i8] c" \00" -@.str.231 = private unnamed_addr constant [2 x i8] c" \00" -@.str.232 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.233 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.234 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.235 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.236 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.237 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.238 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.239 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.240 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.241 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.242 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.243 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.244 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.245 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.246 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.247 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.248 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.249 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.250 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.251 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.252 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.253 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.254 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.255 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.256 = private unnamed_addr constant [2 x i8] c":\00" -@.str.257 = private unnamed_addr constant [2 x i8] c":\00" -@.str.258 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.259 = private unnamed_addr constant [1 x i8] c"\00" -@.str.260 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.261 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.262 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.263 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.264 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.265 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.266 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.267 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.268 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.269 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.270 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.271 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.272 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.273 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.274 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.275 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.276 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.277 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.278 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.279 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.280 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.281 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" +@.str.226 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.227 = private unnamed_addr constant [4 x i8] c"PWD\00" +@.str.228 = private unnamed_addr constant [1 x i8] c"\00" +@.str.229 = private unnamed_addr constant [3 x i8] c"ir\00" +@.str.230 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.231 = private unnamed_addr constant [1 x i8] c"\00" +@.str.232 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.233 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.234 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" +@.str.235 = private unnamed_addr constant [1 x i8] c"\00" +@.str.236 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.237 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" +@.str.238 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" +@.str.239 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" +@.str.240 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.241 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" +@.str.242 = private unnamed_addr constant [57 x i8] c"error: can't find the Finch runtime (runtime/finch_rt.c)\00" +@.str.243 = private unnamed_addr constant [1 x i8] c"\00" +@.str.244 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.245 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.246 = private unnamed_addr constant [1 x i8] c"\00" +@.str.247 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.248 = private unnamed_addr constant [4 x i8] c" -g\00" +@.str.249 = private unnamed_addr constant [4 x i8] c"run\00" +@.str.250 = private unnamed_addr constant [2 x i8] c" \00" +@.str.251 = private unnamed_addr constant [2 x i8] c" \00" +@.str.252 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.253 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.254 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.255 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.256 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.257 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.258 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.259 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.260 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.261 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.262 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.263 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.264 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.265 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.266 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.267 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.268 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.269 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.270 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.271 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.272 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.273 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.274 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.275 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.276 = private unnamed_addr constant [2 x i8] c":\00" +@.str.277 = private unnamed_addr constant [2 x i8] c":\00" +@.str.278 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.279 = private unnamed_addr constant [1 x i8] c"\00" +@.str.280 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.281 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str.282 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.283 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.283 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.284 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.285 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.286 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.287 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.288 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.289 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.290 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.291 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.292 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.293 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.294 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.295 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.296 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.297 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.298 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.299 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.300 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.301 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.285 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.286 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.287 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.288 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.289 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.290 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.292 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.294 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.296 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.297 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.298 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.299 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.301 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" @.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.303 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" @.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.306 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.307 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.308 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.313 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.314 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.315 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.316 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.317 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.318 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.319 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.320 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.321 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.322 = private unnamed_addr constant [1 x i8] c"\00" -@.str.323 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.324 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.325 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.326 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.327 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" +@.str.305 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.306 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.307 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.308 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.309 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.310 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.311 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.312 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.313 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.314 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.315 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.316 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.317 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str.318 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str.319 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.320 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.321 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.322 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.323 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.324 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.325 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.326 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.327 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.328 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.329 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.330 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.331 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.332 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.333 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.329 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.333 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" @.str.334 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.335 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.335 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.336 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.338 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.339 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.340 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.340 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.341 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.342 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.342 = private unnamed_addr constant [1 x i8] c"\00" @.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.344 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" @.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.346 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.347 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" @.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.351 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.356 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.357 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.358 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.362 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.363 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.364 = private unnamed_addr constant [1 x i8] c"\00" -@.str.365 = private unnamed_addr constant [1 x i8] c"\00" +@.str.363 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.364 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.365 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.366 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.367 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" @.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.369 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" @.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" +@.str.371 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" +@.str.373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.375 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.376 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.377 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.378 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.379 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.380 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.382 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.384 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.389 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.383 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" +@.str.384 = private unnamed_addr constant [1 x i8] c"\00" +@.str.385 = private unnamed_addr constant [1 x i8] c"\00" +@.str.386 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.387 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.389 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" @.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.391 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" @.str.392 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.393 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.395 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.396 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.393 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" +@.str.394 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.395 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.396 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.397 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.398 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.399 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.400 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.401 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.402 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.403 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.404 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.407 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.408 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.409 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.410 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.412 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.411 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.412 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.413 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.414 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.415 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.416 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.414 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.415 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.416 = private unnamed_addr constant [4 x i8] c"int\00" @.str.417 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.418 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.421 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.425 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.422 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.423 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.424 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.425 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.427 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.429 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.431 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.432 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.433 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.434 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.436 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.437 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @@ -527,5648 +545,6719 @@ declare ptr @getenv(ptr) @.str.440 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.441 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.444 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.445 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.446 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.447 = private unnamed_addr constant [1 x i8] c"\00" -@.str.448 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.449 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.450 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.451 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.452 = private unnamed_addr constant [1 x i8] c"\00" -@.str.453 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.454 = private unnamed_addr constant [1 x i8] c"\00" -@.str.455 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.456 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" +@.str.443 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.445 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.449 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.450 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.451 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.452 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.454 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.456 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" @.str.460 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.461 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.461 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" @.str.462 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.463 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.464 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.465 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.467 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.468 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.471 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.472 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.473 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.474 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.475 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.476 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.477 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.478 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.479 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.480 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.481 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.482 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.483 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.484 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.485 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.486 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.487 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.488 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.489 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.490 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.491 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.492 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.493 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.494 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.495 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.496 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.497 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.498 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.499 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.500 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.501 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.502 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.503 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.504 = private unnamed_addr constant [2 x i8] c".\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.506 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.507 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.508 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.509 = private unnamed_addr constant [2 x i8] c":\00" -@.str.510 = private unnamed_addr constant [2 x i8] c":\00" -@.str.511 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.512 = private unnamed_addr constant [1 x i8] c"\00" -@.str.513 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.514 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.515 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.516 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.517 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.519 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.520 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.521 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.522 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.523 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.524 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.525 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.463 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.465 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.466 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.467 = private unnamed_addr constant [1 x i8] c"\00" +@.str.468 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.469 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.470 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" +@.str.471 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" +@.str.472 = private unnamed_addr constant [1 x i8] c"\00" +@.str.473 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" +@.str.474 = private unnamed_addr constant [1 x i8] c"\00" +@.str.475 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" +@.str.476 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" +@.str.477 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.479 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.480 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.481 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.482 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.483 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.484 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.485 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.486 = private unnamed_addr constant [1 x i8] c"\00" +@.str.487 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.488 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" +@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" +@.str.490 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" +@.str.491 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.492 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.493 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.494 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.495 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.496 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.497 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.498 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.499 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.500 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.501 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.502 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.503 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.504 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.505 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.506 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.507 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.508 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.509 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.510 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.511 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.512 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.513 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.514 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.516 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.517 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.518 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" +@.str.520 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.521 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.522 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.523 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.524 = private unnamed_addr constant [2 x i8] c".\00" +@.str.525 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.526 = private unnamed_addr constant [8 x i8] c"nothing\00" @.str.527 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.528 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.529 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.530 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.531 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.532 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.533 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.534 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.535 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.538 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.528 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.529 = private unnamed_addr constant [2 x i8] c":\00" +@.str.530 = private unnamed_addr constant [2 x i8] c":\00" +@.str.531 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.532 = private unnamed_addr constant [1 x i8] c"\00" +@.str.533 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.534 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.535 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.536 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.537 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.538 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.539 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.540 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.541 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.542 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.543 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.540 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.541 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.542 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.543 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.549 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.551 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.552 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.553 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.554 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.555 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.556 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.557 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.558 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.559 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.560 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.561 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.562 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.563 = private unnamed_addr constant [9 x i8] c", found \00" +@.str.545 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.546 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.547 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.548 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.550 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.551 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.552 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.555 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.557 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.559 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.560 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.561 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.562 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.564 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.565 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.565 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.566 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.567 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.572 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.577 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.578 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.579 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.580 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.581 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.583 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.584 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.585 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.587 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.588 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.589 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.590 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.591 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.592 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.593 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.594 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.595 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.596 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.597 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.598 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.599 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.600 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.601 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.602 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.603 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.604 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.605 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.606 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.608 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.609 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.610 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.611 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.612 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.613 = private unnamed_addr constant [2 x i8] c".\00" -@.str.614 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.615 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.616 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.617 = private unnamed_addr constant [2 x i8] c",\00" -@.str.618 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.619 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.620 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.567 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.568 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.569 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.570 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.571 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.572 = private unnamed_addr constant [12 x i8] c"end of file\00" +@.str.573 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.574 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.575 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.576 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.577 = private unnamed_addr constant [9 x i8] c"a string\00" +@.str.578 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.579 = private unnamed_addr constant [7 x i8] c"a char\00" +@.str.580 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.581 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.582 = private unnamed_addr constant [10 x i8] c"expected \00" +@.str.583 = private unnamed_addr constant [9 x i8] c", found \00" +@.str.584 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.585 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.586 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.587 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.588 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.589 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.590 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.591 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.592 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.594 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.596 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.597 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.598 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.599 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.600 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.601 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.602 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.603 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.604 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.605 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.606 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.607 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.608 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.609 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.610 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.611 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.612 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.613 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.614 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.615 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.616 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" +@.str.617 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.618 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.619 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" +@.str.620 = private unnamed_addr constant [4 x i8] c"map\00" @.str.621 = private unnamed_addr constant [2 x i8] c"[\00" @.str.622 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.623 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.624 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.625 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.626 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.627 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.628 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.629 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.633 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.634 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.635 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.636 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.637 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.638 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.639 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.640 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.641 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.642 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.643 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.644 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.623 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" +@.str.624 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.625 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.626 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.627 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.628 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.629 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.630 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.631 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.632 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.633 = private unnamed_addr constant [2 x i8] c".\00" +@.str.634 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.635 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.636 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.637 = private unnamed_addr constant [2 x i8] c",\00" +@.str.638 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.639 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.640 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.641 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.642 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.643 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.644 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.645 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.646 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.646 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.647 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.648 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.649 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.650 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.651 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.648 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.649 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" @.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.653 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.657 = private unnamed_addr constant [6 x i8] c"ident\00" @.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.659 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.660 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.661 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.661 = private unnamed_addr constant [4 x i8] c"eof\00" @.str.662 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.663 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.664 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.663 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.664 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.666 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" @.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.675 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.676 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.677 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.680 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.681 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.668 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.669 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.670 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.671 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.672 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.673 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.675 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.678 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.679 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.680 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.681 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.682 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.683 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.684 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.685 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.686 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.687 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.688 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.689 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.690 = private unnamed_addr constant [2 x i8] c".\00" -@.str.691 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.692 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.683 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.686 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.690 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.692 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.693 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.694 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.694 = private unnamed_addr constant [4 x i8] c"eof\00" @.str.695 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.696 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.696 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" @.str.697 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.698 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.699 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.700 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.701 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.702 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.703 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.704 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.705 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.706 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.707 = private unnamed_addr constant [2 x i8] c":\00" -@.str.708 = private unnamed_addr constant [2 x i8] c":\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.711 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.712 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.713 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.714 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.715 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.716 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.717 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.718 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.719 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.720 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.721 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.726 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.727 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.728 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.729 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.730 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.731 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.732 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.733 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.734 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.735 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.736 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.737 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.738 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.739 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.740 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.741 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.742 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.743 = private unnamed_addr constant [1 x i8] c"\00" -@.str.744 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.745 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.746 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.747 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.748 = private unnamed_addr constant [2 x i8] c",\00" -@.str.749 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.750 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.751 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.752 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.753 = private unnamed_addr constant [8 x i8] c"'match'\00" +@.str.698 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.699 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.700 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.701 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.703 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.705 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.707 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.708 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.709 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.710 = private unnamed_addr constant [2 x i8] c".\00" +@.str.711 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.712 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.714 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.716 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.717 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.718 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.719 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.720 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.721 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" +@.str.722 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.723 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.724 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.725 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.726 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" +@.str.727 = private unnamed_addr constant [2 x i8] c":\00" +@.str.728 = private unnamed_addr constant [2 x i8] c":\00" +@.str.729 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.730 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" +@.str.731 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.732 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.733 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" +@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.735 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.736 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.737 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.738 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.739 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.740 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.741 = private unnamed_addr constant [4 x i8] c"lib\00" +@.str.742 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.743 = private unnamed_addr constant [4 x i8] c".so\00" +@.str.744 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.745 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.746 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" +@.str.747 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.748 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.749 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.750 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.751 = private unnamed_addr constant [7 x i8] c"'enum'\00" +@.str.752 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.753 = private unnamed_addr constant [13 x i8] c"an enum name\00" @.str.754 = private unnamed_addr constant [2 x i8] c"{\00" @.str.755 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.756 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.757 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.758 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.759 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.760 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.761 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.762 = private unnamed_addr constant [38 x i8] c"a match is never closed (missing '}')\00" -@.str.763 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.764 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.765 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.766 = private unnamed_addr constant [2 x i8] c",\00" -@.str.767 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.768 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.769 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.770 = private unnamed_addr constant [2 x i8] c",\00" -@.str.771 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.772 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.773 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.774 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.775 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.776 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.777 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.778 = private unnamed_addr constant [2 x i8] c",\00" -@.str.779 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.780 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.781 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.782 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.783 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.784 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.785 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.786 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.787 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.788 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.789 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.790 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.791 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.792 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.793 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.794 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.795 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.796 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.797 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.798 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.799 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.801 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.802 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.803 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" +@.str.756 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.757 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.758 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" +@.str.759 = private unnamed_addr constant [8 x i8] c"variant\00" +@.str.760 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.761 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" +@.str.762 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.763 = private unnamed_addr constant [1 x i8] c"\00" +@.str.764 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.765 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.766 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.767 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" +@.str.768 = private unnamed_addr constant [2 x i8] c",\00" +@.str.769 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.770 = private unnamed_addr constant [17 x i8] c" has no variants\00" +@.str.771 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.772 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.773 = private unnamed_addr constant [8 x i8] c"'match'\00" +@.str.774 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.775 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.776 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.777 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.778 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.779 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.780 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.781 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.782 = private unnamed_addr constant [38 x i8] c"a match is never closed (missing '}')\00" +@.str.783 = private unnamed_addr constant [4 x i8] c"arm\00" +@.str.784 = private unnamed_addr constant [9 x i8] c"patterns\00" +@.str.785 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.786 = private unnamed_addr constant [2 x i8] c",\00" +@.str.787 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.788 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" +@.str.789 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.790 = private unnamed_addr constant [2 x i8] c",\00" +@.str.791 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.792 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.793 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" +@.str.794 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.795 = private unnamed_addr constant [4 x i8] c"'['\00" +@.str.796 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.797 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" +@.str.798 = private unnamed_addr constant [2 x i8] c",\00" +@.str.799 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.800 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" +@.str.801 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.802 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.803 = private unnamed_addr constant [9 x i8] c"'struct'\00" @.str.804 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.805 = private unnamed_addr constant [16 x i8] c"a function name\00" +@.str.805 = private unnamed_addr constant [14 x i8] c"a struct name\00" @.str.806 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.807 = private unnamed_addr constant [2 x i8] c".\00" -@.str.808 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.809 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.810 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.811 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.812 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.813 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.814 = private unnamed_addr constant [2 x i8] c")\00" -@.str.815 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.816 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.817 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.818 = private unnamed_addr constant [2 x i8] c",\00" -@.str.819 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.820 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.822 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.823 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.824 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.825 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.826 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.828 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.829 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.830 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.831 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.832 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.833 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.834 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.835 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.836 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.837 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.838 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.839 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.840 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.841 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.842 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.843 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.845 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.846 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.847 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.848 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.849 = private unnamed_addr constant [2 x i8] c",\00" -@.str.850 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.851 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.852 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.853 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.854 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.855 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.856 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.858 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.859 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.860 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.861 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.862 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.863 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.866 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.867 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.868 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.869 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.870 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.871 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.872 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.873 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.874 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.875 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.876 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.877 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.878 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.879 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.880 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.882 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.883 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.884 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.885 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.886 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.887 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.888 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.889 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.890 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.891 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.892 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.893 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.894 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.895 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.897 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.898 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.899 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.900 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.901 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.903 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.904 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.905 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.906 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.907 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.908 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.909 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.910 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.911 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.912 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.913 = private unnamed_addr constant [2 x i8] c">\00" -@.str.914 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.915 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.916 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.917 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.918 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.919 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.920 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.921 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.922 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.923 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.924 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.925 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.926 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.928 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.929 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.930 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.932 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.933 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.934 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.935 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.936 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.937 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.938 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.939 = private unnamed_addr constant [2 x i8] c")\00" -@.str.940 = private unnamed_addr constant [2 x i8] c")\00" -@.str.941 = private unnamed_addr constant [1 x i8] c"\00" -@.str.942 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.943 = private unnamed_addr constant [2 x i8] c":\00" -@.str.944 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.945 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.946 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.947 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.948 = private unnamed_addr constant [2 x i8] c",\00" -@.str.949 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.950 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.951 = private unnamed_addr constant [2 x i8] c")\00" -@.str.952 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.953 = private unnamed_addr constant [2 x i8] c".\00" -@.str.954 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.955 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.956 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.957 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.958 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.959 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.960 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.961 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.962 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.963 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.964 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.966 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.968 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.969 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.970 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.971 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.972 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.973 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.974 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.975 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.976 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.977 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.807 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.808 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.809 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.810 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.811 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" +@.str.812 = private unnamed_addr constant [6 x i8] c"field\00" +@.str.813 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.814 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" +@.str.815 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.816 = private unnamed_addr constant [13 x i8] c"a field name\00" +@.str.817 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.818 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.819 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.820 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.821 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" +@.str.822 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.823 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" +@.str.824 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.825 = private unnamed_addr constant [16 x i8] c"a function name\00" +@.str.826 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.827 = private unnamed_addr constant [2 x i8] c".\00" +@.str.828 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.829 = private unnamed_addr constant [14 x i8] c"a method name\00" +@.str.830 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.831 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.832 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.833 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.834 = private unnamed_addr constant [2 x i8] c")\00" +@.str.835 = private unnamed_addr constant [6 x i8] c"param\00" +@.str.836 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.837 = private unnamed_addr constant [17 x i8] c"a parameter name\00" +@.str.838 = private unnamed_addr constant [2 x i8] c",\00" +@.str.839 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.840 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.841 = private unnamed_addr constant [2 x i8] c")\00" +@.str.842 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.843 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.844 = private unnamed_addr constant [3 x i8] c"->\00" +@.str.845 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.846 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.847 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.848 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.849 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" +@.str.850 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.851 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.852 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.853 = private unnamed_addr constant [4 x i8] c"'{'\00" +@.str.854 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.855 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.856 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.857 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.858 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.859 = private unnamed_addr constant [4 x i8] c"eof\00" +@.str.860 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" +@.str.861 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.862 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.863 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.864 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.865 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.866 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.867 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.868 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.869 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" +@.str.870 = private unnamed_addr constant [2 x i8] c",\00" +@.str.871 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.872 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" +@.str.873 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.874 = private unnamed_addr constant [5 x i8] c"'in'\00" +@.str.875 = private unnamed_addr constant [3 x i8] c"..\00" +@.str.876 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" +@.str.877 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.878 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.879 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.880 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.881 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.882 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.883 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.884 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.885 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.886 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.887 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.888 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" +@.str.889 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.890 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.891 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.892 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.893 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.894 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" +@.str.895 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.896 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.897 = private unnamed_addr constant [16 x i8] c"a variable name\00" +@.str.898 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.899 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.900 = private unnamed_addr constant [3 x i8] c":=\00" +@.str.901 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.902 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.903 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str.904 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str.905 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str.906 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str.907 = private unnamed_addr constant [3 x i8] c"%=\00" +@.str.908 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.909 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.910 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.911 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" +@.str.912 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.913 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.914 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.915 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.916 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.917 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.918 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.919 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" +@.str.920 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.921 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.922 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" +@.str.923 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.924 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.925 = private unnamed_addr constant [5 x i8] c"'if'\00" +@.str.926 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.927 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.928 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.929 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.930 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.931 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.932 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.933 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.934 = private unnamed_addr constant [2 x i8] c">\00" +@.str.935 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.936 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.937 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.938 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.939 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.940 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.941 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.942 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.943 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.944 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.945 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.946 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.948 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.949 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.950 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.951 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.952 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.953 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.954 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.955 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.956 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.957 = private unnamed_addr constant [4 x i8] c"'('\00" +@.str.958 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.959 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.960 = private unnamed_addr constant [2 x i8] c")\00" +@.str.961 = private unnamed_addr constant [2 x i8] c")\00" +@.str.962 = private unnamed_addr constant [1 x i8] c"\00" +@.str.963 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.964 = private unnamed_addr constant [2 x i8] c":\00" +@.str.965 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.966 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" +@.str.967 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.968 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" +@.str.969 = private unnamed_addr constant [2 x i8] c",\00" +@.str.970 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.971 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.972 = private unnamed_addr constant [2 x i8] c")\00" +@.str.973 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.974 = private unnamed_addr constant [2 x i8] c".\00" +@.str.975 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.976 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.977 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" @.str.978 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.979 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.980 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.981 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.982 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.983 = private unnamed_addr constant [2 x i8] c")\00" -@.str.984 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.985 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.986 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.987 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.988 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.989 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.990 = private unnamed_addr constant [2 x i8] c":\00" -@.str.991 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.992 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.993 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.994 = private unnamed_addr constant [2 x i8] c":\00" -@.str.995 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.996 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.997 = private unnamed_addr constant [2 x i8] c":\00" -@.str.998 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.999 = private unnamed_addr constant [2 x i8] c",\00" +@.str.979 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.980 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.981 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.982 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.983 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.984 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.985 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.986 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.987 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.988 = private unnamed_addr constant [1 x i8] c"\00" +@.str.989 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.990 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.991 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.992 = private unnamed_addr constant [7 x i8] c"string\00" +@.str.993 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.994 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.995 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.996 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.997 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.998 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.999 = private unnamed_addr constant [2 x i8] c"(\00" @.str.1000 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" @.str.1001 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1002 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1003 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1004 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1005 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1006 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1007 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1008 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1009 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1010 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1011 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1012 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1013 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1002 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1003 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1004 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1005 = private unnamed_addr constant [4 x i8] c"')'\00" +@.str.1006 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.1007 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1008 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1009 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1010 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1011 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1012 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1013 = private unnamed_addr constant [4 x i8] c"map\00" @.str.1014 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1015 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1016 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1017 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1018 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1019 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1020 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1021 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1023 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1025 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1026 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1027 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1029 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1031 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1032 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1034 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1036 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.1037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1038 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1039 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1040 = private unnamed_addr constant [9 x i8] c", !dbg !\00" -@.str.1041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1042 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1043 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1045 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1046 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1048 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1015 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1016 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1017 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1018 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1019 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" +@.str.1020 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1021 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1022 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" +@.str.1023 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1024 = private unnamed_addr constant [4 x i8] c"']'\00" +@.str.1025 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1026 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1027 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1028 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" +@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1030 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.1031 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" +@.str.1032 = private unnamed_addr constant [6 x i8] c"ident\00" +@.str.1033 = private unnamed_addr constant [6 x i8] c"targs\00" +@.str.1034 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1035 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1036 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" +@.str.1037 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1038 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1039 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.1040 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.1041 = private unnamed_addr constant [12 x i8] c"unexpected \00" +@.str.1042 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" +@.str.1043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1044 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1045 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.1046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1047 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1048 = private unnamed_addr constant [3 x i8] c"\5Cn\00" @.str.1049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1050 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1052 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1054 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1059 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1060 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1062 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1063 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1064 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1065 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1067 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1069 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1070 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1072 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1074 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1075 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1076 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1077 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1078 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1079 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1080 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1081 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1082 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1083 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1084 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1085 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1086 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1087 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1092 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1093 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1094 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1095 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1096 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1097 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1098 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1099 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1101 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1102 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1050 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1051 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1053 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1055 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1056 = private unnamed_addr constant [4 x i8] c"@R\09\00" +@.str.1057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1058 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1060 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1061 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1062 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1063 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1064 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1065 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1066 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1068 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1070 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1071 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1072 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1073 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1074 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1075 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1076 = private unnamed_addr constant [6 x i8] c" -> !\00" +@.str.1077 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1078 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.1079 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1080 = private unnamed_addr constant [5 x i8] c" -> \00" +@.str.1081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1082 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1083 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.1084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1085 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1088 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.1089 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.1090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1091 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1094 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1095 = private unnamed_addr constant [4 x i8] c"@I\09\00" +@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1097 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1099 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1103 = private unnamed_addr constant [2 x i8] c" \00" @.str.1104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1105 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1107 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1110 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1106 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1107 = private unnamed_addr constant [4 x i8] c"@F\09\00" +@.str.1108 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1109 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1110 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1113 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1115 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1118 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1112 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1114 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1115 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1116 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1117 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1118 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1119 = private unnamed_addr constant [2 x i8] c"|\00" @.str.1120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1121 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1121 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1123 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1135 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1137 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1138 = private unnamed_addr constant [64 x i8] c"a map key must be a whole number, a char, a bool or a str, not \00" -@.str.1139 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1140 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1141 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1142 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1143 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1127 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1128 = private unnamed_addr constant [4 x i8] c"@F\09\00" +@.str.1129 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1130 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1131 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1133 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1135 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1136 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1137 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1138 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1139 = private unnamed_addr constant [4 x i8] c"fn \00" +@.str.1140 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1141 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1142 = private unnamed_addr constant [7 x i8] c"](...)\00" +@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1145 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1145 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1147 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.1147 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1149 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1151 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1153 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1151 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1152 = private unnamed_addr constant [4 x i8] c"@S\09\00" +@.str.1153 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1154 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1157 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1158 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1159 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1160 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1161 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1162 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1163 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1164 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1167 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1168 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1169 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1170 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1171 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1173 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1174 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1175 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1176 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1177 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1156 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1158 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1159 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1161 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1162 = private unnamed_addr constant [5 x i8] c"@SF\09\00" +@.str.1163 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1169 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1171 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1173 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1174 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1176 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1177 = private unnamed_addr constant [4 x i8] c"@E\09\00" @.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1179 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1180 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1186 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1189 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1190 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1192 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1193 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1194 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1195 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1196 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1197 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1198 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1199 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1200 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1201 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1202 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1203 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1204 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1205 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1209 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1210 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1212 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1213 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1214 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1215 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1216 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1218 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1219 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1220 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1221 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1222 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1223 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1225 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1228 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1229 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1230 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1231 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1232 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1233 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1234 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1235 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1236 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1237 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1238 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1239 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1240 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1181 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1184 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1186 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1187 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1188 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1190 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1192 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1194 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1195 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1196 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1197 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1198 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1200 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1202 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1203 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1204 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.1205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1206 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.1207 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1208 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1209 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1211 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1213 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1215 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1216 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1217 = private unnamed_addr constant [9 x i8] c", !dbg !\00" +@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1219 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1220 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1222 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1223 = private unnamed_addr constant [3 x i8] c"%t\00" +@.str.1224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1225 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1227 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1229 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" +@.str.1230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1231 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1234 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1236 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1237 = private unnamed_addr constant [11 x i8] c"br label %\00" +@.str.1238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1239 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1240 = private unnamed_addr constant [7 x i8] c"br i1 \00" +@.str.1241 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1242 = private unnamed_addr constant [10 x i8] c", label %\00" @.str.1243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1244 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1245 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1247 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1248 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1250 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1252 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1253 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1254 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1255 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1256 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1257 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1258 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1262 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1263 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1266 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.1269 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1270 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1271 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1272 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1273 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1274 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1275 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1276 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1277 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1278 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1244 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1246 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1247 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1249 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1251 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1252 = private unnamed_addr constant [3 x i8] c" \00" +@.str.1253 = private unnamed_addr constant [11 x i8] c" = alloca \00" +@.str.1254 = private unnamed_addr constant [11 x i8] c", align 16\00" +@.str.1255 = private unnamed_addr constant [9 x i8] c" = load \00" +@.str.1256 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1257 = private unnamed_addr constant [7 x i8] c"store \00" +@.str.1258 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1259 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1260 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.1261 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1262 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1263 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1264 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1265 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1266 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1267 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1268 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1269 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1270 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1271 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1272 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1273 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1274 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1275 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1276 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1277 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1278 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1279 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1282 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1283 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1285 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1286 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1288 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1289 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1290 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1291 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1292 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1282 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1284 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1287 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1290 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1292 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.1293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1294 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1296 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1297 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1298 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1299 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1300 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1301 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1294 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1295 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1298 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1300 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1303 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1303 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.1304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1305 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1305 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.1306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1307 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1307 = private unnamed_addr constant [6 x i8] c"array\00" @.str.1308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1309 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1309 = private unnamed_addr constant [4 x i8] c"map\00" @.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1311 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1312 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1313 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1314 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1315 = private unnamed_addr constant [64 x i8] c"a map key must be a whole number, a char, a bool or a str, not \00" @.str.1316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1317 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1325 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1326 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1317 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1318 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" +@.str.1319 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1320 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1322 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1324 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1326 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.1327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1328 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1329 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1330 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1328 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.1329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1330 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1333 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1334 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1336 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1338 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1334 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1335 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1336 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1337 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1338 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1339 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" +@.str.1340 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1341 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1342 = private unnamed_addr constant [2 x i8] c"C\00" @.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1347 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1348 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1349 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1350 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1351 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1352 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1353 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1354 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1344 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1345 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1346 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" +@.str.1347 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1348 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1349 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1350 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1351 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1352 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" +@.str.1353 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1354 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.1355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1356 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1357 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1358 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1356 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1357 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1359 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1360 = private unnamed_addr constant [1 x i8] c"\00" @.str.1361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1362 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1364 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1365 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1366 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1367 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1368 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1369 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1370 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1371 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1373 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1375 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1377 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1378 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1380 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1381 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1382 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1383 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1384 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1386 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1387 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1388 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1389 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1390 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1392 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1393 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1394 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1397 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1399 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1401 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1402 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1403 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1406 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1408 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1409 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1410 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1412 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1413 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1414 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1415 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1362 = private unnamed_addr constant [2 x i8] c",\00" +@.str.1363 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1365 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1366 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1367 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.1368 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1369 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1370 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1371 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.1372 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1373 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.1374 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1375 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1376 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1377 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1378 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1379 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1380 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" +@.str.1381 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.1382 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1383 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.1384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1385 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1386 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1387 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1388 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1389 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1390 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1391 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1392 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1393 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" +@.str.1395 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1396 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.1397 = private unnamed_addr constant [7 x i8] c"{ i1, \00" +@.str.1398 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" +@.str.1399 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1400 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1401 = private unnamed_addr constant [2 x i8] c":\00" +@.str.1402 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1403 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1404 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1406 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1407 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.1408 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1409 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1410 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1411 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1412 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.1413 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.1414 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1415 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1417 = private unnamed_addr constant [7 x i8] c"struct\00" @.str.1418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1419 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1421 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1422 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1421 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1422 = private unnamed_addr constant [5 x i8] c"arr_\00" @.str.1423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1424 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1425 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" +@.str.1424 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1425 = private unnamed_addr constant [5 x i8] c"map_\00" @.str.1426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1427 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1428 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1431 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1432 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1433 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1435 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1436 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1437 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1438 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1439 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1440 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1441 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1442 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1443 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1444 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1445 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1448 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1449 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1450 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1452 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1453 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1455 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1456 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1457 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1458 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1460 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1461 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1463 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1464 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1465 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1466 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1467 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1468 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1469 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1470 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1471 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1472 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1473 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1474 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1475 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1476 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1477 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1478 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1479 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1480 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1481 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1482 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1483 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1484 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1485 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1486 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1487 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1488 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1489 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1490 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1491 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1492 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1493 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1494 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1496 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1497 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1498 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1499 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1500 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1501 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1502 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1503 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1504 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1505 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1506 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1507 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1508 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1509 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1511 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1516 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1517 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1518 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1519 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1520 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1521 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1522 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1523 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1524 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1525 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1526 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1527 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1528 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1529 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1530 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1531 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1532 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1533 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1534 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1535 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1536 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1537 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1538 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1539 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1541 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1542 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1543 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1544 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1548 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1549 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1551 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1552 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1553 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1554 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1555 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1556 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1557 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1558 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1559 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1561 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1562 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1563 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1564 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1565 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1566 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1568 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1569 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1570 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1571 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1427 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1429 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1430 = private unnamed_addr constant [3 x i8] c"E_\00" +@.str.1431 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1432 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1433 = private unnamed_addr constant [3 x i8] c"S_\00" +@.str.1434 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.1435 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" +@.str.1436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1439 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1440 = private unnamed_addr constant [7 x i8] c"@.str.\00" +@.str.1441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1442 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" +@.str.1443 = private unnamed_addr constant [2 x i8] c"\5C\00" +@.str.1444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1445 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.1446 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" +@.str.1447 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str.1448 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1449 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" +@.str.1450 = private unnamed_addr constant [7 x i8] c"{ ptr \00" +@.str.1451 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1452 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" +@.str.1453 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1454 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str.1455 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str.1456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1457 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1459 = private unnamed_addr constant [28 x i8] c"call void @finch_panic(ptr \00" +@.str.1460 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1461 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1462 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1463 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1465 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1466 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.1467 = private unnamed_addr constant [8 x i8] c"inrange\00" +@.str.1468 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" +@.str.1469 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1471 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1473 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" +@.str.1474 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1475 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1476 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1477 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1478 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.1479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1480 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1482 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1484 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1486 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1488 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1490 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1492 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1494 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1496 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1498 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1500 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1502 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.1503 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.1504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1505 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1506 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1507 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1509 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1510 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.1511 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.1512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1513 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.1514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1515 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1517 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.1518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1519 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1521 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.1522 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1523 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1524 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1525 = private unnamed_addr constant [7 x i8] c"n.cond\00" +@.str.1526 = private unnamed_addr constant [7 x i8] c"n.body\00" +@.str.1527 = private unnamed_addr constant [6 x i8] c"n.end\00" +@.str.1528 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1529 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.1530 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1531 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1533 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1534 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.1535 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1539 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1540 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.1541 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1542 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1543 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1544 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1545 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.1546 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1547 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1548 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1549 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1550 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" +@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1552 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1554 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1555 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.1556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1557 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1558 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1559 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1560 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1561 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1562 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1563 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1564 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" +@.str.1565 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1566 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1567 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1569 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1570 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1571 = private unnamed_addr constant [7 x i8] c", i64 \00" @.str.1572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1573 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1576 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1577 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1578 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1579 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1580 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1582 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1584 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1585 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1586 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1587 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1588 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1590 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1592 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1573 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1574 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" +@.str.1575 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1577 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1578 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1579 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1580 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" +@.str.1581 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1583 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1585 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1586 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1587 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1588 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1589 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1590 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1591 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.1592 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1595 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1596 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1597 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1598 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1599 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1600 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1601 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1602 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1603 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1604 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1605 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1606 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1607 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1608 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1609 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1610 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1611 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1613 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1614 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1615 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1617 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1618 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1619 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1620 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1621 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1622 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1623 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1624 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1625 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1628 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1629 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1630 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1634 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1639 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1640 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1641 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1642 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1645 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1646 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1648 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1651 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1652 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1653 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1654 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1655 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1656 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1657 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1658 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1659 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1660 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1661 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1662 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1663 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1664 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1665 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1666 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1667 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1668 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1669 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1670 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1671 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1672 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1673 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1674 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1675 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1676 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1677 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1678 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1679 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1680 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1681 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1682 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.1683 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.1684 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1685 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.1686 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1687 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1688 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1689 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1690 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.1691 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.1692 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.1693 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.1694 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" +@.str.1594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1596 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1598 = private unnamed_addr constant [5 x i8] c"%src\00" +@.str.1599 = private unnamed_addr constant [5 x i8] c"%dst\00" +@.str.1600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1601 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1602 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" +@.str.1603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1604 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1605 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" +@.str.1606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1608 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1609 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1610 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" +@.str.1611 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1612 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1613 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" +@.str.1614 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1615 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1616 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1617 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1618 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1619 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1620 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1621 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1622 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1623 = private unnamed_addr constant [5 x i8] c"%lld\00" +@.str.1624 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1625 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1626 = private unnamed_addr constant [5 x i8] c"%llu\00" +@.str.1627 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1628 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1629 = private unnamed_addr constant [3 x i8] c"%g\00" +@.str.1630 = private unnamed_addr constant [8 x i8] c"double \00" +@.str.1631 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1632 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1633 = private unnamed_addr constant [9 x i8] c"sext i8 \00" +@.str.1634 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1635 = private unnamed_addr constant [5 x i8] c"'%c'\00" +@.str.1636 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1637 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.1638 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1639 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1640 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1641 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1642 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str.1643 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1644 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1645 = private unnamed_addr constant [3 x i8] c"%s\00" +@.str.1646 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.1647 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1648 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.1649 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.1650 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.1651 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1652 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" +@.str.1653 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1654 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1655 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.1656 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1657 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1658 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1659 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.1660 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.1661 = private unnamed_addr constant [9 x i8] c"ptr.null\00" +@.str.1662 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" +@.str.1663 = private unnamed_addr constant [9 x i8] c"ptr.done\00" +@.str.1664 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1665 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1666 = private unnamed_addr constant [7 x i8] c"0x%llx\00" +@.str.1667 = private unnamed_addr constant [5 x i8] c"i64 \00" +@.str.1668 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.1669 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1670 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1671 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1672 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.1675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.1676 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" +@.str.1677 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1678 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" +@.str.1679 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1680 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1681 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1682 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.1683 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.1684 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" +@.str.1685 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1686 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1687 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1688 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" +@.str.1689 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.1690 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1691 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1692 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" +@.str.1693 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.1694 = private unnamed_addr constant [6 x i8] c"float\00" @.str.1695 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1696 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1697 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1698 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1699 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.1700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1701 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1703 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1705 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1708 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1712 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.1713 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1714 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1716 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1718 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.1719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1720 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1696 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1697 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" +@.str.1698 = private unnamed_addr constant [6 x i8] c", i8 \00" +@.str.1699 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1700 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1701 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1702 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" +@.str.1703 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1704 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.1705 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.1706 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1707 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1708 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" +@.str.1709 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1710 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.1711 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1712 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1713 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1714 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" +@.str.1715 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1716 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1717 = private unnamed_addr constant [11 x i8] c"call void \00" +@.str.1718 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.1719 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1720 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1721 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" @.str.1722 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1724 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1725 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1726 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1723 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1724 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1725 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.1726 = private unnamed_addr constant [6 x i8] c"array\00" @.str.1727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1729 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1732 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1735 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1736 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1737 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1740 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1742 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1743 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1728 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1729 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1730 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1731 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" +@.str.1732 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1733 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.1734 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1735 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1736 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.1737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1738 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1739 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1740 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1741 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1742 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.1743 = private unnamed_addr constant [7 x i8] c", i64 \00" @.str.1744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1745 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.1746 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.1747 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1749 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1750 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1751 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1752 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.1753 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.1754 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.1755 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.1757 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.1758 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.1759 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.1760 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1761 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.1762 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1763 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1764 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1765 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1766 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1767 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1768 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1769 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1770 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1771 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.1772 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.1773 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.1774 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.1775 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.1776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1777 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1778 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1779 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.1780 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1781 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.1782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1783 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1785 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1788 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.1745 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1746 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1747 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.1748 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.1749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1750 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1752 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1753 = private unnamed_addr constant [3 x i8] c"%a\00" +@.str.1754 = private unnamed_addr constant [11 x i8] c"enum.other\00" +@.str.1755 = private unnamed_addr constant [10 x i8] c"enum.done\00" +@.str.1756 = private unnamed_addr constant [7 x i8] c"enum.v\00" +@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str.1758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1759 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1761 = private unnamed_addr constant [12 x i8] c"switch i32 \00" +@.str.1762 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str.1763 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.1764 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1765 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.1766 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1767 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.1768 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1769 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1771 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1772 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1773 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" +@.str.1774 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str.1775 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str.1776 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1777 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1779 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.1780 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1781 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1782 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.1783 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1784 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.1785 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1786 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1787 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" +@.str.1788 = private unnamed_addr constant [3 x i8] c"%a\00" @.str.1789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1790 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.1791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1792 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1794 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1796 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.1799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1801 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.1802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1803 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1790 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.1791 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.1792 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.1793 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1794 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.1795 = private unnamed_addr constant [4 x i8] c"sep\00" +@.str.1796 = private unnamed_addr constant [5 x i8] c"item\00" +@.str.1797 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1798 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1799 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1800 = private unnamed_addr constant [3 x i8] c"i1\00" +@.str.1801 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.1802 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1805 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.1806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1808 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1805 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1806 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1807 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1808 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1810 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.1811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1810 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1811 = private unnamed_addr constant [2 x i8] c"}\00" @.str.1812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1813 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.1813 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.1814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1815 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.1816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1817 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.1818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1819 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1815 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1816 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.1817 = private unnamed_addr constant [3 x i8] c", \00" +@.str.1818 = private unnamed_addr constant [1 x i8] c"\00" +@.str.1819 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1821 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1823 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1821 = private unnamed_addr constant [3 x i8] c": \00" +@.str.1822 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.1823 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" @.str.1824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1825 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1825 = private unnamed_addr constant [5 x i8] c"%buf\00" @.str.1826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1827 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1828 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1829 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1830 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1832 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.1834 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.1835 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.1836 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.1837 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.1838 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.1839 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.1840 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.1841 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.1842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1843 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1845 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.1846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1848 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.1849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1856 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1858 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1861 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1865 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1867 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1869 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.1870 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1874 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1876 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1828 = private unnamed_addr constant [5 x i8] c"%buf\00" +@.str.1829 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1830 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.1831 = private unnamed_addr constant [22 x i8] c"define internal void \00" +@.str.1832 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" +@.str.1833 = private unnamed_addr constant [7 x i8] c"trunc \00" +@.str.1834 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1835 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1836 = private unnamed_addr constant [6 x i8] c"sext \00" +@.str.1837 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1838 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1839 = private unnamed_addr constant [6 x i8] c"zext \00" +@.str.1840 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1841 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1842 = private unnamed_addr constant [7 x i8] c"fpext \00" +@.str.1843 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1844 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1845 = private unnamed_addr constant [9 x i8] c"fptrunc \00" +@.str.1846 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1847 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1848 = private unnamed_addr constant [8 x i8] c"sitofp \00" +@.str.1849 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1850 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1851 = private unnamed_addr constant [8 x i8] c"uitofp \00" +@.str.1852 = private unnamed_addr constant [2 x i8] c" \00" +@.str.1853 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.1854 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1855 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1856 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.1857 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1858 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1859 = private unnamed_addr constant [12 x i8] c"the number \00" +@.str.1860 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" +@.str.1861 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1862 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.1863 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1864 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1865 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1866 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1867 = private unnamed_addr constant [10 x i8] c" must be \00" +@.str.1868 = private unnamed_addr constant [15 x i8] c", but this is \00" +@.str.1869 = private unnamed_addr constant [7 x i8] c" (use \00" +@.str.1870 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" +@.str.1871 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" +@.str.1872 = private unnamed_addr constant [2 x i8] c")\00" +@.str.1873 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1874 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1875 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1876 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" @.str.1877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1878 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1878 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.1879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1880 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1880 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.1881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1882 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1882 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.1883 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1884 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1885 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1885 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.1886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1887 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1890 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1889 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1891 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.1892 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1894 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1896 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1897 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1898 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.1894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1895 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.1896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1897 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1900 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1902 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.1903 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.1904 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.1905 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.1906 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.1907 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" +@.str.1900 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1901 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1902 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1903 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1904 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1906 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1909 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.1909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.1912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1913 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1914 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.1911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1912 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1914 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.1915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1916 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1917 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.1918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1919 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1921 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1923 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1926 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1928 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1931 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1935 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1936 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.1937 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.1938 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1939 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1941 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.1942 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1946 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1947 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1948 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.1952 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1953 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.1954 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1955 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1956 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1957 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1958 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1959 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.1960 = private unnamed_addr constant [77 x i8] c"' here (a method goes in the same file as its struct, or on a struct from C)\00" -@.str.1961 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.1962 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1963 = private unnamed_addr constant [18 x i8] c" is defined twice\00" +@.str.1919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1920 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1922 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.1923 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.1924 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.1925 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.1926 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.1927 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.1928 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.1929 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.1930 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.1931 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.1932 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.1933 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.1934 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.1935 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.1936 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.1937 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.1938 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.1939 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.1940 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.1941 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.1942 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.1943 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.1944 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.1945 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.1946 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.1947 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.1948 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.1949 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.1950 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.1951 = private unnamed_addr constant [19 x i8] c"a variable named '\00" +@.str.1952 = private unnamed_addr constant [22 x i8] c"' already exists here\00" +@.str.1953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1954 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.1955 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1956 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" +@.str.1957 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.1958 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" +@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1960 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1962 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.1963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.1964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1965 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.1965 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" @.str.1966 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1967 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.1968 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.1969 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1971 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1972 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.1973 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1975 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" +@.str.1967 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1970 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1972 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.1973 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.1974 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1975 = private unnamed_addr constant [2 x i8] c"$\00" @.str.1976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1977 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1978 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.1979 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1980 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1981 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1982 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.1977 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.1978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1979 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.1980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1981 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1982 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.1983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1984 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1985 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1986 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1988 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.1984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1985 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.1986 = private unnamed_addr constant [4 x i8] c"@V\09\00" +@.str.1987 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1988 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1990 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.1991 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.1992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1990 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.1991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.1992 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1993 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1994 = private unnamed_addr constant [2 x i8] c"\09\00" @.str.1995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1996 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1996 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" @.str.1997 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1998 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2000 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2003 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.1998 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.1999 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.2000 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.2001 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2002 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.2003 = private unnamed_addr constant [1 x i8] c"\00" @.str.2004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2006 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2008 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2005 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2007 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2008 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2009 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" @.str.2010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2011 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2012 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2011 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2015 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2014 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.2015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2016 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" @.str.2017 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2018 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2018 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" @.str.2019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2020 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2021 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2021 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" @.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2023 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" @.str.2024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2026 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2026 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" @.str.2027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2028 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2028 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" @.str.2029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2030 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2031 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2030 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" +@.str.2031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2032 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2034 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" @.str.2035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2037 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2038 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2036 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2038 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2042 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2044 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2055 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2040 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.2041 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.2042 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.2043 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2045 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2046 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.2047 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.2048 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.2049 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.2050 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.2051 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.2052 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.2053 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.2054 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2056 = private unnamed_addr constant [7 x i8] c"method\00" @.str.2057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2058 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2058 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" @.str.2059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2060 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.2061 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.2062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2064 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2066 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2069 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2069 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2071 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2071 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2073 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2074 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2075 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2076 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2077 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2079 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2081 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2082 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2083 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2085 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2086 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2087 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.2073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2074 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2076 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2078 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2080 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2081 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2082 = private unnamed_addr constant [13 x i8] c"the struct '\00" +@.str.2083 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2085 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2087 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2089 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2091 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2092 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2094 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2096 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2097 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2091 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2093 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2095 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2098 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2100 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2102 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2103 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2104 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2105 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2106 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2107 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2103 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2107 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2111 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2109 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2110 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2111 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" @.str.2112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2113 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2115 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2117 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2119 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2122 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2123 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2125 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2115 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.2116 = private unnamed_addr constant [18 x i8] c" has the variant \00" +@.str.2117 = private unnamed_addr constant [7 x i8] c" twice\00" +@.str.2118 = private unnamed_addr constant [17 x i8] c"two variants of \00" +@.str.2119 = private unnamed_addr constant [18 x i8] c" have the number \00" +@.str.2120 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" +@.str.2121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2122 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.2123 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2124 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2126 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2127 = private unnamed_addr constant [2 x i8] c"C\00" @.str.2128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2129 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.2130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2132 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2134 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2134 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2136 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2136 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2138 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2139 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2140 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2142 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2143 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2145 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2139 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2141 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2144 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2148 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2151 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2153 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2154 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2155 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2148 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2149 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2150 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2152 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2153 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2154 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2155 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" @.str.2156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2159 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2157 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2159 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2161 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2165 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2167 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2163 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2164 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2165 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2166 = private unnamed_addr constant [18 x i8] c" is defined twice\00" +@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2168 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2169 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2170 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2171 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.2172 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" +@.str.2173 = private unnamed_addr constant [77 x i8] c"' here (a method goes in the same file as its struct, or on a struct from C)\00" +@.str.2174 = private unnamed_addr constant [12 x i8] c"the method \00" +@.str.2175 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2176 = private unnamed_addr constant [18 x i8] c" is defined twice\00" @.str.2177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2178 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2179 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2180 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2181 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2182 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2183 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2186 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2188 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2189 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2190 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2178 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2180 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2181 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" +@.str.2182 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2184 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2185 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2186 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" +@.str.2187 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2188 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" +@.str.2189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2190 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2191 = private unnamed_addr constant [8 x i8] c"@finch.\00" @.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2196 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2197 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2193 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2194 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2195 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2197 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2198 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2199 = private unnamed_addr constant [2 x i8] c".\00" @.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2201 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2202 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2204 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2203 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" +@.str.2204 = private unnamed_addr constant [25 x i8] c" the method is called on\00" @.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2208 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2210 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2212 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2209 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2211 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2213 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2215 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2216 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2216 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2218 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2219 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2220 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2222 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2219 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2221 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2223 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2225 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2225 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2228 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2228 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2230 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2231 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2231 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2232 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2233 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2234 = private unnamed_addr constant [7 x i8] c" x i8]\00" +@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2234 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" @.str.2235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2236 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2236 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2238 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2240 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2239 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2241 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2243 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2244 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" @.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2247 = private unnamed_addr constant [5 x i8] c"self\00" @.str.2248 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2249 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2250 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2253 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2254 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2255 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2256 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2253 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" +@.str.2254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2255 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2257 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2259 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2263 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2265 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2267 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2269 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2268 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2269 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2271 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2271 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2273 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2275 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2276 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2275 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2278 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2278 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2281 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2282 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2282 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2284 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2284 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2288 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2290 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2286 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2287 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2288 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" +@.str.2289 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" +@.str.2290 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" @.str.2291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2292 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2292 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" @.str.2293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2294 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2298 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2294 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2295 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" +@.str.2296 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2297 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2298 = private unnamed_addr constant [12 x i8] c"], but got \00" +@.str.2299 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2300 = private unnamed_addr constant [2 x i8] c"]\00" @.str.2301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2302 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2309 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2310 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2311 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2304 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2305 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2307 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2309 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2310 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2312 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2316 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2322 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2315 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2316 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2317 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2318 = private unnamed_addr constant [8 x i8] c"@finch.\00" +@.str.2319 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2320 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2322 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2324 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2324 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" @.str.2325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2327 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2326 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2328 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2330 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2330 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2336 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2332 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2333 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2334 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2335 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2336 = private unnamed_addr constant [2 x i8] c")\00" @.str.2337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2339 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2338 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2340 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2341 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2344 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2345 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.2344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2345 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2346 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2347 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2347 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" @.str.2348 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2349 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2351 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2351 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2353 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2354 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2355 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2357 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2359 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2360 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2353 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2355 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2356 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2358 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2361 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" @.str.2362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2363 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2365 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2366 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2367 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2368 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2369 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2370 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2371 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2372 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2373 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2374 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2375 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2377 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2379 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2381 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2364 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" +@.str.2365 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2366 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2367 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2368 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2371 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2372 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2377 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.2378 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2380 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2381 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2383 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2385 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2386 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2387 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2388 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2389 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2390 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2391 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2392 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2393 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2394 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2395 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2397 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2383 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2385 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" +@.str.2386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2388 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2391 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str.2392 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" +@.str.2393 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2394 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2395 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2396 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2398 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2399 = private unnamed_addr constant [5 x i8] c"null\00" @.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2401 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2401 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" +@.str.2402 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2403 = private unnamed_addr constant [6 x i8] c" from\00" +@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2406 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2407 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2408 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2409 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2411 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2412 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2413 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2414 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2415 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2416 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2417 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2418 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2419 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2420 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2421 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2422 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2423 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2406 = private unnamed_addr constant [17 x i8] c"can't tell what \00" +@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2408 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" +@.str.2409 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.2410 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2412 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.2413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2417 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.2418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2419 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.2420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2421 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2423 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" @.str.2424 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2425 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.2425 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" +@.str.2427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2429 = private unnamed_addr constant [11 x i8] c"\22, value: \00" +@.str.2429 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2431 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2432 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2433 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2434 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2435 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2436 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2437 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2439 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2440 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2443 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2446 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2447 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.2431 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2432 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2433 = private unnamed_addr constant [7 x i8] c" x i8]\00" +@.str.2434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2435 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2438 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2441 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2444 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2446 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.2447 = private unnamed_addr constant [7 x i8] c" x i8]\00" @.str.2448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2450 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2451 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" +@.str.2449 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2451 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" @.str.2452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2453 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2454 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2455 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2457 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2453 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2459 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2460 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2461 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2462 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2459 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2462 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2464 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2465 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2466 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2467 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2468 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2469 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2470 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2471 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2472 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2473 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2474 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2475 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2465 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2466 = private unnamed_addr constant [6 x i8] c"%S.C.\00" +@.str.2467 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2468 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2469 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2471 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2474 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2477 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2477 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2479 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2480 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2481 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2482 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2483 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2484 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2485 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2486 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2487 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2488 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2489 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2480 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2482 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2484 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2486 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2489 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" @.str.2490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2491 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2492 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2493 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2494 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2495 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2491 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2494 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2495 = private unnamed_addr constant [18 x i8] c" (while building \00" @.str.2496 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2497 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2497 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2499 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2499 = private unnamed_addr constant [2 x i8] c")\00" @.str.2500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2501 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2501 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2503 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2505 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" @.str.2506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2509 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2510 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2511 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2512 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2513 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2507 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2509 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2511 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2515 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2515 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2517 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2518 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2520 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2524 = private unnamed_addr constant [3 x i8] c"L:\00" +@.str.2517 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2519 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2521 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.2522 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" +@.str.2523 = private unnamed_addr constant [8 x i8] c"] or []\00" +@.str.2524 = private unnamed_addr constant [16 x i8] c" for that field\00" @.str.2525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2526 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2527 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2526 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2527 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2530 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2529 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2531 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2536 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" +@.str.2534 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2535 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2537 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2541 = private unnamed_addr constant [11 x i8] c", column: \00" +@.str.2540 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2543 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2544 = private unnamed_addr constant [11 x i8] c", scope: !\00" +@.str.2543 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2546 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2547 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2546 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2549 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2549 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2552 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2552 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" @.str.2553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2554 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2554 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2556 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2557 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2558 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2559 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2560 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" +@.str.2556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2557 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.2558 = private unnamed_addr constant [4 x i8] c"%S.\00" +@.str.2559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2560 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2563 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2564 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2565 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2566 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2567 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2569 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2571 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2572 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2575 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2578 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2579 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2582 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2585 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2586 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2587 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2588 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2562 = private unnamed_addr constant [2 x i8] c".\00" +@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2564 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2566 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str.2567 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2568 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.2569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2570 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2572 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2573 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2574 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2576 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.2577 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2578 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2579 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.2580 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.2581 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.2582 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.2583 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.2584 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.2585 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2586 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2587 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2588 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2589 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2590 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2593 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2594 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2595 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2596 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2597 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2600 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2601 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2606 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2608 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2615 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2592 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2594 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2596 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" +@.str.2597 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2598 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2599 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2600 = private unnamed_addr constant [13 x i8] c", baseType: \00" +@.str.2601 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2602 = private unnamed_addr constant [11 x i8] c", offset: \00" +@.str.2603 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2604 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2605 = private unnamed_addr constant [10 x i8] c"\22, size: \00" +@.str.2606 = private unnamed_addr constant [13 x i8] c", encoding: \00" +@.str.2607 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2608 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2609 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.2610 = private unnamed_addr constant [3 x i8] c"T:\00" +@.str.2611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2612 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2614 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2617 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2617 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" @.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2620 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2621 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2623 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2624 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2626 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2627 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2628 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2629 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2632 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2636 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2619 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2620 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2621 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" +@.str.2622 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2623 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2624 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" +@.str.2625 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2626 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2627 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2628 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2629 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.2630 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2631 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2632 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.2633 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" +@.str.2634 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" +@.str.2635 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" +@.str.2636 = private unnamed_addr constant [5 x i8] c"enum\00" @.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2638 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2642 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2640 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" +@.str.2641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2642 = private unnamed_addr constant [11 x i8] c"\22, value: \00" @.str.2643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2644 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.2645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2646 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.2647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2648 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2644 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2645 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" +@.str.2646 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2647 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" +@.str.2648 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2649 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2650 = private unnamed_addr constant [1 x i8] c"\00" @.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2654 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2652 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2653 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2655 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2656 = private unnamed_addr constant [12 x i8] c", size: 64)\00" @.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2658 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2660 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2660 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2663 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2664 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.2662 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" +@.str.2663 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2664 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" @.str.2665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2666 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2667 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2668 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2666 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2667 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" +@.str.2668 = private unnamed_addr constant [3 x i8] c"})\00" @.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2671 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.2672 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2674 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2675 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.2670 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2672 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2673 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2674 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.2675 = private unnamed_addr constant [6 x i8] c"array\00" @.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2684 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.2685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2686 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2687 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2688 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2677 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" +@.str.2678 = private unnamed_addr constant [12 x i8] c", size: 64)\00" +@.str.2679 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2680 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.2681 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2682 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2683 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2684 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2685 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" +@.str.2686 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2687 = private unnamed_addr constant [4 x i8] c", !\00" +@.str.2688 = private unnamed_addr constant [3 x i8] c"})\00" @.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2690 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2691 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2692 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.2695 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2700 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2692 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.2693 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2694 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" +@.str.2695 = private unnamed_addr constant [8 x i8] c"entries\00" +@.str.2696 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.2697 = private unnamed_addr constant [5 x i8] c"used\00" +@.str.2698 = private unnamed_addr constant [4 x i8] c"cap\00" +@.str.2699 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.2700 = private unnamed_addr constant [5 x i8] c"icap\00" +@.str.2701 = private unnamed_addr constant [5 x i8] c"adds\00" +@.str.2702 = private unnamed_addr constant [2 x i8] c"!\00" @.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2704 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2705 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2706 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" +@.str.2707 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2708 = private unnamed_addr constant [3 x i8] c"})\00" @.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2710 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" @.str.2711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2716 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2717 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2718 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" +@.str.2712 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2713 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2714 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2716 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2717 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2720 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2723 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.2724 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2725 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2726 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.2727 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.2728 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2729 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.2730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2731 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2721 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" +@.str.2722 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" +@.str.2723 = private unnamed_addr constant [9 x i8] c", size: \00" +@.str.2724 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" +@.str.2725 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2726 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2728 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2730 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" +@.str.2731 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" @.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.2734 = private unnamed_addr constant [17 x i8] c"define internal \00" +@.str.2733 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2736 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2737 = private unnamed_addr constant [2 x i8] c" \00" +@.str.2736 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2737 = private unnamed_addr constant [3 x i8] c"L:\00" @.str.2738 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2739 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2740 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.2741 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2742 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2743 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.2739 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2740 = private unnamed_addr constant [2 x i8] c":\00" +@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2742 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2743 = private unnamed_addr constant [2 x i8] c":\00" @.str.2744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2745 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.2746 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2747 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2745 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2746 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2747 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" @.str.2748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2749 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2751 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str.2749 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" +@.str.2750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2751 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" @.str.2752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2753 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2754 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" +@.str.2753 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2754 = private unnamed_addr constant [11 x i8] c", column: \00" @.str.2755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2756 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2758 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2759 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.2760 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.2761 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.2756 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2757 = private unnamed_addr constant [11 x i8] c", scope: !\00" +@.str.2758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2759 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2760 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2762 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" @.str.2763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2764 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.2765 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2764 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2765 = private unnamed_addr constant [5 x i8] c"null\00" @.str.2766 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2767 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.2768 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.2769 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.2770 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.2771 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.2772 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.2773 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.2767 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.2768 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2769 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" +@.str.2770 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2771 = private unnamed_addr constant [3 x i8] c"})\00" +@.str.2772 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" +@.str.2773 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" @.str.2774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2775 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2776 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.2777 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2778 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2779 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2780 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2775 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" +@.str.2776 = private unnamed_addr constant [10 x i8] c", file: !\00" +@.str.2777 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2778 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2779 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" +@.str.2780 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" @.str.2781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2782 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" @.str.2783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2784 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2784 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2785 = private unnamed_addr constant [1 x i8] c"\00" @.str.2786 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2787 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2788 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.2789 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.2790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2791 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2792 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" +@.str.2787 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2788 = private unnamed_addr constant [8 x i8] c", arg: \00" +@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2790 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2791 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" +@.str.2792 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" @.str.2793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2794 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2795 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" +@.str.2794 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2795 = private unnamed_addr constant [10 x i8] c", file: !\00" @.str.2796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2797 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.2797 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" @.str.2798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2799 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2801 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.2802 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.2803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2804 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2806 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.2807 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2808 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2809 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.2810 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.2811 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2815 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2817 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2799 = private unnamed_addr constant [9 x i8] c", line: \00" +@.str.2800 = private unnamed_addr constant [10 x i8] c", type: !\00" +@.str.2801 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2803 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2805 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2806 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" +@.str.2807 = private unnamed_addr constant [13 x i8] c", metadata !\00" +@.str.2808 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" +@.str.2809 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" +@.str.2810 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" +@.str.2811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2812 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2813 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.2814 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2816 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2818 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2819 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2821 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" @.str.2822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2824 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2825 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.2826 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.2827 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.2828 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.2829 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.2830 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.2831 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2832 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2833 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2834 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.2824 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2826 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2828 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.2829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2830 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2832 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2834 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2836 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2836 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.2837 = private unnamed_addr constant [1 x i8] c"\00" @.str.2838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2839 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2840 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.2843 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.2844 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2839 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" +@.str.2840 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2841 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2842 = private unnamed_addr constant [18 x i8] c" (while building \00" +@.str.2843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2844 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2845 = private unnamed_addr constant [2 x i8] c")\00" @.str.2846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2847 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2847 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" @.str.2848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2850 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2851 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.2852 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.2853 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.2854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2855 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.2849 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.2850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2851 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2853 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2854 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2855 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2856 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2857 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.2857 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" @.str.2858 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2860 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2862 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2859 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.2860 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2861 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" +@.str.2862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2863 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" @.str.2864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2869 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.2870 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.2871 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.2872 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.2873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2876 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.2877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2878 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.2881 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2882 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.2883 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.2884 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.2885 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.2886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2887 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.2888 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2865 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.2866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2867 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2869 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2871 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2873 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" +@.str.2874 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2875 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2877 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" +@.str.2878 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2879 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2880 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2881 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2883 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2884 = private unnamed_addr constant [10 x i8] c"ptr %self\00" +@.str.2885 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.2886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2887 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2888 = private unnamed_addr constant [5 x i8] c"enum\00" @.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.2890 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2892 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2898 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2899 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2900 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.2901 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.2894 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2896 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2897 = private unnamed_addr constant [6 x i8] c"%self\00" +@.str.2898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2899 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.2900 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.2901 = private unnamed_addr constant [6 x i8] c"%self\00" @.str.2902 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2903 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2904 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2907 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2908 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.2909 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2910 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2911 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.2912 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.2913 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.2914 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.2915 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.2916 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.2917 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.2918 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.2919 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.2920 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.2921 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2922 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.2923 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.2924 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.2925 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.2926 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2927 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2930 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2931 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.2932 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2933 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.2905 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2906 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2907 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str.2908 = private unnamed_addr constant [3 x i8] c"%p\00" +@.str.2909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2910 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2913 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2915 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2917 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2920 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2923 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" +@.str.2924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2926 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2928 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2929 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.2930 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str.2931 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" +@.str.2932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2933 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2936 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2937 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2938 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.2939 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.2940 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.2941 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.2942 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2943 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2944 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.2945 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.2946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2947 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.2935 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2936 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2938 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2939 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.2940 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.2941 = private unnamed_addr constant [1 x i8] c"\00" +@.str.2942 = private unnamed_addr constant [8 x i8] c" !dbg !\00" +@.str.2943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2944 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" +@.str.2945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2946 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.2947 = private unnamed_addr constant [17 x i8] c"define internal \00" @.str.2948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2949 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2949 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2950 = private unnamed_addr constant [2 x i8] c" \00" @.str.2951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2952 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.2953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2954 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2955 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2956 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2957 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.2958 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2961 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2962 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2963 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2964 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.2952 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.2953 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.2954 = private unnamed_addr constant [3 x i8] c", \00" +@.str.2955 = private unnamed_addr constant [2 x i8] c")\00" +@.str.2956 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" +@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2958 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" +@.str.2959 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2960 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2961 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2962 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" +@.str.2963 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.2964 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" @.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.2967 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.2968 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2969 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.2966 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.2967 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" +@.str.2968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2969 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" @.str.2970 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2973 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2974 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2975 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.2976 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.2977 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.2978 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.2979 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.2980 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2981 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.2982 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.2983 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2984 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.2985 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2986 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2987 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.2988 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.2989 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.2971 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" +@.str.2972 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.2973 = private unnamed_addr constant [5 x i8] c"decl\00" +@.str.2974 = private unnamed_addr constant [7 x i8] c"assign\00" +@.str.2975 = private unnamed_addr constant [5 x i8] c"expr\00" +@.str.2976 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2977 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2979 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2980 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.2981 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.2982 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.2983 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.2984 = private unnamed_addr constant [5 x i8] c"each\00" +@.str.2985 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.2986 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.2988 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.2989 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" @.str.2990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2991 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.2991 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.2992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2993 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2994 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.2994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.2997 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" @.str.2998 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2999 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3000 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3001 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3002 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3003 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3005 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3006 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.2999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3000 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" +@.str.3001 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3002 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3004 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3005 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" +@.str.3006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3007 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3008 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" @.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3010 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3011 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3013 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3014 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3016 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3012 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3014 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3015 = private unnamed_addr constant [19 x i8] c"unknown statement \00" +@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3017 = private unnamed_addr constant [5 x i8] c"void\00" @.str.3018 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3019 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3020 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3024 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3025 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3026 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3028 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3019 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" +@.str.3020 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3022 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" +@.str.3023 = private unnamed_addr constant [8 x i8] c" = null\00" +@.str.3024 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3027 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3028 = private unnamed_addr constant [2 x i8] c"'\00" @.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3031 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3030 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.3031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3033 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3034 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3035 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3033 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.3034 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3038 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3039 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3044 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3037 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3038 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.3039 = private unnamed_addr constant [19 x i8] c"' (create it with \00" +@.str.3040 = private unnamed_addr constant [9 x i8] c" := ...)\00" +@.str.3041 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.3042 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.3043 = private unnamed_addr constant [10 x i8] c"the value\00" +@.str.3044 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3045 = private unnamed_addr constant [2 x i8] c"'\00" @.str.3046 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3048 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3049 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" +@.str.3047 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3052 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3054 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3055 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3056 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3058 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3059 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3061 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3062 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3064 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3067 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3068 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3069 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3070 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3071 = private unnamed_addr constant [19 x i8] c"the returned value\00" +@.str.3051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3052 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3053 = private unnamed_addr constant [12 x i8] c"a condition\00" +@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3055 = private unnamed_addr constant [5 x i8] c"then\00" +@.str.3056 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.3057 = private unnamed_addr constant [6 x i8] c"endif\00" +@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3060 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3063 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3064 = private unnamed_addr constant [11 x i8] c"while.cond\00" +@.str.3065 = private unnamed_addr constant [11 x i8] c"while.body\00" +@.str.3066 = private unnamed_addr constant [10 x i8] c"while.end\00" +@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3068 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3070 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3073 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3073 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" @.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3076 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3077 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3075 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3076 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3081 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3084 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3085 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3079 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3081 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3082 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.3083 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.3084 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.3085 = private unnamed_addr constant [5 x i8] c"each\00" @.str.3086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3087 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3088 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3089 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3090 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3092 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3093 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3094 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3100 = private unnamed_addr constant [8 x i8] c"{ i64, \00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3105 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3106 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3107 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3108 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3109 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3110 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3111 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3112 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3113 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3114 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3115 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3116 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3117 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3087 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3089 = private unnamed_addr constant [21 x i8] c"the start of a range\00" +@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3091 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3093 = private unnamed_addr constant [19 x i8] c"the end of a range\00" +@.str.3094 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3095 = private unnamed_addr constant [9 x i8] c"for.cond\00" +@.str.3096 = private unnamed_addr constant [9 x i8] c"for.body\00" +@.str.3097 = private unnamed_addr constant [9 x i8] c"for.step\00" +@.str.3098 = private unnamed_addr constant [8 x i8] c"for.end\00" +@.str.3099 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3100 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3101 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3103 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3108 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3110 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3111 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3112 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3113 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3114 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3118 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3119 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3120 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3121 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3122 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3123 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3124 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3126 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3127 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3128 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3129 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3130 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3131 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3133 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3134 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3135 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3136 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3137 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3138 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3139 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3140 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3119 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3120 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3121 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3122 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3123 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3124 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3125 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3126 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" +@.str.3127 = private unnamed_addr constant [9 x i8] c"map.cond\00" +@.str.3128 = private unnamed_addr constant [10 x i8] c"map.check\00" +@.str.3129 = private unnamed_addr constant [9 x i8] c"map.body\00" +@.str.3130 = private unnamed_addr constant [9 x i8] c"map.step\00" +@.str.3131 = private unnamed_addr constant [8 x i8] c"map.end\00" +@.str.3132 = private unnamed_addr constant [12 x i8] c"map.changed\00" +@.str.3133 = private unnamed_addr constant [9 x i8] c"map.same\00" +@.str.3134 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3135 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3136 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3137 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" +@.str.3138 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3139 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3140 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" @.str.3141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3142 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" @.str.3143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3144 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3145 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3146 = private unnamed_addr constant [12 x i8] c"unreachable\00" @.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3149 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3150 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3151 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3152 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3153 = private unnamed_addr constant [10 x i8] c"map.found\00" +@.str.3148 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3149 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3150 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3151 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3152 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3153 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" @.str.3154 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3155 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3156 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3157 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3158 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3159 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3161 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3163 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3164 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3165 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3168 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3169 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3170 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3173 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3176 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3155 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3156 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3157 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.3158 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3160 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3165 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3167 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3168 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3169 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3170 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3171 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3173 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3174 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3175 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3176 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3177 = private unnamed_addr constant [4 x i8] c"str\00" @.str.3178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3179 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3180 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3183 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3184 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3179 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" +@.str.3180 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" +@.str.3181 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3182 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3186 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3187 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3188 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [22 x i8] c"every key of this map\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3198 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3199 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3203 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3204 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3205 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3208 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3209 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3210 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3211 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3212 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3213 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3214 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3215 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3216 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3217 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3218 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3219 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3220 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3221 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3222 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3223 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3224 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3225 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3228 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3229 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3230 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3231 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3232 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3233 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3234 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3235 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3236 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3237 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3238 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3239 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3240 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3241 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3242 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3243 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3244 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3245 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3246 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3247 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3248 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3249 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3250 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3251 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3253 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3254 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3255 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3256 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3257 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3258 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3259 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3260 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3263 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3264 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3265 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3266 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3267 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3268 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3269 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3270 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3271 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3272 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3273 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3274 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3275 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3276 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3277 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3186 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3187 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3188 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3189 = private unnamed_addr constant [10 x i8] c"each.cond\00" +@.str.3190 = private unnamed_addr constant [10 x i8] c"each.body\00" +@.str.3191 = private unnamed_addr constant [10 x i8] c"each.step\00" +@.str.3192 = private unnamed_addr constant [9 x i8] c"each.end\00" +@.str.3193 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3194 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.3195 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3196 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3197 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3198 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3199 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3200 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3201 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3202 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3204 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3206 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.3207 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3210 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" +@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3212 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.3213 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3214 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3215 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3216 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3218 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3219 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" +@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3221 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3223 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3224 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3225 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3226 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3227 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3229 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3230 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3232 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3233 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3234 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3236 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3237 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" +@.str.3238 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3239 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3241 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3243 = private unnamed_addr constant [18 x i8] c"the error message\00" +@.str.3244 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3246 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3247 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3248 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3250 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3251 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3252 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3254 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3256 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3257 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3259 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3261 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3262 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" +@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3264 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3265 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3267 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3268 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" +@.str.3269 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3271 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3274 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3275 = private unnamed_addr constant [15 x i8] c"' must return \00" +@.str.3276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3277 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3278 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3280 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.3280 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" @.str.3281 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3282 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3283 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3284 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3285 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3286 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3282 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3283 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3284 = private unnamed_addr constant [19 x i8] c"the returned value\00" +@.str.3285 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3286 = private unnamed_addr constant [4 x i8] c"var\00" @.str.3287 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3288 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3290 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3291 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3293 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3294 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3295 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3298 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3299 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3302 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3305 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3307 = private unnamed_addr constant [9 x i8] c"match.or\00" +@.str.3288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3289 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3290 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3292 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3293 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" +@.str.3294 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3296 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3297 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3298 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3300 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3301 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3302 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3303 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3305 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3306 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3307 = private unnamed_addr constant [5 x i8] c"ret \00" @.str.3308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3309 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3310 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3311 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3312 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3313 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3314 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3315 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3309 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3310 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3312 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3313 = private unnamed_addr constant [8 x i8] c"{ i64, \00" +@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3315 = private unnamed_addr constant [3 x i8] c", \00" @.str.3316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3317 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3318 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3320 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3324 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3325 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3326 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3327 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3328 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3329 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3330 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3331 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3333 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3334 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3335 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3336 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3337 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3338 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3339 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3340 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3341 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3343 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3344 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3345 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3346 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3347 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3348 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3349 = private unnamed_addr constant [81 x i8] c"only a function call can fail; 'or' and 'try' go after one, like int(text) or 0\00" -@.str.3350 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3351 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3317 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.3318 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" +@.str.3319 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" +@.str.3320 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3321 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3322 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3323 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str.3324 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3325 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3326 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3327 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3328 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3329 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str.3330 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3332 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3333 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.3334 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.3335 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3336 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3337 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3339 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.3340 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" +@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3342 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3343 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3344 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3345 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3346 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" +@.str.3347 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3348 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3349 = private unnamed_addr constant [8 x i8] c"map.new\00" +@.str.3350 = private unnamed_addr constant [9 x i8] c"map.have\00" +@.str.3351 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.3352 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.3353 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.3354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3355 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3357 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3358 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3361 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3367 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3369 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3372 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3373 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3374 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" +@.str.3360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3362 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3363 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" +@.str.3364 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3365 = private unnamed_addr constant [12 x i8] c"map.missing\00" +@.str.3366 = private unnamed_addr constant [10 x i8] c"map.found\00" +@.str.3367 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.3368 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3369 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3370 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3371 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3372 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" +@.str.3373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3374 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" @.str.3375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3376 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3377 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3379 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3380 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3381 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3382 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3383 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3376 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3377 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3378 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3379 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3381 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3382 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3383 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" @.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3386 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3387 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3389 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3390 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3391 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3393 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3394 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3395 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3397 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3398 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3399 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3401 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3402 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3403 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.3385 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3386 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3388 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3389 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3392 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3393 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3395 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" +@.str.3396 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3397 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3399 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" +@.str.3400 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3401 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3405 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3408 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3409 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3408 = private unnamed_addr constant [22 x i8] c"every key of this map\00" +@.str.3409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3410 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3411 = private unnamed_addr constant [24 x i8] c"every value of this map\00" @.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3414 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3416 = private unnamed_addr constant [143 x i8] c"this block must leave with return, break, continue or exit(...): after a failure there is no value to go on with (or give one: ... or )\00" -@.str.3417 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3418 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3419 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3420 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3422 = private unnamed_addr constant [99 x i8] c"this call gives back no value, so there is nothing to replace; handle the failure with or { ... }\00" -@.str.3423 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3424 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3427 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3428 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3429 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3430 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3431 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3432 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3433 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3434 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3435 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3436 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3437 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3438 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3415 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3416 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3417 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3418 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.3419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3421 = private unnamed_addr constant [8 x i8] c"the key\00" +@.str.3422 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.3423 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3424 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.3425 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3426 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.3427 = private unnamed_addr constant [11 x i8] c"remove.hit\00" +@.str.3428 = private unnamed_addr constant [11 x i8] c"remove.end\00" +@.str.3429 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" +@.str.3430 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3431 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3432 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3433 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3434 = private unnamed_addr constant [10 x i8] c"get.found\00" +@.str.3435 = private unnamed_addr constant [12 x i8] c"get.missing\00" +@.str.3436 = private unnamed_addr constant [9 x i8] c"get.fend\00" +@.str.3437 = private unnamed_addr constant [9 x i8] c"get.mend\00" +@.str.3438 = private unnamed_addr constant [8 x i8] c"get.end\00" @.str.3439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3440 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3441 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3442 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3447 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3448 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3449 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3450 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3451 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3454 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3455 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3456 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3457 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3458 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3459 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3460 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3461 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3462 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3463 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3464 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3465 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3466 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3467 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3468 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3469 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3470 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3471 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3472 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3475 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3478 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3479 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3480 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3481 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3482 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3483 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3484 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3485 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3486 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3487 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3488 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3491 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3492 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.3493 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.3494 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3495 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.3496 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.3497 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.3498 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.3499 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3500 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3501 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3502 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.3503 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3504 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3505 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3506 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3507 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.3508 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.3509 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3510 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3511 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.3512 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.3513 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.3514 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.3515 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3516 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3517 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3518 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3519 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3525 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3527 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3529 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.3530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3531 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3441 = private unnamed_addr constant [12 x i8] c"the default\00" +@.str.3442 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3443 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3444 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3445 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3446 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3447 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3448 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.3449 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" +@.str.3450 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3451 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3452 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.3453 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3454 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.3455 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3456 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3457 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.3458 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3459 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3460 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3461 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.3462 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.3463 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3464 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3465 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3466 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3467 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3468 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3469 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3470 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3471 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3472 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3473 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str.3474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3475 = private unnamed_addr constant [11 x i8] c"entry.live\00" +@.str.3476 = private unnamed_addr constant [11 x i8] c"entry.next\00" +@.str.3477 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" +@.str.3478 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3479 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3480 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3481 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.3482 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3483 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.3484 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.3485 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.3486 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.3487 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3488 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" +@.str.3489 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" +@.str.3490 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3491 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3493 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.3494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3495 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.3496 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" +@.str.3497 = private unnamed_addr constant [11 x i8] c" (it has: \00" +@.str.3498 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3499 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3501 = private unnamed_addr constant [13 x i8] c"this pattern\00" +@.str.3502 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3503 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3504 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3506 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" +@.str.3507 = private unnamed_addr constant [10 x i8] c"match.end\00" +@.str.3508 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3510 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" +@.str.3511 = private unnamed_addr constant [10 x i8] c"match.arm\00" +@.str.3512 = private unnamed_addr constant [11 x i8] c"match.next\00" +@.str.3513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3515 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3517 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" +@.str.3518 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3520 = private unnamed_addr constant [9 x i8] c"match.or\00" +@.str.3521 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3522 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3523 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3524 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3525 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" +@.str.3526 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" +@.str.3527 = private unnamed_addr constant [11 x i8] c"match.from\00" +@.str.3528 = private unnamed_addr constant [6 x i8] c"block\00" +@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3530 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3531 = private unnamed_addr constant [5 x i8] c"enum\00" @.str.3532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3533 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3533 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" @.str.3534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3535 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3537 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3541 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3545 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.3546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3547 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3537 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" +@.str.3538 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3539 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" +@.str.3540 = private unnamed_addr constant [12 x i8] c"a match on \00" +@.str.3541 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" +@.str.3542 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.3543 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.3544 = private unnamed_addr constant [12 x i8] c"unreachable\00" +@.str.3545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3546 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3547 = private unnamed_addr constant [12 x i8] c"unreachable\00" @.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3554 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3555 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3556 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3557 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3559 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3561 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3562 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3563 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3565 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3567 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3569 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3571 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3549 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3550 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3551 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3552 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3553 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3554 = private unnamed_addr constant [3 x i8] c"[ \00" +@.str.3555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3556 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3558 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3559 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3560 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3561 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3562 = private unnamed_addr constant [81 x i8] c"only a function call can fail; 'or' and 'try' go after one, like int(text) or 0\00" +@.str.3563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3564 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3566 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3568 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3570 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3571 = private unnamed_addr constant [1 x i8] c"\00" @.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3575 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3577 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3579 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3581 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3583 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3585 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3587 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3573 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3574 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3576 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3577 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3578 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3580 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3582 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.3583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3584 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.3585 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3586 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.3587 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" @.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3589 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" +@.str.3590 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" +@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3592 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3593 = private unnamed_addr constant [2 x i8] c"!\00" @.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3596 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3595 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3596 = private unnamed_addr constant [5 x i8] c"void\00" @.str.3597 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3598 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3600 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3598 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3599 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3600 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" @.str.3601 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3602 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3604 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3602 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3603 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" +@.str.3604 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" @.str.3605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3606 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3607 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3609 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3611 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3613 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3606 = private unnamed_addr constant [11 x i8] c"try.failed\00" +@.str.3607 = private unnamed_addr constant [7 x i8] c"try.ok\00" +@.str.3608 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3610 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3611 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3612 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.3613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3614 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" +@.str.3615 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" +@.str.3616 = private unnamed_addr constant [4 x i8] c", 2\00" @.str.3617 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3618 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3618 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" @.str.3619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3620 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3621 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3624 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3620 = private unnamed_addr constant [10 x i8] c"or.failed\00" +@.str.3621 = private unnamed_addr constant [6 x i8] c"or.ok\00" +@.str.3622 = private unnamed_addr constant [4 x i8] c"err\00" +@.str.3623 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.3625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3626 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3627 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3626 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" +@.str.3627 = private unnamed_addr constant [5 x i8] c"void\00" @.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.3630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3631 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.3632 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3633 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3629 = private unnamed_addr constant [143 x i8] c"this block must leave with return, break, continue or exit(...): after a failure there is no value to go on with (or give one: ... or )\00" +@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3631 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3632 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3633 = private unnamed_addr constant [5 x i8] c"void\00" @.str.3634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3635 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.3636 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3635 = private unnamed_addr constant [99 x i8] c"this call gives back no value, so there is nothing to replace; handle the failure with or { ... }\00" +@.str.3636 = private unnamed_addr constant [4 x i8] c"err\00" @.str.3637 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3638 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3639 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3640 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.3641 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3643 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3644 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3645 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3646 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3647 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3648 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.3649 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3650 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3651 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.3652 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.3653 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.3654 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.3655 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.3656 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.3658 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.3659 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.3660 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.3661 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.3662 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.3664 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.3665 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.3666 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.3667 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.3668 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.3669 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.3670 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.3671 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.3672 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3673 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.3674 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.3675 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.3676 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3677 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3679 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.3680 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.3681 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3683 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.3684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3685 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3686 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3687 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3688 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.3689 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3690 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.3691 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.3692 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3693 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.3694 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.3695 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.3696 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.3697 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.3698 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3699 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3700 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3701 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3702 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3703 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3704 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3705 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3706 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3707 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3709 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3710 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.3711 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3712 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3713 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3714 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3715 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.3716 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3717 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3718 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3720 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3723 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3724 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3725 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3726 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3727 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3730 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3733 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3734 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3736 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3737 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3738 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3739 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3740 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3741 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3742 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3743 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.3744 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.3745 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.3746 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.3747 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.3748 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.3749 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.3750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3751 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3752 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3753 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3754 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3755 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3756 = private unnamed_addr constant [116 x i8] c"enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))\00" -@.str.3757 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3758 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3759 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3760 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3761 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3764 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3765 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3766 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3767 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.3768 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3769 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3770 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3771 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3772 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3773 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3774 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3775 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3776 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3777 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3778 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3779 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3780 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.3781 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.3782 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.3783 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.3784 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.3785 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.3786 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.3787 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.3788 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.3789 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.3790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3791 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.3792 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3640 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" +@.str.3641 = private unnamed_addr constant [8 x i8] c"or.bend\00" +@.str.3642 = private unnamed_addr constant [7 x i8] c"or.end\00" +@.str.3643 = private unnamed_addr constant [5 x i8] c"phi \00" +@.str.3644 = private unnamed_addr constant [4 x i8] c" [ \00" +@.str.3645 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3646 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.3647 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.3648 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.3649 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3650 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3651 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3653 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.3654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3655 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.3656 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3657 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3659 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.3660 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3661 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3662 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3663 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3664 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3665 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3666 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3667 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3668 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3669 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3670 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3671 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.3672 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.3673 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.3674 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.3675 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.3676 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3677 = private unnamed_addr constant [6 x i8] c"unary\00" +@.str.3678 = private unnamed_addr constant [7 x i8] c"binary\00" +@.str.3679 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.3680 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.3681 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3682 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3683 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3684 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.3685 = private unnamed_addr constant [20 x i8] c"unknown expression \00" +@.str.3686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3687 = private unnamed_addr constant [2 x i8] c"!\00" +@.str.3688 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3690 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" +@.str.3691 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.3692 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.3693 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3694 = private unnamed_addr constant [2 x i8] c"~\00" +@.str.3695 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" +@.str.3696 = private unnamed_addr constant [5 x i8] c"xor \00" +@.str.3697 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3698 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str.3699 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" +@.str.3700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3701 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3703 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3704 = private unnamed_addr constant [5 x i8] c"sub \00" +@.str.3705 = private unnamed_addr constant [5 x i8] c" 0, \00" +@.str.3706 = private unnamed_addr constant [6 x i8] c"fneg \00" +@.str.3707 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3708 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" +@.str.3709 = private unnamed_addr constant [12 x i8] c"can't use '\00" +@.str.3710 = private unnamed_addr constant [6 x i8] c"' on \00" +@.str.3711 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.3712 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3713 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3714 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3715 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" +@.str.3716 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3717 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3718 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3719 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3720 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" +@.str.3721 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" +@.str.3722 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3723 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3724 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.3725 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.3726 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3727 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" +@.str.3728 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.3729 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.3730 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3731 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3732 = private unnamed_addr constant [32 x i8] c" (compare the parts one by one)\00" +@.str.3733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3734 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3735 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3736 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3738 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3740 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3742 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3744 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3746 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3748 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3750 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3752 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3753 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3754 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3755 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3756 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3758 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3760 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" +@.str.3761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3762 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3764 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3765 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3766 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3768 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3770 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3772 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3774 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3776 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3777 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3778 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3779 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3780 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3782 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3783 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3784 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3785 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3786 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3788 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3790 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3792 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" @.str.3793 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3794 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.3795 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.3796 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.3797 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.3800 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3801 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.3802 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.3803 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.3804 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3805 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3806 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3807 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3794 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3795 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3796 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3798 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3800 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3801 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3802 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3804 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3806 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3807 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3808 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3809 = private unnamed_addr constant [1 x i8] c"\00" @.str.3810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3811 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3812 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.3813 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.3814 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.3815 = private unnamed_addr constant [2 x i8] c">\00" -@.str.3816 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.3817 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3818 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3820 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.3821 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3822 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.3823 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3824 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.3825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3826 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.3827 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3828 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3829 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3830 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3832 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.3833 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3834 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.3835 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3836 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3837 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.3838 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3839 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3840 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3841 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3842 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3843 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.3844 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3846 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.3811 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3813 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3815 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3817 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3819 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3820 = private unnamed_addr constant [1 x i8] c"\00" +@.str.3821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3822 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3824 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3826 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3828 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3829 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3831 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3832 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3833 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3834 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3835 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3836 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3837 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3839 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3840 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.3841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3842 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" +@.str.3843 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3844 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" +@.str.3845 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.3846 = private unnamed_addr constant [6 x i8] c"float\00" @.str.3847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3848 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3851 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3853 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.3854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3855 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.3856 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.3857 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.3858 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.3859 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.3860 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.3861 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.3862 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3863 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.3864 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3865 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.3866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3867 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3868 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3869 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.3870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3871 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.3872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.3875 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.3876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3877 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.3878 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.3881 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.3882 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.3883 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.3884 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3885 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.3886 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.3887 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3888 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3889 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3890 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [2 x i8] c".\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3895 = private unnamed_addr constant [2 x i8] c".\00" -@.str.3896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3897 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.3898 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3899 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.3900 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.3901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3902 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3906 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3907 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3909 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3848 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" +@.str.3849 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3850 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3851 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3852 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3853 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" +@.str.3854 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3855 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3856 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3857 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.3858 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3859 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3860 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3861 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.3862 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3863 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3864 = private unnamed_addr constant [2 x i8] c"&\00" +@.str.3865 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.3866 = private unnamed_addr constant [2 x i8] c"^\00" +@.str.3867 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str.3868 = private unnamed_addr constant [3 x i8] c">>\00" +@.str.3869 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.3870 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.3871 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.3872 = private unnamed_addr constant [5 x i8] c"sdiv\00" +@.str.3873 = private unnamed_addr constant [5 x i8] c"srem\00" +@.str.3874 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.3875 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3876 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.3877 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.3878 = private unnamed_addr constant [5 x i8] c"ashr\00" +@.str.3879 = private unnamed_addr constant [4 x i8] c"add\00" +@.str.3880 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.3881 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str.3882 = private unnamed_addr constant [5 x i8] c"udiv\00" +@.str.3883 = private unnamed_addr constant [5 x i8] c"urem\00" +@.str.3884 = private unnamed_addr constant [4 x i8] c"and\00" +@.str.3885 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.3886 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str.3887 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str.3888 = private unnamed_addr constant [5 x i8] c"lshr\00" +@.str.3889 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3890 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3891 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.3892 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.3893 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str.3894 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3895 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3896 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.3897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3898 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3899 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3900 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3901 = private unnamed_addr constant [2 x i8] c"+\00" +@.str.3902 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.3903 = private unnamed_addr constant [2 x i8] c"*\00" +@.str.3904 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.3905 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.3906 = private unnamed_addr constant [5 x i8] c"fadd\00" +@.str.3907 = private unnamed_addr constant [5 x i8] c"fsub\00" +@.str.3908 = private unnamed_addr constant [5 x i8] c"fmul\00" +@.str.3909 = private unnamed_addr constant [5 x i8] c"fdiv\00" +@.str.3910 = private unnamed_addr constant [5 x i8] c"frem\00" @.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3915 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3916 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.3917 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.3919 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3920 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3921 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3922 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3924 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.3925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3926 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3927 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3928 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.3929 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.3930 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.3931 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.3932 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3938 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.3939 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3941 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.3942 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.3944 = private unnamed_addr constant [2 x i8] c".\00" -@.str.3945 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.3946 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.3947 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3948 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3949 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.3950 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3951 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3954 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3955 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3956 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.3957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3958 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.3959 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.3960 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3961 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3962 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.3963 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3965 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3966 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3967 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3968 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.3969 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.3970 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3971 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.3972 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3973 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3974 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3975 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3976 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3977 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3978 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3979 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3980 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3981 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3982 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.3983 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.3984 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3985 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3987 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.3988 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.3989 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.3990 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3993 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3994 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3995 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3998 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3999 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4000 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4002 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.3912 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3913 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3914 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3915 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3916 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3917 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3918 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.3919 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3920 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.3921 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3922 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3923 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" +@.str.3924 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3925 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3926 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3927 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3928 = private unnamed_addr constant [6 x i8] c" ptr \00" +@.str.3929 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3930 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3932 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.3933 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" +@.str.3934 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3935 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3936 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3937 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3938 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3939 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3940 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.3941 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3942 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3943 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" +@.str.3944 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.3945 = private unnamed_addr constant [2 x i8] c")\00" +@.str.3946 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3947 = private unnamed_addr constant [6 x i8] c" i64 \00" +@.str.3948 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.3949 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3950 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3951 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3952 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.3953 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.3954 = private unnamed_addr constant [2 x i8] c">\00" +@.str.3955 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.3956 = private unnamed_addr constant [4 x i8] c"oeq\00" +@.str.3957 = private unnamed_addr constant [4 x i8] c"une\00" +@.str.3958 = private unnamed_addr constant [4 x i8] c"olt\00" +@.str.3959 = private unnamed_addr constant [4 x i8] c"ole\00" +@.str.3960 = private unnamed_addr constant [4 x i8] c"ogt\00" +@.str.3961 = private unnamed_addr constant [4 x i8] c"oge\00" +@.str.3962 = private unnamed_addr constant [6 x i8] c"fcmp \00" +@.str.3963 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.3964 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3965 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3966 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3967 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3968 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.3969 = private unnamed_addr constant [116 x i8] c"enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))\00" +@.str.3970 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3971 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3972 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3973 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3974 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str.3975 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3976 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3977 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3978 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.3979 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3980 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.3981 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3982 = private unnamed_addr constant [2 x i8] c" \00" +@.str.3983 = private unnamed_addr constant [3 x i8] c", \00" +@.str.3984 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.3985 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.3986 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.3987 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.3988 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.3989 = private unnamed_addr constant [2 x i8] c">\00" +@.str.3990 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.3991 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3992 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3993 = private unnamed_addr constant [4 x i8] c"ult\00" +@.str.3994 = private unnamed_addr constant [4 x i8] c"ule\00" +@.str.3995 = private unnamed_addr constant [4 x i8] c"ugt\00" +@.str.3996 = private unnamed_addr constant [4 x i8] c"uge\00" +@.str.3997 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str.3998 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str.3999 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str.4000 = private unnamed_addr constant [4 x i8] c"sle\00" +@.str.4001 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str.4002 = private unnamed_addr constant [4 x i8] c"sge\00" @.str.4003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4004 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4006 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4007 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4008 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4009 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4010 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4011 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4012 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4013 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4014 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4015 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4017 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4020 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4021 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4022 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4023 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4024 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4025 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4026 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4027 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4028 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4029 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4030 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4031 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4032 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4033 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4034 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4035 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4036 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4037 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4038 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4039 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4040 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4041 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4042 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4043 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4044 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4045 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4046 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4047 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4048 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4049 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4050 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4051 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4052 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4053 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4054 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4055 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4056 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4057 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4058 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4059 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4060 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4061 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4062 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4004 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4005 = private unnamed_addr constant [3 x i8] c"||\00" +@.str.4006 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4007 = private unnamed_addr constant [11 x i8] c"logic.from\00" +@.str.4008 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" +@.str.4009 = private unnamed_addr constant [10 x i8] c"logic.end\00" +@.str.4010 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4011 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4012 = private unnamed_addr constant [11 x i8] c"logic.rend\00" +@.str.4013 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.4014 = private unnamed_addr constant [3 x i8] c"&&\00" +@.str.4015 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.4016 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" +@.str.4017 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4018 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str.4019 = private unnamed_addr constant [4 x i8] c", %\00" +@.str.4020 = private unnamed_addr constant [3 x i8] c" ]\00" +@.str.4021 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4023 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4024 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.4025 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str.4026 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.4027 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str.4028 = private unnamed_addr constant [2 x i8] c">\00" +@.str.4029 = private unnamed_addr constant [3 x i8] c">=\00" +@.str.4030 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4031 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4032 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4033 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" +@.str.4034 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4035 = private unnamed_addr constant [28 x i8] c"every element of this array\00" +@.str.4036 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4037 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str.4038 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4039 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.4040 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4041 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4042 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4043 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4045 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" +@.str.4046 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4047 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4048 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4049 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4050 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" +@.str.4051 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4052 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.4053 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4054 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4055 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4056 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" +@.str.4057 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4059 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4061 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4063 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4064 = private unnamed_addr constant [4 x i8] c"int\00" @.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4067 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4068 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4069 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4070 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4071 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4072 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4073 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4074 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4075 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4076 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4077 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4078 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4081 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4083 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4084 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4085 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4086 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4087 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4088 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4089 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4090 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4091 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4092 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4093 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4094 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4097 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4099 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4100 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4101 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4102 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4104 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4105 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4106 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4107 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4108 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4109 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4110 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4111 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4112 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4113 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4114 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4115 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4116 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4117 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4118 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4119 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4120 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4121 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4122 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4123 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4124 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4125 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4126 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4127 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4128 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4129 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4130 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4131 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4132 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4133 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4134 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4135 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4136 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4137 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4138 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4139 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4140 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4141 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4142 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4143 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4145 = private unnamed_addr constant [71 x i8] c"use .ptr to get a str's address (it is only valid while the str lives)\00" -@.str.4146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4147 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4151 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4153 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4155 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4156 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4157 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4158 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4159 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4160 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4162 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4166 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4169 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4171 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4173 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4174 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4175 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4176 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4177 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4178 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4179 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4180 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4181 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4182 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4183 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4184 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4185 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4186 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4187 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4188 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4189 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4190 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4195 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4197 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4198 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4201 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4202 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4204 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4205 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4066 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4068 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4069 = private unnamed_addr constant [8 x i8] c"fprintf\00" +@.str.4070 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4071 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4072 = private unnamed_addr constant [7 x i8] c"stderr\00" +@.str.4073 = private unnamed_addr constant [2 x i8] c"2\00" +@.str.4074 = private unnamed_addr constant [6 x i8] c"stdin\00" +@.str.4075 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4076 = private unnamed_addr constant [7 x i8] c"stdout\00" +@.str.4077 = private unnamed_addr constant [2 x i8] c"1\00" +@.str.4078 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" +@.str.4079 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4080 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4081 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4082 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4083 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4084 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.4085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4087 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4088 = private unnamed_addr constant [3 x i8] c"g:\00" +@.str.4089 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4090 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4091 = private unnamed_addr constant [3 x i8] c"g:\00" +@.str.4092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4093 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.4094 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4095 = private unnamed_addr constant [20 x i8] c" = external global \00" +@.str.4096 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.4097 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4098 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" +@.str.4099 = private unnamed_addr constant [11 x i8] c".name(...)\00" +@.str.4100 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" +@.str.4101 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4102 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4103 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4104 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4105 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4106 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.4107 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4108 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4109 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4111 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4113 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.4114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4115 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.4116 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4118 = private unnamed_addr constant [3 x i8] c".0\00" +@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4120 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4122 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.4123 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4125 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4130 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4132 = private unnamed_addr constant [10 x i8] c"the enum \00" +@.str.4133 = private unnamed_addr constant [18 x i8] c" has no variant '\00" +@.str.4134 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4135 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4136 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4137 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4138 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4139 = private unnamed_addr constant [4 x i8] c" = \00" +@.str.4140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4141 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4142 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4144 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4146 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" +@.str.4147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4148 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4149 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4150 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4151 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.4152 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.4153 = private unnamed_addr constant [7 x i8] c"used .\00" +@.str.4154 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" +@.str.4155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4156 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4158 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4160 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4161 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.4162 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4163 = private unnamed_addr constant [3 x i8] c"a \00" +@.str.4164 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" +@.str.4165 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4166 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4167 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" +@.str.4168 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4169 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4170 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4171 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" +@.str.4172 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4173 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" +@.str.4174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4175 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4176 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4177 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4178 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" +@.str.4179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4180 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.4181 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" +@.str.4182 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4183 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4184 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4185 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4187 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4188 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4189 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4190 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.4191 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" +@.str.4192 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4193 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" +@.str.4194 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4195 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4196 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.4197 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4198 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4199 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4200 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4201 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4202 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4203 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4204 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" +@.str.4205 = private unnamed_addr constant [3 x i8] c"')\00" @.str.4206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4207 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.4208 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4210 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4213 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4214 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4215 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4216 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4219 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4220 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4221 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4222 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4223 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4224 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4225 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4226 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4227 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4228 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4209 = private unnamed_addr constant [12 x i8] c"the struct \00" +@.str.4210 = private unnamed_addr constant [16 x i8] c" has no field '\00" +@.str.4211 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.4212 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4213 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4215 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.4216 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4217 = private unnamed_addr constant [5 x i8] c"\0A```\00" +@.str.4218 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4219 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4220 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4221 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str.4222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4223 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.4224 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4225 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4227 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4228 = private unnamed_addr constant [4 x i8] c"map\00" @.str.4229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4230 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4230 = private unnamed_addr constant [4 x i8] c"int\00" @.str.4231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4232 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4234 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4235 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4236 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4237 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4232 = private unnamed_addr constant [9 x i8] c"an index\00" +@.str.4233 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4234 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4235 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4236 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4237 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" @.str.4238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4239 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4241 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4242 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4243 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4244 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4245 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4246 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4247 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4248 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4249 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4250 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4252 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4253 = private unnamed_addr constant [75 x i8] c"an export fn can't fail (C has no errors as values): handle them inside it\00" -@.str.4254 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4257 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4259 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4260 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4261 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4262 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4264 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4265 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4266 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4268 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4269 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4270 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4271 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4272 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4273 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4274 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4275 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4278 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4279 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4280 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4281 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4282 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4283 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4284 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4286 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4287 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4288 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4289 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4290 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4291 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4292 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4293 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4294 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4295 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4296 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4297 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4298 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4299 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4300 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4301 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4303 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4305 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4306 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4308 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4309 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4311 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4312 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4313 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4314 = private unnamed_addr constant [82 x i8] c") gives C a function pointer, so it can't be a method or a function that can fail\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4317 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4318 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4239 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4240 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" +@.str.4241 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4242 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4243 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4244 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4245 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4246 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4247 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4248 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" +@.str.4249 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4250 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4252 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4253 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" +@.str.4254 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" +@.str.4255 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4256 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4257 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4258 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.4259 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" +@.str.4260 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4261 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.4262 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4263 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4264 = private unnamed_addr constant [18 x i8] c"named arguments (\00" +@.str.4265 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" +@.str.4266 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4267 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4268 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4269 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4270 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4271 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4272 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4273 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.4274 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4275 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4276 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4277 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4279 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4280 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.4281 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4282 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.4283 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.4284 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.4285 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4286 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4287 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4288 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4290 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4291 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4292 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.4293 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4295 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4296 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4297 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4298 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.4299 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" +@.str.4300 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4301 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4302 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4303 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4304 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4306 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4307 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4308 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4309 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4310 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4311 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4312 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4313 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4314 = private unnamed_addr constant [4 x i8] c"0.0\00" +@.str.4315 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" +@.str.4316 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4317 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4318 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4319 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4320 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.4321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4322 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4323 = private unnamed_addr constant [96 x i8] c") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not \00" -@.str.4324 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4325 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4326 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4327 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4328 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4322 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4323 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4325 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4326 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4327 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4328 = private unnamed_addr constant [4 x i8] c"str\00" @.str.4329 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4330 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4330 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" @.str.4331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4332 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4333 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4334 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4335 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4336 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4337 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4340 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4341 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4342 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4343 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4344 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4345 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4346 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4347 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4348 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4349 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4350 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4351 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4353 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4354 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4355 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4356 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4357 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4358 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4359 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4360 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4361 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4362 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4363 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4364 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4365 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4366 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4367 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4368 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4369 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4371 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4372 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4373 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4374 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4375 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4376 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4377 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4379 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4380 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4381 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4382 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4383 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4387 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4388 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4332 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" +@.str.4333 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4334 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4335 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4336 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4337 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" +@.str.4338 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4339 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4340 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4341 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4342 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4343 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4344 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4345 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4346 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4347 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4348 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4349 = private unnamed_addr constant [7 x i8] c"fptoui\00" +@.str.4350 = private unnamed_addr constant [7 x i8] c"fptosi\00" +@.str.4351 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4352 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4353 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4354 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4355 = private unnamed_addr constant [9 x i8] c"icmp ne \00" +@.str.4356 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4357 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4358 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4359 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4360 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.4361 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4362 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" +@.str.4363 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4364 = private unnamed_addr constant [8 x i8] c" to ptr\00" +@.str.4365 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4366 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str.4367 = private unnamed_addr constant [5 x i8] c" to \00" +@.str.4368 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4369 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4371 = private unnamed_addr constant [71 x i8] c"use .ptr to get a str's address (it is only valid while the str lives)\00" +@.str.4372 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4373 = private unnamed_addr constant [12 x i8] c"can't turn \00" +@.str.4374 = private unnamed_addr constant [7 x i8] c" into \00" +@.str.4375 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4377 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4379 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4381 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4382 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4383 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4384 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4385 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4386 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4388 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" @.str.4389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.4390 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4391 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4392 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4394 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.4395 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4392 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.4393 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4395 = private unnamed_addr constant [6 x i8] c"float\00" @.str.4396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4397 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.4398 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4399 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.4400 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.4401 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.4402 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.4403 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4404 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4405 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4406 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4408 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4409 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.4410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4411 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4412 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4414 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4415 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4416 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.4417 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4418 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.4419 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4420 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4421 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4422 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4423 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.4424 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.4425 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4426 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4427 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.4428 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.4430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4397 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4399 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4400 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4401 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.4402 = private unnamed_addr constant [4 x i8] c" x \00" +@.str.4403 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.4404 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4405 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4406 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4407 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4408 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4409 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4410 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str.4411 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.4412 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4413 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4414 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" +@.str.4415 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4416 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4418 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4421 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4423 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4424 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4425 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4427 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4428 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4430 = private unnamed_addr constant [17 x i8] c"division by zero\00" +@.str.4431 = private unnamed_addr constant [7 x i8] c"memory\00" @.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.4433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4434 = private unnamed_addr constant [10 x i8] c"argument \00" -@.str.4435 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.4436 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4437 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4438 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4439 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4440 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4441 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4442 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4443 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4444 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4447 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4452 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4453 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4455 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4457 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.4458 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4459 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.4462 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4463 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4464 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4465 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4466 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4467 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4468 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4469 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4472 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4473 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4474 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4475 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4476 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4477 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4478 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.4479 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.4480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4481 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4482 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.4483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4484 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4485 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.4486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4487 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4488 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.4489 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4490 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4491 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4492 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4493 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4494 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4495 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4500 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4501 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4502 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4503 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4504 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4505 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4506 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4507 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4508 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4509 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4510 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.4511 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4512 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4513 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4514 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.4515 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.4516 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.4517 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.4518 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.4519 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.4520 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.4521 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.4523 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.4524 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.4525 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.4528 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.4529 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.4530 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.4532 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.4533 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.4534 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.4535 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.4536 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.4537 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.4538 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.4539 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.4540 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.4541 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.4542 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4543 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4544 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4545 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4546 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4547 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.4548 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4549 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4550 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4551 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4552 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4553 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.4554 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4555 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4556 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4557 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4558 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.4559 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4560 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4561 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.4562 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.4563 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.4564 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.4565 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4566 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.4567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4568 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00" -@.str.4569 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.4570 = private unnamed_addr constant [87 x i8] c"error(...) makes an error to return from a function that can fail: return error(\22...\22)\00" -@.str.4571 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.4572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4573 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4575 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.4576 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4577 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4578 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.4579 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4580 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4581 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.4582 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4583 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4586 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4587 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4588 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4589 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4590 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.4591 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4594 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.4595 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4596 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4597 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4598 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.4599 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4600 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4601 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4602 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.4603 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.4604 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4605 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4606 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4607 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.4608 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.4609 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4610 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4611 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4612 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4613 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.4614 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.4615 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4616 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4617 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4618 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4619 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.4620 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4621 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4622 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4623 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4624 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4625 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4626 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4627 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4628 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4629 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.4630 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4631 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4632 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4633 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4634 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4635 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4636 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4637 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4638 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4639 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4641 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4642 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.4643 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4644 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4645 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.4646 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.4647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4648 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4649 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.4650 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.4651 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4652 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4653 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4654 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4656 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4657 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4658 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4659 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4660 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4661 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4662 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.4663 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4664 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4665 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4666 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4667 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4436 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4439 = private unnamed_addr constant [7 x i8] c"double\00" +@.str.4440 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" +@.str.4441 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4442 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4444 = private unnamed_addr constant [3 x i8] c"{ \00" +@.str.4445 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4446 = private unnamed_addr constant [3 x i8] c" }\00" +@.str.4447 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4448 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4449 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4450 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4451 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4452 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4453 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4454 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4456 = private unnamed_addr constant [2 x i8] c"i\00" +@.str.4457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4458 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4460 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4461 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4462 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4463 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4464 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4465 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4467 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4468 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4469 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" +@.str.4470 = private unnamed_addr constant [21 x i8] c", which C can't take\00" +@.str.4471 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4472 = private unnamed_addr constant [3 x i8] c"' \00" +@.str.4473 = private unnamed_addr constant [13 x i8] c" the struct \00" +@.str.4474 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" +@.str.4475 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4476 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4477 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4478 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" +@.str.4479 = private unnamed_addr constant [75 x i8] c"an export fn can't fail (C has no errors as values): handle them inside it\00" +@.str.4480 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" +@.str.4481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4482 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4483 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" +@.str.4484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4485 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" +@.str.4486 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4487 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" +@.str.4488 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4490 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4491 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4492 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" +@.str.4493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4494 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4495 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" +@.str.4496 = private unnamed_addr constant [4 x i8] c"i1 \00" +@.str.4497 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" +@.str.4498 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4499 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4500 = private unnamed_addr constant [4 x i8] c" %e\00" +@.str.4501 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4502 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4503 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4504 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4505 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4506 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4507 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4508 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4509 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4510 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4511 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.4512 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4513 = private unnamed_addr constant [8 x i8] c"ret i8 \00" +@.str.4514 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4515 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str.4516 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4517 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4518 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4519 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4520 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4521 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.4522 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.4523 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4524 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4525 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4526 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4527 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4531 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" +@.str.4532 = private unnamed_addr constant [2 x i8] c".\00" +@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4534 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4535 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4537 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4538 = private unnamed_addr constant [3 x i8] c"t:\00" +@.str.4539 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4540 = private unnamed_addr constant [82 x i8] c") gives C a function pointer, so it can't be a method or a function that can fail\00" +@.str.4541 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4542 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4543 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4544 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4546 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4548 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4549 = private unnamed_addr constant [96 x i8] c") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not \00" +@.str.4550 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4551 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4552 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4553 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4554 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4556 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4558 = private unnamed_addr constant [6 x i8] c"addr(\00" +@.str.4559 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" +@.str.4560 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4561 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4562 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" +@.str.4563 = private unnamed_addr constant [4 x i8] c"%c0\00" +@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4566 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4567 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4568 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4569 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4570 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4571 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4572 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4573 = private unnamed_addr constant [7 x i8] c"ptr %c\00" +@.str.4574 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4575 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4576 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4577 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4578 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4579 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4581 = private unnamed_addr constant [3 x i8] c"%c\00" +@.str.4582 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4583 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4584 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4585 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4586 = private unnamed_addr constant [4 x i8] c" %c\00" +@.str.4587 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.4588 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4589 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4590 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4591 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4592 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4593 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4594 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4595 = private unnamed_addr constant [9 x i8] c"ret void\00" +@.str.4596 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4597 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4598 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4599 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4600 = private unnamed_addr constant [5 x i8] c"ret \00" +@.str.4601 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4602 = private unnamed_addr constant [16 x i8] c"define internal\00" +@.str.4603 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4604 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4605 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4606 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4607 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4608 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4609 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" +@.str.4610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4613 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" +@.str.4614 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4615 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4616 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4617 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" +@.str.4618 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4619 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4620 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.4621 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4623 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.4624 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4625 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.4626 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.4627 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" +@.str.4628 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.4629 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4630 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4631 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4632 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4634 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.4635 = private unnamed_addr constant [9 x i8] c" signext\00" +@.str.4636 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4637 = private unnamed_addr constant [9 x i8] c" zeroext\00" +@.str.4638 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4639 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4640 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4642 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4643 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4644 = private unnamed_addr constant [18 x i8] c"C function from `\00" +@.str.4645 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" +@.str.4646 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4647 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4648 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4649 = private unnamed_addr constant [6 x i8] c")\0A```\00" +@.str.4650 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4651 = private unnamed_addr constant [17 x i8] c"the C function '\00" +@.str.4652 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" +@.str.4653 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4654 = private unnamed_addr constant [18 x i8] c"' takes at least \00" +@.str.4655 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4656 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4657 = private unnamed_addr constant [9 x i8] c"' takes \00" +@.str.4658 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" +@.str.4659 = private unnamed_addr constant [8 x i8] c"returns\00" +@.str.4660 = private unnamed_addr constant [6 x i8] c"takes\00" +@.str.4661 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4662 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4663 = private unnamed_addr constant [11 x i8] c") align 16\00" +@.str.4664 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" +@.str.4665 = private unnamed_addr constant [12 x i8] c") align 16 \00" +@.str.4666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4667 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.4668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4669 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4670 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4675 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4676 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4677 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4678 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.4679 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4684 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4685 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.4686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4687 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [9 x i8] c"the text\00" +@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4670 = private unnamed_addr constant [10 x i8] c"argument \00" +@.str.4671 = private unnamed_addr constant [5 x i8] c" of \00" +@.str.4672 = private unnamed_addr constant [7 x i8] c"memory\00" +@.str.4673 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" +@.str.4674 = private unnamed_addr constant [9 x i8] c") align \00" +@.str.4675 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4676 = private unnamed_addr constant [9 x i8] c"indirect\00" +@.str.4677 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4678 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4679 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4680 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4681 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4682 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str.4683 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4686 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4687 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4688 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.4689 = private unnamed_addr constant [2 x i8] c" \00" @.str.4690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4691 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4692 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4693 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4694 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4695 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4707 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.4708 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4709 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4710 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4711 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4712 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4713 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.4714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4715 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.4716 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.4717 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4718 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4691 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4693 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" +@.str.4694 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4695 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4697 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" +@.str.4698 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.4699 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4700 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4701 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4702 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4703 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4704 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4705 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4706 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4707 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4708 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4709 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.4710 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4711 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4712 = private unnamed_addr constant [7 x i8] c"direct\00" +@.str.4713 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4714 = private unnamed_addr constant [6 x i8] c", ...\00" +@.str.4715 = private unnamed_addr constant [4 x i8] c"...\00" +@.str.4716 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4717 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4718 = private unnamed_addr constant [3 x i8] c"f:\00" @.str.4719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4720 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4721 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4722 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4723 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4724 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.4725 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4726 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4727 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4729 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4730 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4731 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4733 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4735 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4737 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.4738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4740 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.4741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4742 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.4743 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.4744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4745 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4746 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.4747 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4749 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.4754 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.4755 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.4756 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.4757 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.4758 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4759 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4760 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.4761 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4762 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4763 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.4764 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.4765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4766 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4767 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4768 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4769 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4773 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [120 x i8] c"free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block\00" -@.str.4778 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.4779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4780 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4781 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4782 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4784 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.4785 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4786 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4788 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4789 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4791 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4792 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4793 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4794 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.4795 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.4796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4797 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4799 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4805 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.4808 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4809 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.4810 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.4811 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.4816 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.4817 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4821 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.4822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4823 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4824 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4826 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4828 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4829 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4830 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.4831 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.4832 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.4833 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4834 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4835 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4838 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4839 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4840 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4841 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4842 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.4843 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4846 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4847 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4848 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4850 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4851 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4852 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4853 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4854 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4856 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4857 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4858 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4860 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4720 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" +@.str.4721 = private unnamed_addr constant [3 x i8] c"f:\00" +@.str.4722 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4723 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.4724 = private unnamed_addr constant [8 x i8] c"declare\00" +@.str.4725 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4726 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4727 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4728 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4729 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4730 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4731 = private unnamed_addr constant [3 x i8] c" (\00" +@.str.4732 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4733 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4734 = private unnamed_addr constant [5 x i8] c"call\00" +@.str.4735 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4736 = private unnamed_addr constant [3 x i8] c" @\00" +@.str.4737 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.4738 = private unnamed_addr constant [3 x i8] c", \00" +@.str.4739 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4740 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4741 = private unnamed_addr constant [7 x i8] c"expand\00" +@.str.4742 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" +@.str.4743 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4744 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4745 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4746 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" +@.str.4747 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4748 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4750 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4751 = private unnamed_addr constant [7 x i8] c"fflush\00" +@.str.4752 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.4753 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.4754 = private unnamed_addr constant [6 x i8] c"qsort\00" +@.str.4755 = private unnamed_addr constant [7 x i8] c"printf\00" +@.str.4756 = private unnamed_addr constant [5 x i8] c"puts\00" +@.str.4757 = private unnamed_addr constant [8 x i8] c"putchar\00" +@.str.4758 = private unnamed_addr constant [6 x i8] c"scanf\00" +@.str.4759 = private unnamed_addr constant [6 x i8] c"fopen\00" +@.str.4760 = private unnamed_addr constant [8 x i8] c"getchar\00" +@.str.4761 = private unnamed_addr constant [5 x i8] c"sqrt\00" +@.str.4762 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str.4763 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str.4764 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str.4765 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str.4766 = private unnamed_addr constant [5 x i8] c"fabs\00" +@.str.4767 = private unnamed_addr constant [7 x i8] c"malloc\00" +@.str.4768 = private unnamed_addr constant [5 x i8] c"rand\00" +@.str.4769 = private unnamed_addr constant [6 x i8] c"srand\00" +@.str.4770 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str.4771 = private unnamed_addr constant [5 x i8] c"atoi\00" +@.str.4772 = private unnamed_addr constant [7 x i8] c"strlen\00" +@.str.4773 = private unnamed_addr constant [7 x i8] c"strcpy\00" +@.str.4774 = private unnamed_addr constant [7 x i8] c"memcpy\00" +@.str.4775 = private unnamed_addr constant [5 x i8] c"time\00" +@.str.4776 = private unnamed_addr constant [6 x i8] c"sleep\00" +@.str.4777 = private unnamed_addr constant [7 x i8] c"usleep\00" +@.str.4778 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4779 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4780 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4781 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4782 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4783 = private unnamed_addr constant [8 x i8] c"stdio.h\00" +@.str.4784 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4785 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4786 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4787 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4788 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4789 = private unnamed_addr constant [7 x i8] c"math.h\00" +@.str.4790 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4791 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4792 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4793 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4794 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" +@.str.4795 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4796 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4797 = private unnamed_addr constant [9 x i8] c"string.h\00" +@.str.4798 = private unnamed_addr constant [7 x i8] c"time.h\00" +@.str.4799 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4800 = private unnamed_addr constant [9 x i8] c"unistd.h\00" +@.str.4801 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4802 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" +@.str.4803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4804 = private unnamed_addr constant [15 x i8] c"\22 at the top)\00" +@.str.4805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4806 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.4807 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4808 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.4809 = private unnamed_addr constant [87 x i8] c"error(...) makes an error to return from a function that can fail: return error(\22...\22)\00" +@.str.4810 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.4811 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4812 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4814 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" +@.str.4815 = private unnamed_addr constant [2 x i8] c" \00" +@.str.4816 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4817 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.4818 = private unnamed_addr constant [1 x i8] c"\00" +@.str.4819 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4820 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.4821 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4822 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4824 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.4825 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4826 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.4827 = private unnamed_addr constant [7 x i8] c"member\00" +@.str.4828 = private unnamed_addr constant [6 x i8] c"index\00" +@.str.4829 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" +@.str.4830 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4831 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4832 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4833 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" +@.str.4834 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4835 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4836 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4837 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" +@.str.4838 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4839 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.4840 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4841 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" +@.str.4842 = private unnamed_addr constant [10 x i8] c", double \00" +@.str.4843 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.4844 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4845 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4846 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" +@.str.4847 = private unnamed_addr constant [14 x i8] c", i8 signext \00" +@.str.4848 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4849 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4850 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.4851 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4852 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" +@.str.4853 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str.4854 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4855 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.4856 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4857 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4858 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" +@.str.4859 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4860 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4861 = private unnamed_addr constant [6 x i8] c"array\00" @.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4863 = private unnamed_addr constant [3 x i8] c"u8\00" @.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"give either all fields by name (x: 1, y: 2) or none (1, 2), not a mix\00" -@.str.4868 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.4869 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.4870 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.4871 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.4872 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4875 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4876 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4877 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4878 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4865 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4866 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4867 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4868 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" +@.str.4869 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4870 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4871 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4872 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.4873 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.4874 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.4875 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.4876 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.4877 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4878 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" @.str.4879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4880 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.4881 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4882 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.4883 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4884 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4880 = private unnamed_addr constant [12 x i8] c"can't turn \00" +@.str.4881 = private unnamed_addr constant [10 x i8] c" into str\00" +@.str.4882 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4883 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4884 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.4885 = private unnamed_addr constant [12 x i8] c"file_exists\00" @.str.4886 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4891 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.4892 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4893 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.4887 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.4888 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.4889 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" +@.str.4890 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4891 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.4892 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4893 = private unnamed_addr constant [5 x i8] c"bool\00" @.str.4894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4896 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.4897 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4898 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.4901 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4902 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.4903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4904 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.4905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4906 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.4895 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.4896 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4897 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4898 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4899 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4900 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4901 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" +@.str.4902 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4903 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4904 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4905 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4906 = private unnamed_addr constant [4 x i8] c", 0\00" @.str.4907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4908 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.4909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4910 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4912 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4908 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4909 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4911 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4912 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4913 = private unnamed_addr constant [4 x i8] c"str\00" @.str.4914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4915 = private unnamed_addr constant [17 x i8] c"the default of '\00" +@.str.4915 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" @.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4919 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4921 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.4922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4923 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.4924 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4925 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.4926 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.4927 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4928 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4929 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4930 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4933 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4934 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.4935 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.4936 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.4937 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4938 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4939 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4943 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.4944 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.4945 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4946 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.4947 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.4948 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.4949 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.4950 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.4951 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.4952 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.4953 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.4954 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4955 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4956 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.4957 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4958 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4960 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4961 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.4962 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4963 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4964 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4965 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4967 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4968 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4969 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.4970 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" +@.str.4917 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" +@.str.4918 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4919 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4920 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.4921 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4922 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4923 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.4924 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4926 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4928 = private unnamed_addr constant [9 x i8] c"the text\00" +@.str.4929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4930 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.4931 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4932 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4933 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4934 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" +@.str.4935 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4936 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4937 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4938 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4939 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4941 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4942 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4944 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4945 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4946 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" +@.str.4947 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4948 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4949 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.4950 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4951 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4952 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.4953 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4954 = private unnamed_addr constant [14 x i8] c"the file name\00" +@.str.4955 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.4956 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4957 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4959 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.4960 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4961 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.4962 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.4963 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" +@.str.4964 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4965 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4966 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str.4967 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4968 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4969 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.4970 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" @.str.4971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4972 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4974 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4975 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4977 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4978 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4979 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4972 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4974 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" +@.str.4975 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4976 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.4977 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.4978 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.4979 = private unnamed_addr constant [6 x i8] c"shell\00" @.str.4980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4981 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4982 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4984 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4985 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4986 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4987 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4988 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.4989 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4990 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.4991 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4992 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.4993 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.4994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4995 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4997 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4998 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4999 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5000 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.4981 = private unnamed_addr constant [12 x i8] c"the command\00" +@.str.4982 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" +@.str.4983 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.4984 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4985 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" +@.str.4986 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4987 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4988 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.4989 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4990 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.4992 = private unnamed_addr constant [14 x i8] c"the exit code\00" +@.str.4993 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.4994 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.4995 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" +@.str.4996 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" +@.str.4997 = private unnamed_addr constant [2 x i8] c")\00" +@.str.4998 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.4999 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.5000 = private unnamed_addr constant [1 x i8] c"\00" @.str.5001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5002 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5003 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5004 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5005 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5006 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5007 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5008 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5009 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5010 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5011 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5012 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5013 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5002 = private unnamed_addr constant [13 x i8] c"the question\00" +@.str.5003 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" +@.str.5004 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5005 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5006 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5007 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5008 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5010 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" +@.str.5011 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5012 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5014 = private unnamed_addr constant [4 x i8] c"ptr\00" @.str.5015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5016 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5017 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5018 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5019 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5020 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5021 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5022 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5023 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5024 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5025 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5026 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5027 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5028 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5029 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5030 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5031 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5032 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5033 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5034 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5035 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5036 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5037 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5038 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5039 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5040 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5041 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5042 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5043 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5044 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5045 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5046 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5047 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5050 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5051 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5052 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5053 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5054 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5055 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5056 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5057 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5058 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5059 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5060 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5061 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5063 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5064 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5065 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5066 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5067 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5068 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5069 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5070 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5071 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5072 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5073 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5074 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5075 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5076 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5077 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5078 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5079 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5080 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5081 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5082 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5083 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5084 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5085 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5086 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5087 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5088 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5089 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5090 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5092 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5093 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5094 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5096 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5101 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5102 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5103 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5104 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5105 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5106 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5107 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5108 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5109 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5110 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5111 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5112 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5113 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5114 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5116 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5016 = private unnamed_addr constant [120 x i8] c"free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block\00" +@.str.5017 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" +@.str.5018 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5019 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5020 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5021 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5022 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5023 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" +@.str.5024 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5025 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5027 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5028 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5030 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5031 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5032 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5033 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" +@.str.5034 = private unnamed_addr constant [11 x i8] c"[int](...)\00" +@.str.5035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5036 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5038 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5040 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5043 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5045 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5048 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" +@.str.5049 = private unnamed_addr constant [4 x i8] c" { \00" +@.str.5050 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5051 = private unnamed_addr constant [7 x i8] c" }\0A```\00" +@.str.5052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5053 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5056 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5058 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5060 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" +@.str.5061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5062 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.5063 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5064 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" +@.str.5065 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" +@.str.5066 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5068 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5070 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5071 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" +@.str.5072 = private unnamed_addr constant [5 x i8] c"ptr \00" +@.str.5073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5076 = private unnamed_addr constant [11 x i8] c"argument '\00" +@.str.5077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5078 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5081 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5083 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" +@.str.5084 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5085 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" +@.str.5086 = private unnamed_addr constant [20 x i8] c"(...) or , \00" +@.str.5087 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" +@.str.5088 = private unnamed_addr constant [6 x i8] c"(...)\00" +@.str.5089 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5090 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5091 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5092 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5093 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5094 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5095 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5096 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5097 = private unnamed_addr constant [8 x i8] c"xor i1 \00" +@.str.5098 = private unnamed_addr constant [7 x i8] c", true\00" +@.str.5099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5100 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" +@.str.5101 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5102 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5103 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5105 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" +@.str.5106 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5107 = private unnamed_addr constant [14 x i8] c"extractvalue \00" +@.str.5108 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5109 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5110 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5112 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5114 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5115 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5118 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5119 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5120 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5121 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5122 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5123 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5124 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5125 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5126 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5127 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5128 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5118 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5122 = private unnamed_addr constant [70 x i8] c"give either all fields by name (x: 1, y: 2) or none (1, 2), not a mix\00" +@.str.5123 = private unnamed_addr constant [6 x i8] c" has \00" +@.str.5124 = private unnamed_addr constant [18 x i8] c" fields, but got \00" +@.str.5125 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" +@.str.5126 = private unnamed_addr constant [16 x i8] c"(field: value))\00" +@.str.5127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5128 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" @.str.5129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5130 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5130 = private unnamed_addr constant [16 x i8] c" has no field '\00" @.str.5131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5132 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5133 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5134 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5135 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5136 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5137 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5138 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5139 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5140 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5141 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5142 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5143 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5144 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5145 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5147 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5148 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5149 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5150 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5152 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5153 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5154 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5155 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5156 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5158 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5160 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5162 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5165 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5166 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5167 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5168 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5169 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5170 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5171 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5172 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5173 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5174 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5175 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5176 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5178 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5179 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5180 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5181 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5182 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5183 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5184 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5185 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5186 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5187 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5188 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5189 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5190 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5191 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5192 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5193 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5197 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5198 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5199 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5200 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5201 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5202 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5203 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5204 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5205 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5206 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5207 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5208 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5209 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5210 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5211 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5213 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5215 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5216 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5218 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5219 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5220 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5221 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5222 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5224 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5225 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5226 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5227 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5228 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5229 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5230 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5231 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5232 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5233 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5234 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5235 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5236 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5237 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5238 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5239 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5240 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5241 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5242 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5243 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5244 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5245 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5246 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5247 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5248 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5249 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5251 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5252 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5253 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5255 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5256 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5257 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5259 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5261 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5262 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5263 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5264 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5265 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5266 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5267 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5268 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5269 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5270 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5271 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5272 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5273 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5274 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5275 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5276 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5277 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5278 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5279 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5280 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5282 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5283 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5132 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5135 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5137 = private unnamed_addr constant [17 x i8] c"' is given twice\00" +@.str.5138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5139 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" +@.str.5140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5143 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5146 = private unnamed_addr constant [12 x i8] c"the field '\00" +@.str.5147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5148 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5150 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5151 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5152 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5153 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5154 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5155 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5156 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5157 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5159 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5161 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5163 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5165 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5170 = private unnamed_addr constant [17 x i8] c"the default of '\00" +@.str.5171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5172 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5174 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" +@.str.5175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5176 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" +@.str.5177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5178 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" +@.str.5179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5180 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" +@.str.5181 = private unnamed_addr constant [13 x i8] c"insertvalue \00" +@.str.5182 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5183 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5184 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5185 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5188 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5189 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5191 = private unnamed_addr constant [4 x i8] c"var\00" +@.str.5192 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" +@.str.5193 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" +@.str.5194 = private unnamed_addr constant [14 x i8] c" at the top)\00" +@.str.5195 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5196 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5197 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5198 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5199 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5201 = private unnamed_addr constant [13 x i8] c"the module '\00" +@.str.5202 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" +@.str.5203 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5204 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5205 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5206 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5207 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5208 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5209 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5210 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5211 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5212 = private unnamed_addr constant [6 x i8] c"array\00" +@.str.5213 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5214 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" +@.str.5215 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5216 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5217 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5218 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5219 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" +@.str.5220 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5221 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5223 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5224 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5225 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str.5226 = private unnamed_addr constant [7 x i8] c", null\00" +@.str.5227 = private unnamed_addr constant [9 x i8] c"called .\00" +@.str.5228 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" +@.str.5229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5230 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5231 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5232 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5233 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5234 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5236 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5238 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5239 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5242 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" +@.str.5243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5245 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5246 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5247 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5248 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" +@.str.5249 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5250 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" +@.str.5251 = private unnamed_addr constant [5 x i8] c"the \00" +@.str.5252 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5253 = private unnamed_addr constant [17 x i8] c" has no method '\00" +@.str.5254 = private unnamed_addr constant [12 x i8] c"' (it has: \00" +@.str.5255 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5256 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5258 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5260 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5261 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5262 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" +@.str.5263 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" +@.str.5264 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" +@.str.5265 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" +@.str.5266 = private unnamed_addr constant [2 x i8] c".\00" +@.str.5267 = private unnamed_addr constant [16 x i8] c" has no methods\00" +@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5269 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" +@.str.5270 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str.5271 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5274 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5275 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5276 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5277 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5278 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" +@.str.5279 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5280 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5281 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5282 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5283 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" @.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5286 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5287 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5288 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5289 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5290 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5291 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5292 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5293 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5294 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5295 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5296 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5297 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5298 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5299 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5300 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5301 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5302 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5303 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5304 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5305 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5306 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5307 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5308 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5313 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5314 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5315 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5316 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5317 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5318 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5319 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5320 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.5321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5322 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5323 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.5324 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5325 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5326 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5327 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5328 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5329 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.5330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5331 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5333 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.5334 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.5335 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5336 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5337 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5338 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5339 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5340 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.5341 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.5342 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5343 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5346 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.5347 = private unnamed_addr constant [107 x i8] c"' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)\00" -@.str.5348 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.5349 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.5350 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.5351 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.5352 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.5353 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.5354 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.5355 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.5356 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.5357 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.5358 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.5359 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.5360 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.5361 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.5362 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.5363 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.5364 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.5365 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.5366 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.5367 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.5368 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.5369 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.5370 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.5371 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.5372 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.5373 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.5374 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.5375 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.5376 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.5377 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.5378 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.5379 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.5380 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.5381 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.5382 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.5383 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.5384 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.5385 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.5386 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.5387 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.5388 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.5389 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.5390 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.5391 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.5392 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.5393 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.5394 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.5395 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.5396 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.5397 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.5398 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.5399 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.5400 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.5401 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.5402 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.5403 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.5404 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.5405 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.5406 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.5407 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.5408 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.5409 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.5410 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.5411 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.5412 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.5413 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.5414 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.5415 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.5416 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.5417 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.5418 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.5419 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5420 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5421 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5424 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.5425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5426 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5427 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.5430 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5431 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.5432 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5433 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5434 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5435 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.5436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5437 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5438 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5441 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5442 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5443 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.5444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5445 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5446 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5285 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5286 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5287 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5288 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5289 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5290 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str.5291 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5292 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.5293 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5294 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5295 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5296 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5297 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5298 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5299 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5300 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5301 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5302 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5303 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5304 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5305 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5306 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5308 = private unnamed_addr constant [22 x i8] c"the value to look for\00" +@.str.5309 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5310 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5311 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str.5312 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5313 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5314 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5315 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5316 = private unnamed_addr constant [2 x i8] c"0\00" +@.str.5317 = private unnamed_addr constant [10 x i8] c"find.cond\00" +@.str.5318 = private unnamed_addr constant [10 x i8] c"find.body\00" +@.str.5319 = private unnamed_addr constant [9 x i8] c"find.hit\00" +@.str.5320 = private unnamed_addr constant [10 x i8] c"find.next\00" +@.str.5321 = private unnamed_addr constant [9 x i8] c"find.end\00" +@.str.5322 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5323 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5324 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5325 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5326 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5327 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5328 = private unnamed_addr constant [3 x i8] c"==\00" +@.str.5329 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5330 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5331 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5332 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5333 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5334 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5335 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5336 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5337 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5338 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5339 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5340 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5341 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" +@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5343 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5344 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" +@.str.5345 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5346 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5347 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5348 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5349 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5350 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5352 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5354 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5356 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5357 = private unnamed_addr constant [12 x i8] c"the element\00" +@.str.5358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5359 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5361 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" +@.str.5362 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5363 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5364 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5365 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5366 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5367 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5368 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5370 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5371 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5372 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5373 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5375 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5376 = private unnamed_addr constant [13 x i8] c"the position\00" +@.str.5377 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5378 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5379 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5380 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5381 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5382 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" +@.str.5383 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5384 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5385 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5386 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5387 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5388 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5390 = private unnamed_addr constant [15 x i8] c"the new length\00" +@.str.5391 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" +@.str.5392 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5393 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5394 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5395 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5396 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5397 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5398 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5399 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str.5400 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str.5401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5402 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5403 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5405 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5406 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5407 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str.5408 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5410 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5411 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5412 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5413 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5414 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5415 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5416 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5418 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5420 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5422 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5423 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5424 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str.5425 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5426 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5427 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5428 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" +@.str.5429 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5430 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5431 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str.5432 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5433 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5434 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" +@.str.5435 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str.5436 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5437 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5438 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" +@.str.5439 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5440 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5441 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5442 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5443 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5444 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5445 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5446 = private unnamed_addr constant [7 x i8] c", i64 \00" @.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5449 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5452 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" +@.str.5448 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str.5449 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5450 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5451 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str.5452 = private unnamed_addr constant [3 x i8] c", \00" @.str.5453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5454 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.5455 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.5456 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.5457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5458 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.5459 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.5460 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.5461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5462 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.5463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5464 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.5465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5466 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.5467 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5468 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5469 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5454 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5455 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5456 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5457 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5458 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" +@.str.5459 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5460 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5461 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" +@.str.5462 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5463 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5464 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5465 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5466 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.5467 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" +@.str.5468 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" +@.str.5469 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" @.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5471 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" @.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5477 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5480 = private unnamed_addr constant [83 x i8] c"a library (--shared) has no main: the program that loads it calls its 'export fn's\00" -@.str.5481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5482 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.5483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5484 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5485 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5487 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5489 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5490 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5492 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5493 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5496 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.5497 = private unnamed_addr constant [108 x i8] c" void @finch_module_on_fatal(ptr %handler) {\0Aentry:\0A call void @finch_on_fatal(ptr %handler)\0A ret void\0A}\0A\00" -@.str.5498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5499 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5500 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5501 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5502 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5504 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5505 = private unnamed_addr constant [134 x i8] c" %args = alloca { ptr, i64, i64 }\0A call void @finch_args(ptr %args, i32 %argc, ptr %argv)\0A %a = load { ptr, i64, i64 }, ptr %args\0A\00" -@.str.5506 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.5507 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5508 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.5509 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.5510 = private unnamed_addr constant [3 x i8] c" \00" -@.str.5511 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5512 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5513 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.5514 = private unnamed_addr constant [63 x i8] c" %r, 0\0A br i1 %ok, label %main.ok, label %main.bad\0Amain.bad:\0A\00" -@.str.5515 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.5516 = private unnamed_addr constant [79 x i8] c" %r, 2\0A %mp = alloca { ptr, i64, i64 }\0A store { ptr, i64, i64 } %m, ptr %mp\0A\00" -@.str.5517 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.5518 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5519 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.5520 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.5521 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5522 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.5523 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5526 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.5527 = private unnamed_addr constant [3 x i8] c" \00" -@.str.5528 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5529 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str.5473 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" +@.str.5474 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5475 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5476 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" +@.str.5477 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str.5478 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5479 = private unnamed_addr constant [3 x i8] c"%x\00" +@.str.5480 = private unnamed_addr constant [3 x i8] c"%y\00" +@.str.5481 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5482 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5483 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" +@.str.5484 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5485 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5486 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" +@.str.5487 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5488 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5489 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5490 = private unnamed_addr constant [2 x i8] c"<\00" +@.str.5491 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5492 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5493 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5494 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str.5495 = private unnamed_addr constant [2 x i8] c">\00" +@.str.5496 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5498 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5499 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str.5500 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5501 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5502 = private unnamed_addr constant [3 x i8] c", \00" +@.str.5503 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str.5504 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str.5505 = private unnamed_addr constant [9 x i8] c"ret i32 \00" +@.str.5506 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" +@.str.5507 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" +@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5509 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" +@.str.5510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5511 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5513 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5515 = private unnamed_addr constant [10 x i8] c"the start\00" +@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5517 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5519 = private unnamed_addr constant [8 x i8] c"the end\00" +@.str.5520 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" +@.str.5521 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5522 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5523 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5524 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5525 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5526 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5527 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5528 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5529 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5530 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5531 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.5532 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5534 = private unnamed_addr constant [21 x i8] c"the text to look for\00" +@.str.5535 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5536 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5537 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5538 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5539 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5540 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5541 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" +@.str.5542 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5543 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5544 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" +@.str.5545 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5546 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5547 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" +@.str.5548 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5549 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" +@.str.5550 = private unnamed_addr constant [10 x i8] c"call i32 \00" +@.str.5551 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5552 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5553 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5554 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str.5555 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str.5556 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5557 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.5558 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.5559 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.5560 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" +@.str.5561 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str.5562 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5563 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5564 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5565 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5566 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5567 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5568 = private unnamed_addr constant [20 x i8] c"the text to replace\00" +@.str.5569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5570 = private unnamed_addr constant [13 x i8] c"the new text\00" +@.str.5571 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" +@.str.5572 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5573 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5574 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5575 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5576 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5577 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5578 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5579 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5580 = private unnamed_addr constant [14 x i8] c"the separator\00" +@.str.5581 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" +@.str.5582 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5583 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5584 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5585 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5586 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5587 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5589 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5591 = private unnamed_addr constant [10 x i8] c"the count\00" +@.str.5592 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" +@.str.5593 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5594 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str.5595 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5596 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5597 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5598 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5599 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" +@.str.5600 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str.5601 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5602 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" +@.str.5603 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5604 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" +@.str.5605 = private unnamed_addr constant [107 x i8] c"' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)\00" +@.str.5606 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" +@.str.5607 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" +@.str.5608 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" +@.str.5609 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" +@.str.5610 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" +@.str.5611 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" +@.str.5612 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" +@.str.5613 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" +@.str.5614 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" +@.str.5615 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" +@.str.5616 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" +@.str.5617 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" +@.str.5618 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" +@.str.5619 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" +@.str.5620 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" +@.str.5621 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" +@.str.5622 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" +@.str.5623 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" +@.str.5624 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" +@.str.5625 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" +@.str.5626 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" +@.str.5627 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" +@.str.5628 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" +@.str.5629 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" +@.str.5630 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" +@.str.5631 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" +@.str.5632 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" +@.str.5633 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" +@.str.5634 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" +@.str.5635 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" +@.str.5636 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" +@.str.5637 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" +@.str.5638 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" +@.str.5639 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" +@.str.5640 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" +@.str.5641 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" +@.str.5642 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" +@.str.5643 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" +@.str.5644 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" +@.str.5645 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" +@.str.5646 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" +@.str.5647 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" +@.str.5648 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" +@.str.5649 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" +@.str.5650 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" +@.str.5651 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" +@.str.5652 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" +@.str.5653 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" +@.str.5654 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" +@.str.5655 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" +@.str.5656 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" +@.str.5657 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" +@.str.5658 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" +@.str.5659 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" +@.str.5660 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" +@.str.5661 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" +@.str.5662 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" +@.str.5663 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" +@.str.5664 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" +@.str.5665 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" +@.str.5666 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" +@.str.5667 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" +@.str.5668 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" +@.str.5669 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" +@.str.5670 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" +@.str.5671 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" +@.str.5672 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" +@.str.5673 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" +@.str.5674 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" +@.str.5675 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" +@.str.5676 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" +@.str.5677 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5678 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5679 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" +@.str.5680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5681 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5682 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" +@.str.5683 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5684 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5685 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" +@.str.5686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5687 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" +@.str.5688 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5689 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" +@.str.5690 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5691 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5692 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5693 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" +@.str.5694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5695 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5696 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5698 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5699 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5700 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5701 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" +@.str.5702 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5703 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5704 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5706 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5707 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" +@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5709 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5710 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" +@.str.5711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5712 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5713 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" +@.str.5714 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" +@.str.5715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5716 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" +@.str.5717 = private unnamed_addr constant [3 x i8] c"\22)\00" +@.str.5718 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" +@.str.5719 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5720 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" +@.str.5721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5722 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" +@.str.5723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5724 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" +@.str.5725 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5726 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5727 = private unnamed_addr constant [5 x i8] c"main\00" +@.str.5728 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5729 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5730 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5731 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5733 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5734 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5735 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5736 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5738 = private unnamed_addr constant [83 x i8] c"a library (--shared) has no main: the program that loads it calls its 'export fn's\00" +@.str.5739 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5740 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" +@.str.5741 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5742 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.5743 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5744 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5745 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5746 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5747 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" +@.str.5748 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5749 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" +@.str.5750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5752 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" +@.str.5753 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5755 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5756 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5758 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" +@.str.5759 = private unnamed_addr constant [11 x i8] c" dllexport\00" +@.str.5760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5761 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5762 = private unnamed_addr constant [7 x i8] c"define\00" +@.str.5763 = private unnamed_addr constant [108 x i8] c" void @finch_module_on_fatal(ptr %handler) {\0Aentry:\0A call void @finch_on_fatal(ptr %handler)\0A ret void\0A}\0A\00" +@.str.5764 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5765 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" +@.str.5766 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5767 = private unnamed_addr constant [6 x i8] c"call \00" +@.str.5768 = private unnamed_addr constant [2 x i8] c" \00" +@.str.5769 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.5770 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5771 = private unnamed_addr constant [134 x i8] c" %args = alloca { ptr, i64, i64 }\0A call void @finch_args(ptr %args, i32 %argc, ptr %argv)\0A %a = load { ptr, i64, i64 }, ptr %args\0A\00" +@.str.5772 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" +@.str.5773 = private unnamed_addr constant [2 x i8] c")\00" +@.str.5774 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str.5775 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5776 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5777 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5778 = private unnamed_addr constant [1 x i8] c"\00" +@.str.5779 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" +@.str.5780 = private unnamed_addr constant [63 x i8] c" %r, 0\0A br i1 %ok, label %main.ok, label %main.bad\0Amain.bad:\0A\00" +@.str.5781 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" +@.str.5782 = private unnamed_addr constant [79 x i8] c" %r, 2\0A %mp = alloca { ptr, i64, i64 }\0A store { ptr, i64, i64 } %m, ptr %mp\0A\00" +@.str.5783 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" +@.str.5784 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5785 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" +@.str.5786 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" +@.str.5787 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5788 = private unnamed_addr constant [6 x i8] c"%r = \00" +@.str.5789 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" +@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" +@.str.5791 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.5792 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str.5793 = private unnamed_addr constant [3 x i8] c" \00" +@.str.5794 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.5795 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str.5796 = private unnamed_addr constant [6 x i8] c"print\00" +@.str.5797 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" +@.str.5798 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" +@.str.5799 = private unnamed_addr constant [6 x i8] c"input\00" +@.str.5800 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" +@.str.5801 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" +@.str.5802 = private unnamed_addr constant [10 x i8] c"read_file\00" +@.str.5803 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" +@.str.5804 = private unnamed_addr constant [122 x i8] c"The whole file as text. Stops the program if it can't be read, unless handled: read_file(p) or { ... }, try read_file(p).\00" +@.str.5805 = private unnamed_addr constant [11 x i8] c"write_file\00" +@.str.5806 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" +@.str.5807 = private unnamed_addr constant [84 x i8] c"Writes (replaces) the file. true if it worked; with or / try, the reason it didn't.\00" +@.str.5808 = private unnamed_addr constant [12 x i8] c"file_exists\00" +@.str.5809 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" +@.str.5810 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" +@.str.5811 = private unnamed_addr constant [12 x i8] c"delete_file\00" +@.str.5812 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" +@.str.5813 = private unnamed_addr constant [74 x i8] c"Deletes the file. true if it worked; with or / try, the reason it didn't.\00" +@.str.5814 = private unnamed_addr constant [6 x i8] c"error\00" +@.str.5815 = private unnamed_addr constant [19 x i8] c"error(str message)\00" +@.str.5816 = private unnamed_addr constant [99 x i8] c"The failure a fallible function returns: return error(\22...\22). The caller handles it with or / try.\00" +@.str.5817 = private unnamed_addr constant [6 x i8] c"shell\00" +@.str.5818 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" +@.str.5819 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" +@.str.5820 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.5821 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" +@.str.5822 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" +@.str.5823 = private unnamed_addr constant [5 x i8] c"addr\00" +@.str.5824 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" +@.str.5825 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" +@.str.5826 = private unnamed_addr constant [4 x i8] c"new\00" +@.str.5827 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" +@.str.5828 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" +@.str.5829 = private unnamed_addr constant [5 x i8] c"free\00" +@.str.5830 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" +@.str.5831 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" +@.str.5832 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5833 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" +@.str.5834 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" +@.str.5835 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5836 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" +@.str.5837 = private unnamed_addr constant [131 x i8] c"Converts to a whole number: cuts off fractions, parses text (stops the program if it isn't a number, unless handled: int(s) or 0).\00" +@.str.5838 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5839 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" +@.str.5840 = private unnamed_addr constant [76 x i8] c"Converts to a decimal number; parses text (int(s) or 0.0 handles bad text).\00" +@.str.5841 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5842 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" +@.str.5843 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" +@.str.5844 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5845 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" +@.str.5846 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" +@.str.5847 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5848 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" +@.str.5849 = private unnamed_addr constant [89 x i8] c"An untyped pointer: from a typed pointer, or from a number (an address or offset for C).\00" +@.str.5850 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5851 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5852 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" +@.str.5853 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5854 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" +@.str.5855 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" +@.str.5856 = private unnamed_addr constant [5 x i8] c"push\00" +@.str.5857 = private unnamed_addr constant [10 x i8] c"push(T x)\00" +@.str.5858 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" +@.str.5859 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str.5860 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" +@.str.5861 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" +@.str.5862 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str.5863 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" +@.str.5864 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" +@.str.5865 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5866 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" +@.str.5867 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" +@.str.5868 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5869 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.5870 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.5871 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str.5872 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" +@.str.5873 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" +@.str.5874 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5875 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" +@.str.5876 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" +@.str.5877 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5878 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" +@.str.5879 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" +@.str.5880 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str.5881 = private unnamed_addr constant [7 x i8] c"sort()\00" +@.str.5882 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" +@.str.5883 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str.5884 = private unnamed_addr constant [10 x i8] c"reverse()\00" +@.str.5885 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" +@.str.5886 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str.5887 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" +@.str.5888 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" +@.str.5889 = private unnamed_addr constant [5 x i8] c"join\00" +@.str.5890 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" +@.str.5891 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" +@.str.5892 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5893 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5894 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" +@.str.5895 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5896 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" +@.str.5897 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" +@.str.5898 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str.5899 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" +@.str.5900 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" +@.str.5901 = private unnamed_addr constant [5 x i8] c"find\00" +@.str.5902 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" +@.str.5903 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" +@.str.5904 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str.5905 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" +@.str.5906 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" +@.str.5907 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str.5908 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" +@.str.5909 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" +@.str.5910 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str.5911 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" +@.str.5912 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" +@.str.5913 = private unnamed_addr constant [6 x i8] c"split\00" +@.str.5914 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" +@.str.5915 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" +@.str.5916 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str.5917 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" +@.str.5918 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" +@.str.5919 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str.5920 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" +@.str.5921 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" +@.str.5922 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str.5923 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" +@.str.5924 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" +@.str.5925 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str.5926 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" +@.str.5927 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" +@.str.5928 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str.5929 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" +@.str.5930 = private unnamed_addr constant [18 x i8] c"The text n times.\00" +@.str.5931 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str.5932 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" +@.str.5933 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" +@.str.5934 = private unnamed_addr constant [4 x i8] c"len\00" +@.str.5935 = private unnamed_addr constant [12 x i8] c".len -> int\00" +@.str.5936 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" +@.str.5937 = private unnamed_addr constant [4 x i8] c"has\00" +@.str.5938 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" +@.str.5939 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" +@.str.5940 = private unnamed_addr constant [4 x i8] c"get\00" +@.str.5941 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" +@.str.5942 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" +@.str.5943 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str.5944 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" +@.str.5945 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" +@.str.5946 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str.5947 = private unnamed_addr constant [8 x i8] c"clear()\00" +@.str.5948 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" +@.str.5949 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str.5950 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" +@.str.5951 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" +@.str.5952 = private unnamed_addr constant [7 x i8] c"values\00" +@.str.5953 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" +@.str.5954 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" +@.str.5955 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str.5956 = private unnamed_addr constant [7 x i8] c"return\00" +@.str.5957 = private unnamed_addr constant [3 x i8] c"if\00" +@.str.5958 = private unnamed_addr constant [5 x i8] c"else\00" +@.str.5959 = private unnamed_addr constant [6 x i8] c"while\00" +@.str.5960 = private unnamed_addr constant [4 x i8] c"for\00" +@.str.5961 = private unnamed_addr constant [3 x i8] c"in\00" +@.str.5962 = private unnamed_addr constant [6 x i8] c"break\00" +@.str.5963 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str.5964 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.5965 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.5966 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.5967 = private unnamed_addr constant [7 x i8] c"import\00" +@.str.5968 = private unnamed_addr constant [5 x i8] c"link\00" +@.str.5969 = private unnamed_addr constant [7 x i8] c"struct\00" +@.str.5970 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str.5971 = private unnamed_addr constant [6 x i8] c"match\00" +@.str.5972 = private unnamed_addr constant [7 x i8] c"export\00" +@.str.5973 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str.5974 = private unnamed_addr constant [3 x i8] c"or\00" +@.str.5975 = private unnamed_addr constant [4 x i8] c"try\00" +@.str.5976 = private unnamed_addr constant [5 x i8] c"self\00" +@.str.5977 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.5978 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.5980 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.5981 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.5982 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.5983 = private unnamed_addr constant [4 x i8] c"map\00" +@.str.5984 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.5985 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.5986 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.5987 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str.5988 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.5989 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.5990 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.5991 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.5992 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.5993 = private unnamed_addr constant [4 x i8] c"f64\00" +@.str.5994 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" +@.str.5995 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" declare ptr @clang_getCString(i64, i64) declare void @clang_disposeString(i64, i64) -@.str.5530 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.5531 = private unnamed_addr constant [23 x i8] c"/tmp/finch_cc_dirs.txt\00" -@.str.5532 = private unnamed_addr constant [27 x i8] c" -E -v -x c /dev/null 2> '\00" -@.str.5533 = private unnamed_addr constant [14 x i8] c"' > /dev/null\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5536 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5538 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5539 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.5540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5541 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.5542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5543 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.5545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5546 = private unnamed_addr constant [9 x i8] c"-isystem\00" -@.str.5547 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.5548 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.5996 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.5997 = private unnamed_addr constant [23 x i8] c"/tmp/finch_cc_dirs.txt\00" +@.str.5998 = private unnamed_addr constant [27 x i8] c" -E -v -x c /dev/null 2> '\00" +@.str.5999 = private unnamed_addr constant [14 x i8] c"' > /dev/null\00" +@.str.6000 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6001 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6002 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6003 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6004 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6005 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" +@.str.6006 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6007 = private unnamed_addr constant [20 x i8] c"End of search list.\00" +@.str.6008 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6009 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" +@.str.6010 = private unnamed_addr constant [12 x i8] c"-iframework\00" +@.str.6011 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6012 = private unnamed_addr constant [9 x i8] c"-isystem\00" +@.str.6013 = private unnamed_addr constant [8 x i8] c"rm -f '\00" +@.str.6014 = private unnamed_addr constant [2 x i8] c"'\00" declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr byval(%S.C.CXType) align 8) declare { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8) -@.str.5549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5550 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5552 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6015 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6016 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6017 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6018 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6019 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" declare { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8) -@.str.5554 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5555 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5556 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5557 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.5558 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.5559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5560 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.5561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6020 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6021 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6022 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6023 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6024 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" +@.str.6025 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6026 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" +@.str.6027 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6028 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" declare void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8) -@.str.5563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5566 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6029 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6030 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6031 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6032 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" declare i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8) -@.str.5567 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5569 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6033 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6034 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6035 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" declare i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8) declare i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8) -@.str.5570 = private unnamed_addr constant [13 x i8] c"is a C union\00" +@.str.6036 = private unnamed_addr constant [13 x i8] c"is a C union\00" declare i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8, ptr, ptr) -@.str.5571 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5572 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.5573 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5574 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5575 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5576 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6037 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6038 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" +@.str.6039 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6040 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6041 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6042 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare void @clang_getCursorType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXCursor) align 8) declare i64 @clang_Cursor_getOffsetOfField(ptr byval(%S.C.CXCursor) align 8) declare i32 @clang_Cursor_isBitField(ptr byval(%S.C.CXCursor) align 8) -@.str.5577 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.5578 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5579 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.5580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5581 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.5582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5583 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.5584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5585 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.5586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5587 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.5588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5589 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.5590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5591 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.5592 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.5593 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5594 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.5595 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.5596 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5597 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.5598 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5599 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5600 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.5601 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5603 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5604 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5605 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"float\00" +@.str.6043 = private unnamed_addr constant [15 x i8] c"has bit fields\00" +@.str.6044 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6045 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6046 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6047 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" +@.str.6048 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6049 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" +@.str.6050 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6051 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6052 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6053 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" +@.str.6054 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6055 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" +@.str.6056 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6057 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" +@.str.6058 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str.6059 = private unnamed_addr constant [3 x i8] c"u8\00" +@.str.6060 = private unnamed_addr constant [4 x i8] c"i16\00" +@.str.6061 = private unnamed_addr constant [4 x i8] c"u16\00" +@.str.6062 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str.6063 = private unnamed_addr constant [4 x i8] c"u32\00" +@.str.6064 = private unnamed_addr constant [4 x i8] c"int\00" +@.str.6065 = private unnamed_addr constant [4 x i8] c"u64\00" +@.str.6066 = private unnamed_addr constant [8 x i8] c"uses a \00" +@.str.6067 = private unnamed_addr constant [12 x i8] c"-bit number\00" +@.str.6068 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6069 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str.6070 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6071 = private unnamed_addr constant [4 x i8] c"f32\00" +@.str.6072 = private unnamed_addr constant [6 x i8] c"float\00" declare void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8) declare i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8) -@.str.5607 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5608 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5609 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5610 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.5611 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5612 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.5613 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.5614 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.5615 = private unnamed_addr constant [2 x i8] c"C\00" +@.str.6073 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6074 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6075 = private unnamed_addr constant [5 x i8] c"void\00" +@.str.6076 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str.6077 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str.6078 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" +@.str.6079 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" +@.str.6080 = private unnamed_addr constant [6 x i8] c"named\00" +@.str.6081 = private unnamed_addr constant [2 x i8] c"C\00" declare void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8) declare i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8) -@.str.5616 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.5617 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" +@.str.6082 = private unnamed_addr constant [17 x i8] c"uses long double\00" +@.str.6083 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" declare { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8) -@.str.5618 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5620 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.5621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5622 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.5623 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5624 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5625 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5626 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5627 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.5628 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5629 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5630 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5631 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" +@.str.6084 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6085 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6086 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6087 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6088 = private unnamed_addr constant [3 x i8] c"0X\00" +@.str.6089 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6090 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6091 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6092 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6093 = private unnamed_addr constant [5 x i8] c"uUlL\00" +@.str.6094 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6095 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6096 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6097 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare void @clang_getCursorExtent(ptr sret(%S.C.CXSourceRange) align 16, ptr byval(%S.C.CXCursor) align 8) declare void @clang_tokenize(ptr, ptr byval(%S.C.CXSourceRange) align 8, ptr, ptr) declare i32 @clang_getTokenKind(ptr byval(%S.C.CXToken) align 8) -@.str.5632 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5633 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" +@.str.6098 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6099 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare { i64, i64 } @clang_getTokenSpelling(ptr, ptr byval(%S.C.CXToken) align 8) -@.str.5634 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5635 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" +@.str.6100 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6101 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.5636 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5637 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5638 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5639 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5640 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5641 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5642 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5643 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5644 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.5645 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5646 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5647 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5648 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5649 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5650 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5651 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5652 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5653 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.5654 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5655 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.5656 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5657 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.5658 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.5659 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5660 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5661 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6102 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6103 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6104 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6105 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6106 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6107 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6108 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" +@.str.6109 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6110 = private unnamed_addr constant [2 x i8] c"-\00" +@.str.6111 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6112 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6113 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6114 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6115 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6116 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6117 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6118 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6119 = private unnamed_addr constant [2 x i8] c"e\00" +@.str.6120 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6121 = private unnamed_addr constant [2 x i8] c"E\00" +@.str.6122 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6123 = private unnamed_addr constant [3 x i8] c"0x\00" +@.str.6124 = private unnamed_addr constant [5 x i8] c"fFlL\00" +@.str.6125 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6126 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6127 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" declare void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXCursor) align 8) -@.str.5662 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5663 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5664 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5665 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5666 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5667 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5668 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5669 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5670 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5671 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5672 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5673 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5674 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5675 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5676 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" +@.str.6128 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6129 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6130 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6131 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6132 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6133 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6134 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6135 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6136 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6137 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6138 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6139 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6140 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6141 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6142 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" declare i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8) -@.str.5677 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.5678 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5679 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5680 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.5681 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5682 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6143 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" +@.str.6144 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6145 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6146 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" +@.str.6147 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6148 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare void @clang_getResultType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8) declare i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8) declare void @clang_getArgType(ptr sret(%S.C.CXType) align 16, ptr byval(%S.C.CXType) align 8, i32) declare i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8) -@.str.5683 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5684 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5685 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5686 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5687 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5688 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6149 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6150 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6151 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6152 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6153 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6154 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8) -@.str.5689 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5690 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5691 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5692 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.5693 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5694 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6155 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6156 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6157 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6158 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" +@.str.6159 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6160 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" declare i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8, ptr, ptr) -@.str.5695 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5696 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6161 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6162 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8) -@.str.5697 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5698 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6163 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6164 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" declare i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8) declare i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8) -@.str.5699 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5700 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5701 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5702 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.5703 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.5704 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.5705 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.5706 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.5707 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.5708 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.5709 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5710 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6165 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6166 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6167 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6168 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6169 = private unnamed_addr constant [3 x i8] c"-x\00" +@.str.6170 = private unnamed_addr constant [2 x i8] c"c\00" +@.str.6171 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" +@.str.6172 = private unnamed_addr constant [10 x i8] c"--target=\00" +@.str.6173 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" +@.str.6174 = private unnamed_addr constant [3 x i8] c"-I\00" +@.str.6175 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6176 = private unnamed_addr constant [1 x i8] c"\00" declare ptr @clang_createIndex(i32, i32) -@.str.5711 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.5713 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.5714 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5715 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5716 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.5717 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6177 = private unnamed_addr constant [11 x i8] c"#include \22\00" +@.str.6178 = private unnamed_addr constant [3 x i8] c"\22\0A\00" +@.str.6179 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6180 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6181 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6182 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" +@.str.6183 = private unnamed_addr constant [1 x i8] c"\00" declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.5718 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.5719 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6184 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" +@.str.6185 = private unnamed_addr constant [2 x i8] c"'\00" declare i32 @clang_getNumDiagnostics(ptr) declare ptr @clang_getDiagnostic(ptr, i32) declare i32 @clang_getDiagnosticSeverity(ptr) declare { i64, i64 } @clang_getDiagnosticSpelling(ptr) declare void @clang_disposeDiagnostic(ptr) -@.str.5720 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5721 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.5722 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5723 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5724 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.5725 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5726 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.5727 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5728 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.5729 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.5730 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.5731 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.5732 = private unnamed_addr constant [17 x i8] c"' has an error: \00" +@.str.6186 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6187 = private unnamed_addr constant [15 x i8] c"file not found\00" +@.str.6188 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6189 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6190 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" +@.str.6191 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6192 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6193 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6194 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" +@.str.6195 = private unnamed_addr constant [11 x i8] c"', which '\00" +@.str.6196 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" +@.str.6197 = private unnamed_addr constant [20 x i8] c": error: C header '\00" +@.str.6198 = private unnamed_addr constant [17 x i8] c"' has an error: \00" declare void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16, ptr) declare void @clang_disposeTranslationUnit(ptr) declare void @clang_disposeIndex(ptr) -@.str.5733 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5734 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5735 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5736 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5737 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5738 = private unnamed_addr constant [22 x i8] c"/tmp/finch_triple.txt\00" -@.str.5739 = private unnamed_addr constant [23 x i8] c"clang -dumpmachine > '\00" -@.str.5740 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" -@.str.5741 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5742 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.5743 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5744 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5745 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.5746 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.5747 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.5748 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.5749 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.5750 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.5751 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.5753 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.5754 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.5755 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5756 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.5757 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5758 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.5759 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.5760 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.5761 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5762 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.5763 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5764 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.5765 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5766 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.5767 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5768 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.5769 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5770 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.5771 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5772 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.5773 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5774 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.5775 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5776 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.5777 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5778 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.5779 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5780 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.5781 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5782 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.5783 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5784 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.5785 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5786 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.5787 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.5788 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.5789 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5790 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.5791 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.5792 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5793 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.5794 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.5795 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.5796 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.5797 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.5798 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.5799 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.5800 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5801 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5802 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5804 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5805 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.5806 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5807 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.5808 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5809 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.5810 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.5811 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5812 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.5813 = private unnamed_addr constant [17 x i8] c"/tmp/finch-cache\00" -@.str.5814 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5815 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.5817 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5818 = private unnamed_addr constant [25 x i8] c"/tmp/finch_pkg_flags.txt\00" -@.str.5819 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.5820 = private unnamed_addr constant [5 x i8] c" > '\00" -@.str.5821 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" -@.str.5822 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5823 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5824 = private unnamed_addr constant [8 x i8] c"rm -f '\00" -@.str.5825 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5826 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.5827 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5828 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.5829 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5830 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5831 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.5832 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5833 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5834 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5835 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5837 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5838 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5839 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5840 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5841 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5842 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5843 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5844 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5845 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5846 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5847 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5848 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.5849 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.5850 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5851 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5852 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.5853 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.5854 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.5855 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5856 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.5857 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.5858 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.5859 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5860 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.5861 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.5862 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.5863 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5864 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.5865 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.5866 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.5867 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5868 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.5869 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.5870 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5871 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5872 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.5873 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5874 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.5875 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.5876 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5877 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.5878 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5879 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.5880 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5881 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.5882 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5883 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5884 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.5885 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5886 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.5887 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5888 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.5889 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5890 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5891 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5892 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.5893 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.5894 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5895 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5896 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5899 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5900 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5901 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5903 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.5904 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.5905 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5906 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.5907 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5908 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5909 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5910 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.5911 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.5912 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5914 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.5915 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5916 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.5917 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5918 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5920 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.5921 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5922 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5923 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5924 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.5925 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5926 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5927 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5929 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5930 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5931 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5932 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.5933 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.5934 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.5935 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5936 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5937 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5938 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5939 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5940 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5941 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5942 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.5943 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.5944 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.5945 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.5946 = private unnamed_addr constant [6 x i8] c".part\00" +@.str.6199 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6200 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6201 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6202 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6203 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6204 = private unnamed_addr constant [22 x i8] c"/tmp/finch_triple.txt\00" +@.str.6205 = private unnamed_addr constant [23 x i8] c"clang -dumpmachine > '\00" +@.str.6206 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" +@.str.6207 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6208 = private unnamed_addr constant [8 x i8] c"rm -f '\00" +@.str.6209 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6210 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6211 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6212 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6213 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" +@.str.6214 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str.6215 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" +@.str.6216 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6217 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6218 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" +@.str.6219 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" +@.str.6220 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6221 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6222 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6223 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6224 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6225 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" +@.str.6226 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" +@.str.6227 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6228 = private unnamed_addr constant [8 x i8] c"windows\00" +@.str.6229 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6230 = private unnamed_addr constant [6 x i8] c"mingw\00" +@.str.6231 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6232 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6233 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6234 = private unnamed_addr constant [6 x i8] c"win32\00" +@.str.6235 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6236 = private unnamed_addr constant [5 x i8] c"msvc\00" +@.str.6237 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6238 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6239 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6240 = private unnamed_addr constant [7 x i8] c"darwin\00" +@.str.6241 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6242 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str.6243 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6244 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6245 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6246 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6247 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6248 = private unnamed_addr constant [8 x i8] c"aarch64\00" +@.str.6249 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6250 = private unnamed_addr constant [6 x i8] c"arm64\00" +@.str.6251 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6252 = private unnamed_addr constant [6 x i8] c"apple\00" +@.str.6253 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" +@.str.6254 = private unnamed_addr constant [7 x i8] c"darwin\00" +@.str.6255 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6256 = private unnamed_addr constant [5 x i8] c".exe\00" +@.str.6257 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6258 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6259 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" +@.str.6260 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" +@.str.6261 = private unnamed_addr constant [16 x i8] c"clang --target=\00" +@.str.6262 = private unnamed_addr constant [3 x i8] c"cc\00" +@.str.6263 = private unnamed_addr constant [6 x i8] c"wine \00" +@.str.6264 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" +@.str.6265 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.6266 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6267 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6268 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6269 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6270 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6271 = private unnamed_addr constant [5 x i8] c"'\5C''\00" +@.str.6272 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6273 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" +@.str.6274 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6275 = private unnamed_addr constant [7 x i8] c"/finch\00" +@.str.6276 = private unnamed_addr constant [5 x i8] c"HOME\00" +@.str.6277 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6278 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" +@.str.6279 = private unnamed_addr constant [17 x i8] c"/tmp/finch-cache\00" +@.str.6280 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6281 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6282 = private unnamed_addr constant [12 x i8] c"-framework \00" +@.str.6283 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6284 = private unnamed_addr constant [25 x i8] c"/tmp/finch_pkg_flags.txt\00" +@.str.6285 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" +@.str.6286 = private unnamed_addr constant [5 x i8] c" > '\00" +@.str.6287 = private unnamed_addr constant [15 x i8] c"' 2> /dev/null\00" +@.str.6288 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6289 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6290 = private unnamed_addr constant [8 x i8] c"rm -f '\00" +@.str.6291 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6292 = private unnamed_addr constant [3 x i8] c"-l\00" +@.str.6293 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6294 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6295 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6296 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6297 = private unnamed_addr constant [2 x i8] c"/\00" +@.str.6298 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6299 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6300 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6301 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6302 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6303 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6304 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6305 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6306 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6307 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6308 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6309 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6310 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6311 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6312 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6313 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6314 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6315 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" +@.str.6316 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6317 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6318 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6319 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" +@.str.6320 = private unnamed_addr constant [3 x i8] c" \0A\00" +@.str.6321 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6322 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6323 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" +@.str.6324 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" +@.str.6325 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6326 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6327 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" +@.str.6328 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6329 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6330 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6331 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" +@.str.6332 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" +@.str.6333 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6334 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6335 = private unnamed_addr constant [14 x i8] c"ld: library '\00" +@.str.6336 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6337 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6338 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6339 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6340 = private unnamed_addr constant [10 x i8] c"not found\00" +@.str.6341 = private unnamed_addr constant [12 x i8] c"framework '\00" +@.str.6342 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6343 = private unnamed_addr constant [11 x i8] c".framework\00" +@.str.6344 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6345 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6346 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6347 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6348 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6349 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6350 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" +@.str.6351 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6352 = private unnamed_addr constant [2 x i8] c"_\00" +@.str.6353 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6354 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" +@.str.6355 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6356 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6357 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6358 = private unnamed_addr constant [21 x i8] c"error: the library '\00" +@.str.6359 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" +@.str.6360 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6361 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6362 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6363 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6364 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6365 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6366 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6367 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6368 = private unnamed_addr constant [3 x i8] c", \00" +@.str.6369 = private unnamed_addr constant [6 x i8] c" and \00" +@.str.6370 = private unnamed_addr constant [6 x i8] c" more\00" +@.str.6371 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6372 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" +@.str.6373 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6374 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6375 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6376 = private unnamed_addr constant [5 x i8] c"come\00" +@.str.6377 = private unnamed_addr constant [6 x i8] c"comes\00" +@.str.6378 = private unnamed_addr constant [8 x i8] c"error: \00" +@.str.6379 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6380 = private unnamed_addr constant [8 x i8] c" from \22\00" +@.str.6381 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6382 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" +@.str.6383 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6384 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6385 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6386 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" +@.str.6387 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6388 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6389 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6390 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" +@.str.6391 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6392 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6393 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6394 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6395 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6396 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6397 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6398 = private unnamed_addr constant [13 x i8] c" link \22\00" +@.str.6399 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6400 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6401 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6402 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6403 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6404 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6405 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6406 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6407 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6408 = private unnamed_addr constant [5 x i8] c"/rt-\00" +@.str.6409 = private unnamed_addr constant [4 x i8] c"2.5\00" +@.str.6410 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6411 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" +@.str.6412 = private unnamed_addr constant [6 x i8] c".part\00" declare i32 @getpid() -@.str.5947 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.5948 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5949 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.5950 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.5951 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.5952 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.5953 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.5954 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.5955 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5956 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.5957 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5958 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.5959 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.5960 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.5961 = private unnamed_addr constant [8 x i8] c" && mv \00" -@.str.5962 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5963 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.5964 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5965 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.5966 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.5967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5968 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.5969 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5970 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5971 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5972 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5973 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.5974 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.5975 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5976 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.5977 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.5978 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5979 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.5980 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.5981 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.5982 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.5983 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.5984 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5985 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5986 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5987 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5988 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.5989 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5990 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.5991 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.5992 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.5993 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5995 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5996 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.5997 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.5998 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.5999 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6000 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6001 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6002 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6003 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6004 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6005 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6006 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6007 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6008 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6009 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6010 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6011 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6012 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6014 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6015 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6016 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6017 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6018 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6019 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6020 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6021 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6022 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6023 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6024 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6025 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6026 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6027 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6028 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6029 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6030 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6031 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str.6032 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6033 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6034 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6035 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6036 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6037 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6038 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6039 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6413 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6414 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6415 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6416 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6417 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6418 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6419 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6420 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6421 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6422 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6423 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6424 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" +@.str.6425 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" +@.str.6426 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6427 = private unnamed_addr constant [8 x i8] c" && mv \00" +@.str.6428 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6429 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" +@.str.6430 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6431 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str.6432 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6433 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6434 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" +@.str.6435 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6436 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6437 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6438 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6439 = private unnamed_addr constant [4 x i8] c".ll\00" +@.str.6440 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6441 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6442 = private unnamed_addr constant [11 x i8] c" --target=\00" +@.str.6443 = private unnamed_addr constant [5 x i8] c".log\00" +@.str.6444 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6445 = private unnamed_addr constant [8 x i8] c" -w -c \00" +@.str.6446 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6447 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6448 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6449 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6450 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6451 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6452 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6453 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6454 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" +@.str.6455 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6456 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6457 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6458 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6459 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6460 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6461 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6462 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6463 = private unnamed_addr constant [5 x i8] c" -lm\00" +@.str.6464 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" +@.str.6465 = private unnamed_addr constant [9 x i8] c" -shared\00" +@.str.6466 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6467 = private unnamed_addr constant [3 x i8] c".c\00" +@.str.6468 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6469 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6470 = private unnamed_addr constant [7 x i8] c" -fPIC\00" +@.str.6471 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6472 = private unnamed_addr constant [5 x i8] c" -O2\00" +@.str.6473 = private unnamed_addr constant [5 x i8] c" -c \00" +@.str.6474 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str.6475 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6476 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6477 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6478 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" +@.str.6479 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6480 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6481 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6482 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6483 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6484 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6485 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6486 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6487 = private unnamed_addr constant [3 x i8] c".o\00" +@.str.6488 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" +@.str.6489 = private unnamed_addr constant [3 x i8] c".a\00" +@.str.6490 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6491 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6492 = private unnamed_addr constant [4 x i8] c" > \00" +@.str.6493 = private unnamed_addr constant [6 x i8] c" 2>&1\00" +@.str.6494 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6495 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6496 = private unnamed_addr constant [2 x i8] c" \00" +@.str.6497 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str.6498 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" +@.str.6499 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" +@.str.6500 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6501 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6502 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6503 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6504 = private unnamed_addr constant [5 x i8] c"%.*s\00" +@.str.6505 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6506 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6507 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6508 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6509 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6510 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6511 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6512 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6513 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6514 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6515 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" +@.str.6516 = private unnamed_addr constant [8 x i8] c"file://\00" +@.str.6517 = private unnamed_addr constant [6 x i8] c"/-_.~\00" +@.str.6518 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6519 = private unnamed_addr constant [2 x i8] c"%\00" +@.str.6520 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6521 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6522 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6523 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6524 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6525 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6526 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6527 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6528 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6529 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6530 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6531 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6532 = private unnamed_addr constant [1 x i8] c"\00" +declare i32 @getchar() +@.str.6533 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6534 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6535 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.6536 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@stdin = external global ptr +declare i32 @feof(ptr) +@.str.6537 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" +@.str.6538 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6539 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" +@.str.6540 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6541 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6542 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" +@.str.6543 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" +@.str.6544 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" +@.str.6545 = private unnamed_addr constant [1 x i8] c"\00" +@stdout = external global ptr +declare i64 @fwrite(ptr, i64, i64, ptr) +@.str.6546 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6547 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6548 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6549 = private unnamed_addr constant [7 x i8] c"result\00" +@.str.6550 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" +@.str.6551 = private unnamed_addr constant [4 x i8] c"2.0\00" +@.str.6552 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6553 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6554 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6555 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6556 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6557 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6558 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6559 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.6560 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6561 = private unnamed_addr constant [10 x i8] c": error: \00" +@.str.6562 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6563 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6564 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6565 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6566 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6567 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6568 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6569 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6570 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6571 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6572 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6573 = private unnamed_addr constant [2 x i8] c"@\00" +@.str.6574 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6575 = private unnamed_addr constant [3 x i8] c"@R\00" +@.str.6576 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6577 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6578 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6579 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6580 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6581 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6582 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6583 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6584 = private unnamed_addr constant [3 x i8] c"@V\00" +@.str.6585 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6586 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6587 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6588 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6589 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6590 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6591 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6592 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6593 = private unnamed_addr constant [3 x i8] c"@F\00" +@.str.6594 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6595 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6596 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6597 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6598 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6599 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6600 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6601 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6602 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6603 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6604 = private unnamed_addr constant [2 x i8] c"|\00" +@.str.6605 = private unnamed_addr constant [3 x i8] c"@S\00" +@.str.6606 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6607 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6608 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6609 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6610 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6611 = private unnamed_addr constant [4 x i8] c"@SF\00" +@.str.6612 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6613 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6614 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6615 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6616 = private unnamed_addr constant [3 x i8] c"@E\00" +@.str.6617 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6618 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6619 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6620 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6621 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6622 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6623 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6624 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6625 = private unnamed_addr constant [3 x i8] c"@I\00" +@.str.6626 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6627 = private unnamed_addr constant [11 x i8] c"mkdir -p '\00" +@.str.6628 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6629 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6630 = private unnamed_addr constant [5 x i8] c"/doc\00" +@.str.6631 = private unnamed_addr constant [5 x i8] c".fch\00" +@.str.6632 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6633 = private unnamed_addr constant [13 x i8] c" --overlay '\00" +@.str.6634 = private unnamed_addr constant [2 x i8] c"=\00" +@.str.6635 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6636 = private unnamed_addr constant [9 x i8] c"/out.txt\00" +@.str.6637 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6638 = private unnamed_addr constant [10 x i8] c"' index '\00" +@.str.6639 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6640 = private unnamed_addr constant [5 x i8] c" > '\00" +@.str.6641 = private unnamed_addr constant [7 x i8] c"' 2>&1\00" +@.str.6642 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6643 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6644 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6645 = private unnamed_addr constant [9 x i8] c"severity\00" +@.str.6646 = private unnamed_addr constant [7 x i8] c"source\00" +@.str.6647 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6648 = private unnamed_addr constant [8 x i8] c"message\00" +@.str.6649 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6650 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6651 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6652 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6653 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6654 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6655 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6656 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6657 = private unnamed_addr constant [9 x i8] c"contents\00" +@.str.6658 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6659 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6660 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6661 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6662 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6663 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6664 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6665 = private unnamed_addr constant [6 x i8] c"start\00" +@.str.6666 = private unnamed_addr constant [4 x i8] c"end\00" +@.str.6667 = private unnamed_addr constant [6 x i8] c"range\00" +@.str.6668 = private unnamed_addr constant [15 x i8] c"selectionRange\00" +@.str.6669 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6670 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6671 = private unnamed_addr constant [7 x i8] c"detail\00" +@.str.6672 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str.6673 = private unnamed_addr constant [9 x i8] c"markdown\00" +@.str.6674 = private unnamed_addr constant [6 x i8] c"value\00" +@.str.6675 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6676 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6677 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6678 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6679 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" +@.str.6680 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6681 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6682 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6683 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6684 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6685 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6686 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6687 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6688 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6689 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6690 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6691 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6692 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6693 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6694 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6695 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6696 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6697 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6698 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6699 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6700 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6701 = private unnamed_addr constant [5 x i8] c"char\00" +@.str.6702 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6703 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6704 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6705 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6706 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6707 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6708 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6709 = private unnamed_addr constant [4 x i8] c"str\00" +@.str.6710 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6711 = private unnamed_addr constant [5 x i8] c"map[\00" +@.str.6712 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6713 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6714 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6715 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6716 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6717 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6718 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6719 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6720 = private unnamed_addr constant [8 x i8] c"struct \00" +@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6722 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6723 = private unnamed_addr constant [6 x i8] c"enum \00" +@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6725 = private unnamed_addr constant [7 x i8] c"module\00" +@.str.6726 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6727 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6728 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6729 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6730 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6731 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" +@.str.6732 = private unnamed_addr constant [6 x i8] c"items\00" +@.str.6733 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6734 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6735 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6736 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6737 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6738 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6739 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6740 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6741 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6742 = private unnamed_addr constant [5 x i8] c"ptr[\00" +@.str.6743 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6744 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6745 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6746 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6747 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6748 = private unnamed_addr constant [11 x i8] c"parameters\00" +@.str.6749 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6750 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6751 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6752 = private unnamed_addr constant [6 x i8] c"label\00" +@.str.6753 = private unnamed_addr constant [14 x i8] c"documentation\00" +@.str.6754 = private unnamed_addr constant [11 x i8] c"signatures\00" +@.str.6755 = private unnamed_addr constant [16 x i8] c"activeSignature\00" +@.str.6756 = private unnamed_addr constant [16 x i8] c"activeParameter\00" +@.str.6757 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6758 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6759 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6760 = private unnamed_addr constant [13 x i8] c"textDocument\00" +@.str.6761 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6762 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6763 = private unnamed_addr constant [7 x i8] c"method\00" +@.str.6764 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6765 = private unnamed_addr constant [7 x i8] c"params\00" +@.str.6766 = private unnamed_addr constant [3 x i8] c"id\00" +@.str.6767 = private unnamed_addr constant [11 x i8] c"initialize\00" +@.str.6768 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" +@.str.6769 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" +@.str.6770 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" +@.str.6771 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" +@.str.6772 = private unnamed_addr constant [2 x i8] c".\00" +@.str.6773 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6774 = private unnamed_addr constant [19 x i8] c"completionProvider\00" +@.str.6775 = private unnamed_addr constant [2 x i8] c"(\00" +@.str.6776 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6777 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" +@.str.6778 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" +@.str.6779 = private unnamed_addr constant [13 x i8] c"capabilities\00" +@.str.6780 = private unnamed_addr constant [5 x i8] c"name\00" +@.str.6781 = private unnamed_addr constant [6 x i8] c"finch\00" +@.str.6782 = private unnamed_addr constant [11 x i8] c"serverInfo\00" +@.str.6783 = private unnamed_addr constant [9 x i8] c"shutdown\00" +@.str.6784 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str.6785 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" +@.str.6786 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" +@.str.6787 = private unnamed_addr constant [15 x i8] c"contentChanges\00" +@.str.6788 = private unnamed_addr constant [5 x i8] c"text\00" +@.str.6789 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6790 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" +@.str.6791 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" +@.str.6792 = private unnamed_addr constant [4 x i8] c"uri\00" +@.str.6793 = private unnamed_addr constant [12 x i8] c"diagnostics\00" +@.str.6794 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" +@.str.6795 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.6796 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.6797 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.6798 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.6799 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" +@.str.6800 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.6801 = private unnamed_addr constant [5 x i8] c"line\00" +@.str.6802 = private unnamed_addr constant [9 x i8] c"position\00" +@.str.6803 = private unnamed_addr constant [10 x i8] c"character\00" +@.str.6804 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6805 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6806 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" +@.str.6807 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" +@.str.6808 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" +@.str.6809 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" +@.str.6810 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" +@.str.6811 = private unnamed_addr constant [16 x i8] c"/tmp/finch_lsp_\00" +@.str.6812 = private unnamed_addr constant [9 x i8] c"rm -rf '\00" +@.str.6813 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6814 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6815 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6816 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6817 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6818 = private unnamed_addr constant [3 x i8] c"\5C\22\00" +@.str.6819 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" +@.str.6820 = private unnamed_addr constant [3 x i8] c"\5Cn\00" +@.str.6821 = private unnamed_addr constant [3 x i8] c"\5Cr\00" +@.str.6822 = private unnamed_addr constant [3 x i8] c"\5Ct\00" +@.str.6823 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" +@.str.6824 = private unnamed_addr constant [2 x i8] c"\22\00" +@.str.6825 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6826 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" +@.str.6827 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6829 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6830 = private unnamed_addr constant [2 x i8] c",\00" +@.str.6831 = private unnamed_addr constant [2 x i8] c":\00" +@.str.6832 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.6833 = private unnamed_addr constant [3 x i8] c": \00" +@.str.6834 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6835 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6836 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.6837 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6838 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6839 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.6840 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6841 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6842 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.6843 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6844 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6845 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6846 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6847 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6848 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6849 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str.6850 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6851 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6852 = private unnamed_addr constant [2 x i8] c"[\00" +@.str.6853 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6854 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6855 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6856 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6857 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6858 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6859 = private unnamed_addr constant [2 x i8] c"]\00" +@.str.6860 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6861 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6862 = private unnamed_addr constant [3 x i8] c"{}\00" +@.str.6863 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6864 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6865 = private unnamed_addr constant [2 x i8] c"{\00" +@.str.6866 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6867 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6868 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6869 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6870 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6871 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6872 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" +@.str.6873 = private unnamed_addr constant [2 x i8] c"}\00" +@.str.6874 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6875 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" +@.str.6876 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6877 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6878 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6879 = private unnamed_addr constant [3 x i8] c" \00" +@.str.6880 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6881 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6882 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6883 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6884 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6885 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6886 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6887 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6888 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6889 = private unnamed_addr constant [6 x i8] c"line \00" +@.str.6890 = private unnamed_addr constant [10 x i8] c", column \00" +@.str.6891 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6892 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6893 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6894 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6895 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6896 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6897 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6898 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6899 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6900 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6901 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6902 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6903 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6904 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6905 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6906 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6907 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6908 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6909 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6910 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6911 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6912 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6913 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6914 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6915 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6916 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6917 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6918 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6919 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6920 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6921 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6922 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6923 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6924 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6925 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6926 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6927 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6928 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6929 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6930 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" +@.str.6931 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.6932 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6933 = private unnamed_addr constant [14 x i8] c"json: found '\00" +@.str.6934 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6935 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6936 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6937 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6938 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6939 = private unnamed_addr constant [9 x i8] c"' where \00" +@.str.6940 = private unnamed_addr constant [13 x i8] c" should be (\00" +@.str.6941 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6942 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6943 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6944 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6945 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6946 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6947 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6948 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6949 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6950 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6951 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6952 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6953 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6954 = private unnamed_addr constant [2 x i8] c"'\00" +@.str.6955 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6956 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6957 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6958 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6959 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6960 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6961 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6962 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6963 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6964 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6965 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6966 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" +@.str.6967 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6968 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6969 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6970 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6971 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6972 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6973 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6974 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6975 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6976 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6977 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6978 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6979 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6980 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6981 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6982 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" +@.str.6983 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6984 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6985 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6986 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6987 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6988 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6989 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6990 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.6991 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6992 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6993 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6994 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.6995 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.6996 = private unnamed_addr constant [1 x i8] c"\00" +@.str.6997 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" +@.str.6998 = private unnamed_addr constant [2 x i8] c")\00" +@.str.6999 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7000 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7001 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7002 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7003 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7004 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7005 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7006 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7007 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7008 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7009 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7010 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str.7011 = private unnamed_addr constant [2 x i8] c"\09\00" +@.str.7012 = private unnamed_addr constant [2 x i8] c"\0D\00" +@.str.7013 = private unnamed_addr constant [3 x i8] c"\5Cu\00" +@.str.7014 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7015 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7016 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" +@.str.7017 = private unnamed_addr constant [13 x i8] c" in a text (\00" +@.str.7018 = private unnamed_addr constant [2 x i8] c")\00" +@.str.7019 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7020 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7021 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7022 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7023 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7024 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7025 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7026 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7027 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7028 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7029 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7030 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7031 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7032 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7033 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7034 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7035 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7036 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7037 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7038 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7039 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7040 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7041 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7042 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7043 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7044 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7045 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7046 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7047 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7048 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7049 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7050 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7051 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7052 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7053 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7054 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7055 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7056 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7057 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7058 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7059 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7060 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7061 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7062 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7063 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7064 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7065 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7066 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7067 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7068 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7069 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7070 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7071 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7072 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7073 = private unnamed_addr constant [9 x i8] c"a number\00" +@.str.7074 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7075 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7076 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7077 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" +@.str.7078 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7079 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7080 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7081 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7082 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7083 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" +@.str.7084 = private unnamed_addr constant [4 x i8] c"':'\00" +@.str.7085 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7086 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7087 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7088 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7089 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7090 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7091 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" +@.str.7092 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7093 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7094 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7095 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7096 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7097 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7098 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" +@.str.7099 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" +@.str.7100 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" +@.str.7101 = private unnamed_addr constant [5 x i8] c"true\00" +@.str.7102 = private unnamed_addr constant [6 x i8] c"false\00" +@.str.7103 = private unnamed_addr constant [5 x i8] c"null\00" +@.str.7104 = private unnamed_addr constant [8 x i8] c"a value\00" +@.str.7105 = private unnamed_addr constant [20 x i8] c"the end of the text\00" declare void @finch_panic(ptr, i64, ptr) noreturn cold declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold @@ -6267,7 +7356,7 @@ logic.rhs5: %t11 = icmp uge i64 %t8, %t10 br i1 %t11, label %range7, label %inrange8 range7: - call void @finch_panic_index(ptr @.str.1, i64 19, i64 %t8, i64 %t10) + call void @finch_panic_index(ptr @.str.1, i64 20, i64 %t8, i64 %t10) unreachable inrange8: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 @@ -6295,7 +7384,7 @@ endif12: %t21 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t21, ptr %a22 %t24 = load i64, ptr %a5 - call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.3, i64 25) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.3, i64 26) %t25 = load { ptr, i64, i64 }, ptr %a23 ret { ptr, i64, i64 } %t25 } @@ -6330,7 +7419,7 @@ entry: %t8 = add i64 %t7, 1 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t10 = load i64, ptr %t9 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t8, i64 %t10, ptr @.str.4, i64 29) + call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t8, i64 %t10, ptr @.str.4, i64 30) %t11 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t11, ptr %a12 %t13 = load { ptr, i64, i64 }, ptr %a1 @@ -6375,7 +7464,7 @@ then20: %t39 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t39, ptr %a40 %t42 = load i64, ptr %a36 - call void @finch_str_sub(ptr %a41, ptr %a40, i64 0, i64 %t42, ptr @.str.10, i64 35) + call void @finch_str_sub(ptr %a41, ptr %a40, i64 0, i64 %t42, ptr @.str.10, i64 36) %t43 = load { ptr, i64, i64 }, ptr %a41 ret { ptr, i64, i64 } %t43 endif22: @@ -6386,6 +7475,94 @@ endif22: ret { ptr, i64, i64 } %t47 } +define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a11 = alloca i64, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic23, label %ok24 +panic23: + call void @finch_panic(ptr @.str.11, i64 53, ptr @.str.12) + unreachable +ok24: + %t5 = getelementptr inbounds %S.main.Loader, ptr %t3, i32 0, i32 6 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a8 + %t9 = load i64, ptr %t6 + %t10 = load ptr, ptr %t5 + store i64 0, ptr %a11 + br label %find.cond25 +find.cond25: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t9 + br i1 %t13, label %find.body26, label %find.end29 +find.body26: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } %t7, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %find.hit27, label %find.next28 +find.hit27: + store i64 %t12, ptr %a8 + br label %find.end29 +find.next28: + %t20 = add i64 %t12, 1 + store i64 %t20, ptr %a11 + br label %find.cond25 +find.end29: + %t21 = load i64, ptr %a8 + store i64 %t21, ptr %a22 + %t23 = load i64, ptr %a22 + %t24 = icmp sge i64 %t23, 0 + br i1 %t24, label %then30, label %endif32 +then30: + %t25 = load ptr, ptr %a1 + %t26 = icmp eq ptr %t25, null + br i1 %t26, label %panic33, label %ok34 +panic33: + call void @finch_panic(ptr @.str.13, i64 55, ptr @.str.14) + unreachable +ok34: + %t27 = getelementptr inbounds %S.main.Loader, ptr %t25, i32 0, i32 7 + %t28 = load i64, ptr %a22 + %t29 = load { ptr, i64, i64 }, ptr %t27 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range35, label %inrange36 +range35: + call void @finch_panic_index(ptr @.str.15, i64 55, i64 %t28, i64 %t30) + unreachable +inrange36: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a35 + call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 55) + %t37 = load { ptr, i64, i64 }, ptr %a36 + ret { ptr, i64, i64 } %t37 +endif32: + %t38 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t38, ptr %a39 + call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 57) + %t41 = load { ptr, i64, i64 }, ptr %a40 + ret { ptr, i64, i64 } %t41 +} + define internal { ptr, i64, i64 } @finch.main.findModule(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { entry: %a1 = alloca ptr, align 16 @@ -6545,7 +7722,7 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %a2 %t5 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t4) store { ptr, i64, i64 } %t5, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.11, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.18, i64 1, i64 0 }, ptr %a8 call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) %t9 = load { ptr, i64, i64 }, ptr %a6 %t10 = load { ptr, i64, i64 }, ptr %a3 @@ -6554,14 +7731,14 @@ entry: call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.12, i64 4, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t18, ptr %a19 %t20 = load { ptr, i64, i64 }, ptr %a2 %t21 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t20) store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.13, i64 1, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load { ptr, i64, i64 }, ptr %a3 @@ -6570,16 +7747,16 @@ entry: call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.14, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic23, label %ok24 -panic23: - call void @finch_panic(ptr @.str.15, i64 54, ptr @.str.16) + br i1 %t36, label %panic37, label %ok38 +panic37: + call void @finch_panic(ptr @.str.22, i64 65, ptr @.str.23) unreachable -ok24: +ok38: %t37 = getelementptr inbounds %S.main.Loader, ptr %t35, i32 0, i32 3 %t38 = load { ptr, i64, i64 }, ptr %t37 store { ptr, i64, i64 } %t34, ptr %a40 @@ -6587,18 +7764,18 @@ ok24: call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.17, i64 4, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a47 %t48 = call i32 @finch_file_exists(ptr %a47) %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then25, label %endif27 -then25: + br i1 %t49, label %then39, label %endif41 +then39: %t50 = load { ptr, i64, i64 }, ptr %a2 %t51 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t50) store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.18, i64 1, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a54 call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) %t55 = load { ptr, i64, i64 }, ptr %a52 %t56 = load { ptr, i64, i64 }, ptr %a3 @@ -6607,16 +7784,16 @@ then25: call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) %t60 = load { ptr, i64, i64 }, ptr %a57 store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.19, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a63 call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) %t64 = load { ptr, i64, i64 }, ptr %a61 %t65 = load ptr, ptr %a1 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic28, label %ok29 -panic28: - call void @finch_panic(ptr @.str.20, i64 55, ptr @.str.21) + br i1 %t66, label %panic42, label %ok43 +panic42: + call void @finch_panic(ptr @.str.27, i64 66, ptr @.str.28) unreachable -ok29: +ok43: %t67 = getelementptr inbounds %S.main.Loader, ptr %t65, i32 0, i32 3 %t68 = load { ptr, i64, i64 }, ptr %t67 store { ptr, i64, i64 } %t64, ptr %a70 @@ -6624,47 +7801,47 @@ ok29: call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.22, i64 4, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 ret { ptr, i64, i64 } %t76 -endif27: +endif41: %t77 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t77, ptr %a78 %t79 = call i32 @finch_file_exists(ptr %a78) %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %then30, label %endif32 -then30: + br i1 %t80, label %then44, label %endif46 +then44: %t81 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t81, ptr %a82 call void @finch_str_copy(ptr %a83, ptr %a82) %t84 = load { ptr, i64, i64 }, ptr %a83 ret { ptr, i64, i64 } %t84 -endif32: +endif46: %t85 = load ptr, ptr %a1 %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic33, label %ok34 -panic33: - call void @finch_panic(ptr @.str.23, i64 60, ptr @.str.24) + br i1 %t86, label %panic47, label %ok48 +panic47: + call void @finch_panic(ptr @.str.30, i64 71, ptr @.str.31) unreachable -ok34: +ok48: %t87 = getelementptr inbounds %S.main.Loader, ptr %t85, i32 0, i32 5 store i64 0, ptr %a88 - br label %each.cond35 -each.cond35: + br label %each.cond49 +each.cond49: %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 %t90 = load i64, ptr %t89 %t91 = load i64, ptr %a88 %t92 = icmp slt i64 %t91, %t90 - br i1 %t92, label %each.body36, label %each.end38 -each.body36: + br i1 %t92, label %each.body50, label %each.end52 +each.body50: %t93 = load ptr, ptr %t87 %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 %t95 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t95, ptr %a96 %t97 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 %t102 = load { ptr, i64, i64 }, ptr %a3 @@ -6673,16 +7850,16 @@ each.body36: call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) %t106 = load { ptr, i64, i64 }, ptr %a103 store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a109 call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) %t110 = load { ptr, i64, i64 }, ptr %a107 %t111 = load ptr, ptr %a1 %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic39, label %ok40 -panic39: - call void @finch_panic(ptr @.str.27, i64 61, ptr @.str.28) + br i1 %t112, label %panic53, label %ok54 +panic53: + call void @finch_panic(ptr @.str.34, i64 72, ptr @.str.35) unreachable -ok40: +ok54: %t113 = getelementptr inbounds %S.main.Loader, ptr %t111, i32 0, i32 3 %t114 = load { ptr, i64, i64 }, ptr %t113 store { ptr, i64, i64 } %t110, ptr %a116 @@ -6690,17 +7867,17 @@ ok40: call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) %t118 = load { ptr, i64, i64 }, ptr %a115 store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a121 call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) %t122 = load { ptr, i64, i64 }, ptr %a119 store { ptr, i64, i64 } %t122, ptr %a123 %t124 = call i32 @finch_file_exists(ptr %a123) %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then41, label %endif43 -then41: + br i1 %t125, label %then55, label %endif57 +then55: %t126 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.30, i64 1, i64 0 }, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a129 call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 %t131 = load { ptr, i64, i64 }, ptr %a3 @@ -6709,16 +7886,16 @@ then41: call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.31, i64 1, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = load ptr, ptr %a1 %t141 = icmp eq ptr %t140, null - br i1 %t141, label %panic44, label %ok45 -panic44: - call void @finch_panic(ptr @.str.32, i64 62, ptr @.str.33) + br i1 %t141, label %panic58, label %ok59 +panic58: + call void @finch_panic(ptr @.str.39, i64 73, ptr @.str.40) unreachable -ok45: +ok59: %t142 = getelementptr inbounds %S.main.Loader, ptr %t140, i32 0, i32 3 %t143 = load { ptr, i64, i64 }, ptr %t142 store { ptr, i64, i64 } %t139, ptr %a145 @@ -6726,14 +7903,14 @@ ok45: call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) %t147 = load { ptr, i64, i64 }, ptr %a144 store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.34, i64 4, i64 0 }, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a150 call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) %t151 = load { ptr, i64, i64 }, ptr %a148 ret { ptr, i64, i64 } %t151 -endif43: +endif57: %t152 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.35, i64 1, i64 0 }, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a155 call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) %t156 = load { ptr, i64, i64 }, ptr %a153 %t157 = load { ptr, i64, i64 }, ptr %a3 @@ -6742,17 +7919,17 @@ endif43: call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) %t161 = load { ptr, i64, i64 }, ptr %a158 store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a164 call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) %t165 = load { ptr, i64, i64 }, ptr %a162 store { ptr, i64, i64 } %t165, ptr %a166 %t167 = call i32 @finch_file_exists(ptr %a166) %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then46, label %endif48 -then46: + br i1 %t168, label %then60, label %endif62 +then60: %t169 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a172 call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) %t173 = load { ptr, i64, i64 }, ptr %a170 %t174 = load { ptr, i64, i64 }, ptr %a3 @@ -6761,42 +7938,42 @@ then46: call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) %t178 = load { ptr, i64, i64 }, ptr %a175 store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.38, i64 4, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a181 call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) %t182 = load { ptr, i64, i64 }, ptr %a179 ret { ptr, i64, i64 } %t182 -endif48: - br label %each.step37 -each.step37: +endif62: + br label %each.step51 +each.step51: %t183 = load i64, ptr %a88 %t184 = add i64 %t183, 1 store i64 %t184, ptr %a88 - br label %each.cond35 -each.end38: + br label %each.cond49 +each.end52: %t185 = load ptr, ptr %a1 %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic49, label %ok50 -panic49: - call void @finch_panic(ptr @.str.39, i64 68, ptr @.str.40) + br i1 %t186, label %panic63, label %ok64 +panic63: + call void @finch_panic(ptr @.str.46, i64 79, ptr @.str.47) unreachable -ok50: +ok64: %t187 = getelementptr inbounds %S.main.Loader, ptr %t185, i32 0, i32 4 %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 %t189 = load i64, ptr %t188 %t190 = icmp sgt i64 %t189, 0 - br i1 %t190, label %then51, label %endif53 -then51: + br i1 %t190, label %then65, label %endif67 +then65: %t191 = load ptr, ptr %a1 %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic54, label %ok55 -panic54: - call void @finch_panic(ptr @.str.41, i64 69, ptr @.str.42) + br i1 %t192, label %panic68, label %ok69 +panic68: + call void @finch_panic(ptr @.str.48, i64 80, ptr @.str.49) unreachable -ok55: +ok69: %t193 = getelementptr inbounds %S.main.Loader, ptr %t191, i32 0, i32 4 %t194 = load { ptr, i64, i64 }, ptr %t193 store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.43, i64 1, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 %t199 = load { ptr, i64, i64 }, ptr %a3 @@ -6805,16 +7982,16 @@ ok55: call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a206 call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 %t208 = load ptr, ptr %a1 %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic56, label %ok57 -panic56: - call void @finch_panic(ptr @.str.45, i64 69, ptr @.str.46) + br i1 %t209, label %panic70, label %ok71 +panic70: + call void @finch_panic(ptr @.str.52, i64 80, ptr @.str.53) unreachable -ok57: +ok71: %t210 = getelementptr inbounds %S.main.Loader, ptr %t208, i32 0, i32 3 %t211 = load { ptr, i64, i64 }, ptr %t210 store { ptr, i64, i64 } %t207, ptr %a213 @@ -6822,25 +7999,25 @@ ok57: call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) %t215 = load { ptr, i64, i64 }, ptr %a212 store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.47, i64 4, i64 0 }, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a218 call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) %t219 = load { ptr, i64, i64 }, ptr %a216 store { ptr, i64, i64 } %t219, ptr %a220 %t221 = call i32 @finch_file_exists(ptr %a220) %t222 = icmp ne i32 %t221, 0 - br i1 %t222, label %then58, label %endif60 -then58: + br i1 %t222, label %then72, label %endif74 +then72: %t223 = load ptr, ptr %a1 %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic61, label %ok62 -panic61: - call void @finch_panic(ptr @.str.48, i64 70, ptr @.str.49) + br i1 %t224, label %panic75, label %ok76 +panic75: + call void @finch_panic(ptr @.str.55, i64 81, ptr @.str.56) unreachable -ok62: +ok76: %t225 = getelementptr inbounds %S.main.Loader, ptr %t223, i32 0, i32 4 %t226 = load { ptr, i64, i64 }, ptr %t225 store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a229 call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) %t230 = load { ptr, i64, i64 }, ptr %a227 %t231 = load { ptr, i64, i64 }, ptr %a3 @@ -6849,16 +8026,16 @@ ok62: call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) %t235 = load { ptr, i64, i64 }, ptr %a232 store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a238 call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) %t239 = load { ptr, i64, i64 }, ptr %a236 %t240 = load ptr, ptr %a1 %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.52, i64 70, ptr @.str.53) + br i1 %t241, label %panic77, label %ok78 +panic77: + call void @finch_panic(ptr @.str.59, i64 81, ptr @.str.60) unreachable -ok64: +ok78: %t242 = getelementptr inbounds %S.main.Loader, ptr %t240, i32 0, i32 3 %t243 = load { ptr, i64, i64 }, ptr %t242 store { ptr, i64, i64 } %t239, ptr %a245 @@ -6866,22 +8043,22 @@ ok64: call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) %t247 = load { ptr, i64, i64 }, ptr %a244 store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a250 call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) %t251 = load { ptr, i64, i64 }, ptr %a248 ret { ptr, i64, i64 } %t251 -endif60: +endif74: %t252 = load ptr, ptr %a1 %t253 = icmp eq ptr %t252, null - br i1 %t253, label %panic65, label %ok66 -panic65: - call void @finch_panic(ptr @.str.55, i64 72, ptr @.str.56) + br i1 %t253, label %panic79, label %ok80 +panic79: + call void @finch_panic(ptr @.str.62, i64 83, ptr @.str.63) unreachable -ok66: +ok80: %t254 = getelementptr inbounds %S.main.Loader, ptr %t252, i32 0, i32 4 %t255 = load { ptr, i64, i64 }, ptr %t254 store { ptr, i64, i64 } %t255, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a258 call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) %t259 = load { ptr, i64, i64 }, ptr %a256 %t260 = load { ptr, i64, i64 }, ptr %a3 @@ -6890,25 +8067,25 @@ ok66: call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) %t264 = load { ptr, i64, i64 }, ptr %a261 store { ptr, i64, i64 } %t264, ptr %a266 - store { ptr, i64, i64 } { ptr @.str.58, i64 4, i64 0 }, ptr %a267 + store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a267 call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) %t268 = load { ptr, i64, i64 }, ptr %a265 store { ptr, i64, i64 } %t268, ptr %a269 %t270 = call i32 @finch_file_exists(ptr %a269) %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then67, label %endif69 -then67: + br i1 %t271, label %then81, label %endif83 +then81: %t272 = load ptr, ptr %a1 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.59, i64 73, ptr @.str.60) + br i1 %t273, label %panic84, label %ok85 +panic84: + call void @finch_panic(ptr @.str.66, i64 84, ptr @.str.67) unreachable -ok71: +ok85: %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 4 %t275 = load { ptr, i64, i64 }, ptr %t274 store { ptr, i64, i64 } %t275, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.61, i64 1, i64 0 }, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a278 call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) %t279 = load { ptr, i64, i64 }, ptr %a276 %t280 = load { ptr, i64, i64 }, ptr %a3 @@ -6917,13 +8094,13 @@ ok71: call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) %t284 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t284, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.62, i64 4, i64 0 }, ptr %a287 + store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a287 call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) %t288 = load { ptr, i64, i64 }, ptr %a285 ret { ptr, i64, i64 } %t288 -endif69: - br label %endif53 -endif53: +endif83: + br label %endif67 +endif67: %t289 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t289, ptr %a290 call void @finch_str_copy(ptr %a291, ptr %a290) @@ -6940,20 +8117,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond82 -n.cond82: + br label %n.cond107 +n.cond107: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body83, label %n.end84 -n.body83: + br i1 %t7, label %n.body108, label %n.end109 +n.body108: %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 call void @finch_str_copy(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond82 -n.end84: + br label %n.cond107 +n.end109: ret void } @@ -6966,20 +8143,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond90 -n.cond90: + br label %n.cond115 +n.cond115: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body91, label %n.end92 -n.body91: + br i1 %t7, label %n.body116, label %n.end117 +n.body116: %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond90 -n.end92: + br label %n.cond115 +n.end117: ret void } @@ -7044,20 +8221,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond87 -n.cond87: + br label %n.cond112 +n.cond112: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body88, label %n.end89 -n.body88: + br i1 %t7, label %n.body113, label %n.end114 +n.body113: %t8 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.ast.Node, ptr %t2, i64 %t6 call void @finch.copy.S_ast_Node(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond87 -n.end89: + br label %n.cond112 +n.end114: ret void } @@ -7102,48 +8279,50 @@ entry: %a2 = alloca { ptr, i64, i64 }, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 %a5 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca i64, align 16 + %a17 = alloca i64, align 16 %a22 = alloca { ptr, i64, i64 }, align 16 %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.ast.Program, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca i64, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca %S.ast.Program, align 16 - %a107 = alloca %S.ast.Program, align 16 - %a113 = alloca i64, align 16 + %a105 = alloca %S.ast.Program, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i64, align 16 - %a130 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca %S.ast.Program, align 16 + %a128 = alloca %S.ast.Program, align 16 + %a134 = alloca i64, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca i64, align 16 + %a151 = alloca i64, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -7152,330 +8331,376 @@ entry: %t6 = call i32 @finch_file_exists(ptr %a5) %t7 = icmp ne i32 %t6, 0 %t8 = xor i1 %t7, true - br i1 %t8, label %then72, label %endif74 -then72: - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t10 = load i64, ptr %t9 - %t11 = icmp sgt i64 %t10, 0 - br i1 %t11, label %then75, label %else76 -then75: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.63, i64 30, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.64, i64 14, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a17 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.65, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a26 - %t30 = extractvalue { ptr, i64, i64 } %t29, 1 - %t31 = trunc i64 %t30 to i32 - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = icmp eq ptr %t32, null - %t34 = select i1 %t33, ptr @.str.66, ptr %t32 - %t35 = call i32 (ptr, ...) @printf(ptr @.str.67, i32 %t31, ptr %t34) - %t36 = call i32 (ptr, ...) @printf(ptr @.str.68) - br label %endif77 -else76: - %t37 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.69, i64 19, i64 0 }, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.70, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = trunc i64 %t46 to i32 - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = icmp eq ptr %t48, null - %t50 = select i1 %t49, ptr @.str.71, ptr %t48 - %t51 = call i32 (ptr, ...) @printf(ptr @.str.72, i32 %t47, ptr %t50) - %t52 = call i32 (ptr, ...) @printf(ptr @.str.73) - br label %endif77 -endif77: - %t53 = trunc i64 1 to i32 - %t54 = call i32 @fflush(ptr null) - call void @exit(i32 %t53) - br label %endif74 -endif74: - %t55 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_read_file(ptr %a57, ptr %a56, ptr @.str.74, i64 88) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic78, label %ok79 -panic78: - call void @finch_panic(ptr @.str.75, i64 89, ptr @.str.76) + br label %logic.from86 +logic.from86: + br i1 %t8, label %logic.rhs87, label %logic.end88 +logic.rhs87: + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic89, label %ok90 +panic89: + call void @finch_panic(ptr @.str.70, i64 91, ptr @.str.71) unreachable -ok79: - %t62 = getelementptr inbounds %S.main.Loader, ptr %t60, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = load i64, ptr %t63 - store i64 %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic80, label %ok81 -panic80: - call void @finch_panic(ptr @.str.77, i64 90, ptr @.str.78) +ok90: + %t11 = getelementptr inbounds %S.main.Loader, ptr %t9, i32 0, i32 6 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 + %t13 = load { ptr, i64, i64 }, ptr %a2 + store i64 -1, ptr %a14 + %t15 = load i64, ptr %t12 + %t16 = load ptr, ptr %t11 + store i64 0, ptr %a17 + br label %find.cond91 +find.cond91: + %t18 = load i64, ptr %a17 + %t19 = icmp slt i64 %t18, %t15 + br i1 %t19, label %find.body92, label %find.end95 +find.body92: + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t18 + %t21 = load { ptr, i64, i64 }, ptr %t20 + store { ptr, i64, i64 } %t21, ptr %a22 + store { ptr, i64, i64 } %t13, ptr %a23 + %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + br i1 %t25, label %find.hit93, label %find.next94 +find.hit93: + store i64 %t18, ptr %a14 + br label %find.end95 +find.next94: + %t26 = add i64 %t18, 1 + store i64 %t26, ptr %a17 + br label %find.cond91 +find.end95: + %t27 = load i64, ptr %a14 + %t28 = icmp sge i64 %t27, 0 + %t29 = xor i1 %t28, true + br label %logic.rend96 +logic.rend96: + br label %logic.end88 +logic.end88: + %t30 = phi i1 [ false, %logic.from86 ], [ %t29, %logic.rend96 ] + br i1 %t30, label %then97, label %endif99 +then97: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = icmp sgt i64 %t32, 0 + br i1 %t33, label %then100, label %else101 +then100: + %t34 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.72, i64 30, i64 0 }, ptr %a36 + store { ptr, i64, i64 } %t34, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t38, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.73, i64 14, i64 0 }, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a39 + %t43 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t42, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + %t52 = extractvalue { ptr, i64, i64 } %t51, 1 + %t53 = trunc i64 %t52 to i32 + %t54 = extractvalue { ptr, i64, i64 } %t51, 0 + %t55 = icmp eq ptr %t54, null + %t56 = select i1 %t55, ptr @.str.75, ptr %t54 + %t57 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t53, ptr %t56) + %t58 = call i32 (ptr, ...) @printf(ptr @.str.77) + br label %endif102 +else101: + %t59 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = trunc i64 %t68 to i32 + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = icmp eq ptr %t70, null + %t72 = select i1 %t71, ptr @.str.80, ptr %t70 + %t73 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t69, ptr %t72) + %t74 = call i32 (ptr, ...) @printf(ptr @.str.82) + br label %endif102 +endif102: + %t75 = trunc i64 1 to i32 + %t76 = call i32 @fflush(ptr null) + call void @exit(i32 %t75) + br label %endif99 +endif99: + %t77 = load ptr, ptr %a1 + %t78 = load { ptr, i64, i64 }, ptr %a2 + %t79 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t77, { ptr, i64, i64 } %t78) + store { ptr, i64, i64 } %t79, ptr %a80 + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic103, label %ok104 +panic103: + call void @finch_panic(ptr @.str.83, i64 100, ptr @.str.84) unreachable -ok81: - %t68 = getelementptr inbounds %S.main.Loader, ptr %t66, i32 0, i32 1 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_copy(ptr %a72, ptr %a71) - %t73 = load { ptr, i64, i64 }, ptr %a72 - %t74 = load i64, ptr %t69 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t68, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t68 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t69 - %t78 = load { ptr, i64, i64 }, ptr %a59 - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - %t81 = load i64, ptr %a65 - %t82 = load { ptr, i64, i64 }, ptr %a2 - %t83 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t80, i64 %t81, { ptr, i64, i64 } %t82) - store %S.ast.Program %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a3 - %t86 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 0 - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_copy(ptr %a88, ptr %a87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t89, ptr %t86 - %t90 = load { ptr, i64, i64 }, ptr %a2 - %t91 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 1 - store { ptr, i64, i64 } %t90, ptr %a92 +ok104: + %t83 = getelementptr inbounds %S.main.Loader, ptr %t81, i32 0, i32 1 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 + %t85 = load i64, ptr %t84 + store i64 %t85, ptr %a86 + %t87 = load ptr, ptr %a1 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic105, label %ok106 +panic105: + call void @finch_panic(ptr @.str.85, i64 101, ptr @.str.86) + unreachable +ok106: + %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 + %t91 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t91, ptr %a92 call void @finch_str_copy(ptr %a93, ptr %a92) %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t94, ptr %t91 - %t95 = getelementptr inbounds %S.ast.Program, ptr %a84, i32 0, i32 2 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch.copy.arr_str(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic85, label %ok86 -panic85: - call void @finch_panic(ptr @.str.79, i64 95, ptr @.str.80) - unreachable -ok86: - %t103 = getelementptr inbounds %S.main.Loader, ptr %t101, i32 0, i32 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Program, ptr %a84 - store %S.ast.Program %t105, ptr %a106 - call void @finch.copy.S_ast_Program(ptr %a107, ptr %a106) - %t108 = load %S.ast.Program, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Program, ptr %t111, i64 %t109 - store %S.ast.Program %t108, ptr %t112 - store i64 %t110, ptr %t104 - store i64 0, ptr %a113 - br label %each.cond93 -each.cond93: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1 - %t115 = load i64, ptr %t114 - %t116 = load i64, ptr %a113 - %t117 = icmp slt i64 %t116, %t115 - br i1 %t117, label %each.body94, label %each.end96 -each.body94: - %t118 = load ptr, ptr %a100 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - %t120 = load { ptr, i64, i64 }, ptr %t119 + %t95 = load i64, ptr %t90 + %t96 = add i64 %t95, 1 + call void @finch_arr_reserve(ptr %t89, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t97 = load ptr, ptr %t89 + %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 + store { ptr, i64, i64 } %t94, ptr %t98 + store i64 %t96, ptr %t90 + %t99 = load { ptr, i64, i64 }, ptr %a80 + %t100 = load { ptr, i64, i64 }, ptr %a2 + %t101 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100) + %t102 = load i64, ptr %a86 + %t103 = load { ptr, i64, i64 }, ptr %a2 + %t104 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t101, i64 %t102, { ptr, i64, i64 } %t103) + store %S.ast.Program %t104, ptr %a105 + %t106 = load { ptr, i64, i64 }, ptr %a3 + %t107 = getelementptr inbounds %S.ast.Program, ptr %a105, i32 0, i32 0 + store { ptr, i64, i64 } %t106, ptr %a108 + call void @finch_str_copy(ptr %a109, ptr %a108) + %t110 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t110, ptr %t107 + %t111 = load { ptr, i64, i64 }, ptr %a2 + %t112 = getelementptr inbounds %S.ast.Program, ptr %a105, i32 0, i32 1 + store { ptr, i64, i64 } %t111, ptr %a113 + call void @finch_str_copy(ptr %a114, ptr %a113) + %t115 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t115, ptr %t112 + %t116 = getelementptr inbounds %S.ast.Program, ptr %a105, i32 0, i32 2 + %t117 = load { ptr, i64, i64 }, ptr %t116 + store { ptr, i64, i64 } %t117, ptr %a118 + call void @finch.copy.arr_str(ptr %a119, ptr %a118) + %t120 = load { ptr, i64, i64 }, ptr %a119 store { ptr, i64, i64 } %t120, ptr %a121 %t122 = load ptr, ptr %a1 %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic97, label %ok98 -panic97: - call void @finch_panic(ptr @.str.81, i64 97, ptr @.str.82) + br i1 %t123, label %panic110, label %ok111 +panic110: + call void @finch_panic(ptr @.str.87, i64 106, ptr @.str.88) unreachable -ok98: - %t124 = getelementptr inbounds %S.main.Loader, ptr %t122, i32 0, i32 2 +ok111: + %t124 = getelementptr inbounds %S.main.Loader, ptr %t122, i32 0, i32 0 %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %a121 - store i64 -1, ptr %a127 - %t128 = load i64, ptr %t125 - %t129 = load ptr, ptr %t124 - store i64 0, ptr %a130 - br label %find.cond99 -find.cond99: - %t131 = load i64, ptr %a130 - %t132 = icmp slt i64 %t131, %t128 - br i1 %t132, label %find.body100, label %find.end103 -find.body100: - %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t131 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } %t126, ptr %a136 - %t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136) - %t138 = icmp ne i32 %t137, 0 - br i1 %t138, label %find.hit101, label %find.next102 -find.hit101: - store i64 %t131, ptr %a127 - br label %find.end103 -find.next102: - %t139 = add i64 %t131, 1 - store i64 %t139, ptr %a130 - br label %find.cond99 -find.end103: - %t140 = load i64, ptr %a127 - %t141 = icmp sge i64 %t140, 0 - %t142 = xor i1 %t141, true - br i1 %t142, label %then104, label %endif106 -then104: + %t126 = load %S.ast.Program, ptr %a105 + store %S.ast.Program %t126, ptr %a127 + call void @finch.copy.S_ast_Program(ptr %a128, ptr %a127) + %t129 = load %S.ast.Program, ptr %a128 + %t130 = load i64, ptr %t125 + %t131 = add i64 %t130, 1 + call void @finch_arr_reserve(ptr %t124, i64 %t131, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) + %t132 = load ptr, ptr %t124 + %t133 = getelementptr inbounds %S.ast.Program, ptr %t132, i64 %t130 + store %S.ast.Program %t129, ptr %t133 + store i64 %t131, ptr %t125 + store i64 0, ptr %a134 + br label %each.cond118 +each.cond118: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a121, i32 0, i32 1 + %t136 = load i64, ptr %t135 + %t137 = load i64, ptr %a134 + %t138 = icmp slt i64 %t137, %t136 + br i1 %t138, label %each.body119, label %each.end121 +each.body119: + %t139 = load ptr, ptr %a121 + %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 %t137 + %t141 = load { ptr, i64, i64 }, ptr %t140 + store { ptr, i64, i64 } %t141, ptr %a142 %t143 = load ptr, ptr %a1 %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic107, label %ok108 -panic107: - call void @finch_panic(ptr @.str.83, i64 98, ptr @.str.84) + br i1 %t144, label %panic122, label %ok123 +panic122: + call void @finch_panic(ptr @.str.89, i64 108, ptr @.str.90) unreachable -ok108: +ok123: %t145 = getelementptr inbounds %S.main.Loader, ptr %t143, i32 0, i32 2 %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = load i64, ptr %t146 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t145, i64 %t152, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t145 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i64 %t151 - store { ptr, i64, i64 } %t150, ptr %t154 - store i64 %t152, ptr %t146 - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = load { ptr, i64, i64 }, ptr %a2 - %t158 = load { ptr, i64, i64 }, ptr %a121 - %t159 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t156, { ptr, i64, i64 } %t157, { ptr, i64, i64 } %t158) - %t160 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.main.load(ptr %t155, { ptr, i64, i64 } %t159, { ptr, i64, i64 } %t160) - br label %endif106 -endif106: - br label %each.step95 -each.step95: - %t161 = load i64, ptr %a113 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a113 - br label %each.cond93 -each.end96: + %t147 = load { ptr, i64, i64 }, ptr %a142 + store i64 -1, ptr %a148 + %t149 = load i64, ptr %t146 + %t150 = load ptr, ptr %t145 + store i64 0, ptr %a151 + br label %find.cond124 +find.cond124: + %t152 = load i64, ptr %a151 + %t153 = icmp slt i64 %t152, %t149 + br i1 %t153, label %find.body125, label %find.end128 +find.body125: + %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t152 + %t155 = load { ptr, i64, i64 }, ptr %t154 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } %t147, ptr %a157 + %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) + %t159 = icmp ne i32 %t158, 0 + br i1 %t159, label %find.hit126, label %find.next127 +find.hit126: + store i64 %t152, ptr %a148 + br label %find.end128 +find.next127: + %t160 = add i64 %t152, 1 + store i64 %t160, ptr %a151 + br label %find.cond124 +find.end128: + %t161 = load i64, ptr %a148 + %t162 = icmp sge i64 %t161, 0 + %t163 = xor i1 %t162, true + br i1 %t163, label %then129, label %endif131 +then129: + %t164 = load ptr, ptr %a1 + %t165 = icmp eq ptr %t164, null + br i1 %t165, label %panic132, label %ok133 +panic132: + call void @finch_panic(ptr @.str.91, i64 109, ptr @.str.92) + unreachable +ok133: + %t166 = getelementptr inbounds %S.main.Loader, ptr %t164, i32 0, i32 2 + %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 + %t168 = load { ptr, i64, i64 }, ptr %a142 + store { ptr, i64, i64 } %t168, ptr %a169 + call void @finch_str_copy(ptr %a170, ptr %a169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + %t172 = load i64, ptr %t167 + %t173 = add i64 %t172, 1 + call void @finch_arr_reserve(ptr %t166, i64 %t173, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t174 = load ptr, ptr %t166 + %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i64 %t172 + store { ptr, i64, i64 } %t171, ptr %t175 + store i64 %t173, ptr %t167 + %t176 = load ptr, ptr %a1 + %t177 = load ptr, ptr %a1 + %t178 = load { ptr, i64, i64 }, ptr %a2 + %t179 = load { ptr, i64, i64 }, ptr %a142 + %t180 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t177, { ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) + %t181 = load { ptr, i64, i64 }, ptr %a142 + call void @finch.main.load(ptr %t176, { ptr, i64, i64 } %t180, { ptr, i64, i64 } %t181) + br label %endif131 +endif131: + br label %each.step120 +each.step120: + %t182 = load i64, ptr %a134 + %t183 = add i64 %t182, 1 + store i64 %t183, ptr %a134 + br label %each.cond118 +each.end121: ret void } define internal void @finch.main.usage() { entry: - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.85, i64 41, i64 0 }, 1 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 41, i64 0 }, 1 %t2 = trunc i64 %t1 to i32 - %t3 = extractvalue { ptr, i64, i64 } { ptr @.str.85, i64 41, i64 0 }, 0 + %t3 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 41, i64 0 }, 0 %t4 = icmp eq ptr %t3, null - %t5 = select i1 %t4, ptr @.str.86, ptr %t3 - %t6 = call i32 (ptr, ...) @printf(ptr @.str.87, i32 %t2, ptr %t5) - %t7 = call i32 (ptr, ...) @printf(ptr @.str.88) - %t8 = extractvalue { ptr, i64, i64 } { ptr @.str.89, i64 6, i64 0 }, 1 + %t5 = select i1 %t4, ptr @.str.94, ptr %t3 + %t6 = call i32 (ptr, ...) @printf(ptr @.str.95, i32 %t2, ptr %t5) + %t7 = call i32 (ptr, ...) @printf(ptr @.str.96) + %t8 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 6, i64 0 }, 1 %t9 = trunc i64 %t8 to i32 - %t10 = extractvalue { ptr, i64, i64 } { ptr @.str.89, i64 6, i64 0 }, 0 + %t10 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 6, i64 0 }, 0 %t11 = icmp eq ptr %t10, null - %t12 = select i1 %t11, ptr @.str.90, ptr %t10 - %t13 = call i32 (ptr, ...) @printf(ptr @.str.91, i32 %t9, ptr %t12) - %t14 = call i32 (ptr, ...) @printf(ptr @.str.92) - %t15 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 60, i64 0 }, 1 + %t12 = select i1 %t11, ptr @.str.98, ptr %t10 + %t13 = call i32 (ptr, ...) @printf(ptr @.str.99, i32 %t9, ptr %t12) + %t14 = call i32 (ptr, ...) @printf(ptr @.str.100) + %t15 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 60, i64 0 }, 1 %t16 = trunc i64 %t15 to i32 - %t17 = extractvalue { ptr, i64, i64 } { ptr @.str.93, i64 60, i64 0 }, 0 + %t17 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 60, i64 0 }, 0 %t18 = icmp eq ptr %t17, null - %t19 = select i1 %t18, ptr @.str.94, ptr %t17 - %t20 = call i32 (ptr, ...) @printf(ptr @.str.95, i32 %t16, ptr %t19) - %t21 = call i32 (ptr, ...) @printf(ptr @.str.96) - %t22 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 52, i64 0 }, 1 + %t19 = select i1 %t18, ptr @.str.102, ptr %t17 + %t20 = call i32 (ptr, ...) @printf(ptr @.str.103, i32 %t16, ptr %t19) + %t21 = call i32 (ptr, ...) @printf(ptr @.str.104) + %t22 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 52, i64 0 }, 1 %t23 = trunc i64 %t22 to i32 - %t24 = extractvalue { ptr, i64, i64 } { ptr @.str.97, i64 52, i64 0 }, 0 + %t24 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 52, i64 0 }, 0 %t25 = icmp eq ptr %t24, null - %t26 = select i1 %t25, ptr @.str.98, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.99, i32 %t23, ptr %t26) - %t28 = call i32 (ptr, ...) @printf(ptr @.str.100) - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 54, i64 0 }, 1 + %t26 = select i1 %t25, ptr @.str.106, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.107, i32 %t23, ptr %t26) + %t28 = call i32 (ptr, ...) @printf(ptr @.str.108) + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 54, i64 0 }, 1 %t30 = trunc i64 %t29 to i32 - %t31 = extractvalue { ptr, i64, i64 } { ptr @.str.101, i64 54, i64 0 }, 0 + %t31 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 54, i64 0 }, 0 %t32 = icmp eq ptr %t31, null - %t33 = select i1 %t32, ptr @.str.102, ptr %t31 - %t34 = call i32 (ptr, ...) @printf(ptr @.str.103, i32 %t30, ptr %t33) - %t35 = call i32 (ptr, ...) @printf(ptr @.str.104) - %t36 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 53, i64 0 }, 1 + %t33 = select i1 %t32, ptr @.str.110, ptr %t31 + %t34 = call i32 (ptr, ...) @printf(ptr @.str.111, i32 %t30, ptr %t33) + %t35 = call i32 (ptr, ...) @printf(ptr @.str.112) + %t36 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 1 %t37 = trunc i64 %t36 to i32 - %t38 = extractvalue { ptr, i64, i64 } { ptr @.str.105, i64 53, i64 0 }, 0 + %t38 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 0 %t39 = icmp eq ptr %t38, null - %t40 = select i1 %t39, ptr @.str.106, ptr %t38 - %t41 = call i32 (ptr, ...) @printf(ptr @.str.107, i32 %t37, ptr %t40) - %t42 = call i32 (ptr, ...) @printf(ptr @.str.108) - %t43 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 8, i64 0 }, 1 + %t40 = select i1 %t39, ptr @.str.114, ptr %t38 + %t41 = call i32 (ptr, ...) @printf(ptr @.str.115, i32 %t37, ptr %t40) + %t42 = call i32 (ptr, ...) @printf(ptr @.str.116) + %t43 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 90, i64 0 }, 1 %t44 = trunc i64 %t43 to i32 - %t45 = extractvalue { ptr, i64, i64 } { ptr @.str.109, i64 8, i64 0 }, 0 + %t45 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 90, i64 0 }, 0 %t46 = icmp eq ptr %t45, null - %t47 = select i1 %t46, ptr @.str.110, ptr %t45 - %t48 = call i32 (ptr, ...) @printf(ptr @.str.111, i32 %t44, ptr %t47) - %t49 = call i32 (ptr, ...) @printf(ptr @.str.112) - %t50 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 1 + %t47 = select i1 %t46, ptr @.str.118, ptr %t45 + %t48 = call i32 (ptr, ...) @printf(ptr @.str.119, i32 %t44, ptr %t47) + %t49 = call i32 (ptr, ...) @printf(ptr @.str.120) + %t50 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 8, i64 0 }, 1 %t51 = trunc i64 %t50 to i32 - %t52 = extractvalue { ptr, i64, i64 } { ptr @.str.113, i64 53, i64 0 }, 0 + %t52 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 8, i64 0 }, 0 %t53 = icmp eq ptr %t52, null - %t54 = select i1 %t53, ptr @.str.114, ptr %t52 - %t55 = call i32 (ptr, ...) @printf(ptr @.str.115, i32 %t51, ptr %t54) - %t56 = call i32 (ptr, ...) @printf(ptr @.str.116) - %t57 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 76, i64 0 }, 1 + %t54 = select i1 %t53, ptr @.str.122, ptr %t52 + %t55 = call i32 (ptr, ...) @printf(ptr @.str.123, i32 %t51, ptr %t54) + %t56 = call i32 (ptr, ...) @printf(ptr @.str.124) + %t57 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 53, i64 0 }, 1 %t58 = trunc i64 %t57 to i32 - %t59 = extractvalue { ptr, i64, i64 } { ptr @.str.117, i64 76, i64 0 }, 0 + %t59 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 53, i64 0 }, 0 %t60 = icmp eq ptr %t59, null - %t61 = select i1 %t60, ptr @.str.118, ptr %t59 - %t62 = call i32 (ptr, ...) @printf(ptr @.str.119, i32 %t58, ptr %t61) - %t63 = call i32 (ptr, ...) @printf(ptr @.str.120) - %t64 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 57, i64 0 }, 1 + %t61 = select i1 %t60, ptr @.str.126, ptr %t59 + %t62 = call i32 (ptr, ...) @printf(ptr @.str.127, i32 %t58, ptr %t61) + %t63 = call i32 (ptr, ...) @printf(ptr @.str.128) + %t64 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 76, i64 0 }, 1 %t65 = trunc i64 %t64 to i32 - %t66 = extractvalue { ptr, i64, i64 } { ptr @.str.121, i64 57, i64 0 }, 0 + %t66 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 76, i64 0 }, 0 %t67 = icmp eq ptr %t66, null - %t68 = select i1 %t67, ptr @.str.122, ptr %t66 - %t69 = call i32 (ptr, ...) @printf(ptr @.str.123, i32 %t65, ptr %t68) - %t70 = call i32 (ptr, ...) @printf(ptr @.str.124) - %t71 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 66, i64 0 }, 1 + %t68 = select i1 %t67, ptr @.str.130, ptr %t66 + %t69 = call i32 (ptr, ...) @printf(ptr @.str.131, i32 %t65, ptr %t68) + %t70 = call i32 (ptr, ...) @printf(ptr @.str.132) + %t71 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 57, i64 0 }, 1 %t72 = trunc i64 %t71 to i32 - %t73 = extractvalue { ptr, i64, i64 } { ptr @.str.125, i64 66, i64 0 }, 0 + %t73 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 57, i64 0 }, 0 %t74 = icmp eq ptr %t73, null - %t75 = select i1 %t74, ptr @.str.126, ptr %t73 - %t76 = call i32 (ptr, ...) @printf(ptr @.str.127, i32 %t72, ptr %t75) - %t77 = call i32 (ptr, ...) @printf(ptr @.str.128) - %t78 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 101, i64 0 }, 1 + %t75 = select i1 %t74, ptr @.str.134, ptr %t73 + %t76 = call i32 (ptr, ...) @printf(ptr @.str.135, i32 %t72, ptr %t75) + %t77 = call i32 (ptr, ...) @printf(ptr @.str.136) + %t78 = extractvalue { ptr, i64, i64 } { ptr @.str.137, i64 66, i64 0 }, 1 %t79 = trunc i64 %t78 to i32 - %t80 = extractvalue { ptr, i64, i64 } { ptr @.str.129, i64 101, i64 0 }, 0 + %t80 = extractvalue { ptr, i64, i64 } { ptr @.str.137, i64 66, i64 0 }, 0 %t81 = icmp eq ptr %t80, null - %t82 = select i1 %t81, ptr @.str.130, ptr %t80 - %t83 = call i32 (ptr, ...) @printf(ptr @.str.131, i32 %t79, ptr %t82) - %t84 = call i32 (ptr, ...) @printf(ptr @.str.132) - %t85 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 78, i64 0 }, 1 + %t82 = select i1 %t81, ptr @.str.138, ptr %t80 + %t83 = call i32 (ptr, ...) @printf(ptr @.str.139, i32 %t79, ptr %t82) + %t84 = call i32 (ptr, ...) @printf(ptr @.str.140) + %t85 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 101, i64 0 }, 1 %t86 = trunc i64 %t85 to i32 - %t87 = extractvalue { ptr, i64, i64 } { ptr @.str.133, i64 78, i64 0 }, 0 + %t87 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 101, i64 0 }, 0 %t88 = icmp eq ptr %t87, null - %t89 = select i1 %t88, ptr @.str.134, ptr %t87 - %t90 = call i32 (ptr, ...) @printf(ptr @.str.135, i32 %t86, ptr %t89) - %t91 = call i32 (ptr, ...) @printf(ptr @.str.136) + %t89 = select i1 %t88, ptr @.str.142, ptr %t87 + %t90 = call i32 (ptr, ...) @printf(ptr @.str.143, i32 %t86, ptr %t89) + %t91 = call i32 (ptr, ...) @printf(ptr @.str.144) %t92 = trunc i64 1 to i32 %t93 = call i32 @fflush(ptr null) call void @exit(i32 %t92) @@ -7511,1657 +8736,1863 @@ entry: %a22 = alloca { ptr, i64, i64 }, align 16 %a43 = alloca { ptr, i64, i64 }, align 16 %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca i1, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca i1, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca i64, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 %a103 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca i1, align 16 + %a105 = alloca i1, align 16 + %a106 = alloca i1, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 %a112 = alloca { ptr, i64, i64 }, align 16 %a113 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca i64, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 %a131 = alloca { ptr, i64, i64 }, align 16 %a132 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 + %a173 = alloca { ptr, i64, i64 }, align 16 + %a174 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 %a195 = alloca { ptr, i64, i64 }, align 16 %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 %a235 = alloca { ptr, i64, i64 }, align 16 %a236 = alloca { ptr, i64, i64 }, align 16 %a245 = alloca { ptr, i64, i64 }, align 16 %a246 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 %a274 = alloca { ptr, i64, i64 }, align 16 %a275 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.platform.Target, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 %a293 = alloca { ptr, i64, i64 }, align 16 %a294 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 %a305 = alloca { ptr, i64, i64 }, align 16 %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 + %a330 = alloca { ptr, i64, i64 }, align 16 %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.main.Loader, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca %S.platform.Target, align 16 %a377 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a390 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 + %a407 = alloca { ptr, i64, i64 }, align 16 + %a408 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 + %a411 = alloca { ptr, i64, i64 }, align 16 %a412 = alloca { ptr, i64, i64 }, align 16 %a413 = alloca { ptr, i64, i64 }, align 16 + %a416 = alloca { ptr, i64, i64 }, align 16 + %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 + %a420 = alloca { ptr, i64, i64 }, align 16 %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca i64, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca %S.main.Loader, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 %a460 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca i64, align 16 - %a475 = alloca %S.ast.Program, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca i64, align 16 - %a485 = alloca i64, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a472 = alloca i64, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a522 = alloca i64, align 16 - %a525 = alloca i64, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a503 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca { ptr, i64, i64 }, align 16 + %a508 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a520 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca i64, align 16 %a531 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 %a548 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca i64, align 16 + %a549 = alloca { ptr, i64, i64 }, align 16 + %a551 = alloca { ptr, i64, i64 }, align 16 + %a552 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a559 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca i64, align 16 + %a569 = alloca %S.ast.Program, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca i64, align 16 + %a579 = alloca i64, align 16 + %a584 = alloca { ptr, i64, i64 }, align 16 + %a585 = alloca { ptr, i64, i64 }, align 16 %a594 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a604 = alloca i64, align 16 + %a616 = alloca i64, align 16 + %a619 = alloca i64, align 16 %a624 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca %S.cimport.CImports, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 + %a625 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a658 = alloca { ptr, i64, i64 }, align 16 + %a669 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a680 = alloca i64, align 16 %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca %S.platform.Target, align 16 - %a694 = alloca %S.platform.Target, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a691 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca { ptr, i64, i64 }, align 16 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a697 = alloca { ptr, i64, i64 }, align 16 %a698 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 %a716 = alloca { ptr, i64, i64 }, align 16 + %a717 = alloca { ptr, i64, i64 }, align 16 %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 + %a726 = alloca { ptr, i64, i64 }, align 16 + %a727 = alloca { ptr, i64, i64 }, align 16 %a737 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 + %a742 = alloca { ptr, i64, i64 }, align 16 + %a743 = alloca { ptr, i64, i64 }, align 16 %a757 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 + %a766 = alloca %S.cimport.CImports, align 16 + %a775 = alloca { ptr, i64, i64 }, align 16 + %a776 = alloca { ptr, i64, i64 }, align 16 + %a786 = alloca { ptr, i64, i64 }, align 16 %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 + %a789 = alloca { ptr, i64, i64 }, align 16 + %a793 = alloca %S.platform.Target, align 16 + %a794 = alloca %S.platform.Target, align 16 %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 + %a800 = alloca { ptr, i64, i64 }, align 16 + %a801 = alloca { ptr, i64, i64 }, align 16 + %a805 = alloca { ptr, i64, i64 }, align 16 + %a806 = alloca { ptr, i64, i64 }, align 16 %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca i64, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 + %a824 = alloca { ptr, i64, i64 }, align 16 + %a825 = alloca { ptr, i64, i64 }, align 16 + %a827 = alloca { ptr, i64, i64 }, align 16 + %a838 = alloca { ptr, i64, i64 }, align 16 + %a839 = alloca { ptr, i64, i64 }, align 16 + %a840 = alloca { ptr, i64, i64 }, align 16 + %a843 = alloca { ptr, i64, i64 }, align 16 %a854 = alloca { ptr, i64, i64 }, align 16 %a855 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 + %a856 = alloca { ptr, i64, i64 }, align 16 %a859 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca i64, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 + %a863 = alloca { ptr, i64, i64 }, align 16 %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 + %a879 = alloca { ptr, i64, i64 }, align 16 + %a883 = alloca { ptr, i64, i64 }, align 16 + %a884 = alloca { ptr, i64, i64 }, align 16 + %a885 = alloca { ptr, i64, i64 }, align 16 + %a888 = alloca { ptr, i64, i64 }, align 16 + %a889 = alloca { ptr, i64, i64 }, align 16 + %a893 = alloca { ptr, i64, i64 }, align 16 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a898 = alloca { ptr, i64, i64 }, align 16 + %a899 = alloca { ptr, i64, i64 }, align 16 + %a903 = alloca { ptr, i64, i64 }, align 16 + %a904 = alloca { ptr, i64, i64 }, align 16 + %a908 = alloca { ptr, i64, i64 }, align 16 + %a909 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 + %a916 = alloca { ptr, i64, i64 }, align 16 + %a924 = alloca { ptr, i64, i64 }, align 16 + %a925 = alloca { ptr, i64, i64 }, align 16 + %a928 = alloca { ptr, i64, i64 }, align 16 + %a929 = alloca i64, align 16 + %a937 = alloca { ptr, i64, i64 }, align 16 + %a951 = alloca { ptr, i64, i64 }, align 16 + %a952 = alloca { ptr, i64, i64 }, align 16 + %a953 = alloca { ptr, i64, i64 }, align 16 + %a955 = alloca { ptr, i64, i64 }, align 16 + %a956 = alloca { ptr, i64, i64 }, align 16 + %a957 = alloca { ptr, i64, i64 }, align 16 + %a960 = alloca { ptr, i64, i64 }, align 16 + %a961 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 + %a964 = alloca { ptr, i64, i64 }, align 16 + %a965 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a968 = alloca { ptr, i64, i64 }, align 16 + %a970 = alloca i64, align 16 + %a973 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 + %a977 = alloca { ptr, i64, i64 }, align 16 + %a978 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t3 = load i64, ptr %t2 %t4 = icmp eq i64 %t3, 2 - br label %logic.from109 -logic.from109: - br i1 %t4, label %logic.rhs110, label %logic.end111 -logic.rhs110: + br label %logic.from134 +logic.from134: + br i1 %t4, label %logic.rhs135, label %logic.end136 +logic.rhs135: %t5 = load { ptr, i64, i64 }, ptr %a1 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range112, label %inrange113 -range112: - call void @finch_panic_index(ptr @.str.137, i64 122, i64 1, i64 %t6) + br i1 %t7, label %range137, label %inrange138 +range137: + call void @finch_panic_index(ptr @.str.145, i64 133, i64 1, i64 %t6) unreachable -inrange113: +inrange138: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 %t10 = load { ptr, i64, i64 }, ptr %t9 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.138, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.146, i64 7, i64 0 }, ptr %a12 %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) %t14 = icmp ne i32 %t13, 0 - br label %logic.from114 -logic.from114: - br i1 %t14, label %logic.end116, label %logic.rhs115 -logic.rhs115: + br label %logic.from139 +logic.from139: + br i1 %t14, label %logic.end141, label %logic.rhs140 +logic.rhs140: %t15 = load { ptr, i64, i64 }, ptr %a1 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range117, label %inrange118 -range117: - call void @finch_panic_index(ptr @.str.139, i64 122, i64 1, i64 %t16) + br i1 %t17, label %range142, label %inrange143 +range142: + call void @finch_panic_index(ptr @.str.147, i64 133, i64 1, i64 %t16) unreachable -inrange118: +inrange143: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 %t20 = load { ptr, i64, i64 }, ptr %t19 store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.140, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.148, i64 9, i64 0 }, ptr %a22 %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) %t24 = icmp ne i32 %t23, 0 - br label %logic.rend119 -logic.rend119: - br label %logic.end116 -logic.end116: - %t25 = phi i1 [ true, %logic.from114 ], [ %t24, %logic.rend119 ] - br label %logic.rend120 -logic.rend120: - br label %logic.end111 -logic.end111: - %t26 = phi i1 [ false, %logic.from109 ], [ %t25, %logic.rend120 ] - br i1 %t26, label %then121, label %endif123 -then121: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 46, i64 0 }, 1 + br label %logic.rend144 +logic.rend144: + br label %logic.end141 +logic.end141: + %t25 = phi i1 [ true, %logic.from139 ], [ %t24, %logic.rend144 ] + br label %logic.rend145 +logic.rend145: + br label %logic.end136 +logic.end136: + %t26 = phi i1 [ false, %logic.from134 ], [ %t25, %logic.rend145 ] + br i1 %t26, label %then146, label %endif148 +then146: + %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.149, i64 46, i64 0 }, 1 %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.141, i64 46, i64 0 }, 0 + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.149, i64 46, i64 0 }, 0 %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.142, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.143, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.144) + %t31 = select i1 %t30, ptr @.str.150, ptr %t29 + %t32 = call i32 (ptr, ...) @printf(ptr @.str.151, i32 %t28, ptr %t31) + %t33 = call i32 (ptr, ...) @printf(ptr @.str.152) ret i64 0 -endif123: +endif148: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t35 = load i64, ptr %t34 - %t36 = icmp slt i64 %t35, 3 - br i1 %t36, label %then124, label %endif126 -then124: - call void @finch.main.usage() - br label %endif126 -endif126: + %t36 = icmp eq i64 %t35, 2 + br label %logic.from149 +logic.from149: + br i1 %t36, label %logic.rhs150, label %logic.end151 +logic.rhs150: %t37 = load { ptr, i64, i64 }, ptr %a1 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range127, label %inrange128 -range127: - call void @finch_panic_index(ptr @.str.145, i64 129, i64 1, i64 %t38) + br i1 %t39, label %range152, label %inrange153 +range152: + call void @finch_panic_index(ptr @.str.153, i64 137, i64 1, i64 %t38) unreachable -inrange128: +inrange153: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 %t42 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 2, %t48 - br i1 %t49, label %range129, label %inrange130 -range129: - call void @finch_panic_index(ptr @.str.146, i64 130, i64 2, i64 %t48) + store { ptr, i64, i64 } { ptr @.str.154, i64 3, i64 0 }, ptr %a44 + %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) + %t46 = icmp ne i32 %t45, 0 + br label %logic.rend154 +logic.rend154: + br label %logic.end151 +logic.end151: + %t47 = phi i1 [ false, %logic.from149 ], [ %t46, %logic.rend154 ] + br i1 %t47, label %then155, label %endif157 +then155: + %t48 = load { ptr, i64, i64 }, ptr %a1 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 0, %t49 + br i1 %t50, label %range158, label %inrange159 +range158: + call void @finch_panic_index(ptr @.str.155, i64 138, i64 0, i64 %t49) unreachable -inrange130: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 2 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_copy(ptr %a54, ptr %a53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t55, ptr %a56 - %t57 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.from131 -logic.from131: - br i1 %t61, label %logic.rhs132, label %logic.end133 -logic.rhs132: - %t62 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.148, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend134 -logic.rend134: - br label %logic.end133 -logic.end133: - %t67 = phi i1 [ false, %logic.from131 ], [ %t66, %logic.rend134 ] - br label %logic.from135 -logic.from135: - br i1 %t67, label %logic.rhs136, label %logic.end137 -logic.rhs136: - %t68 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.149, i64 2, i64 0 }, ptr %a70 - %t71 = call i32 @finch_str_eq(ptr %a69, ptr %a70) - %t72 = icmp eq i32 %t71, 0 - br label %logic.rend138 -logic.rend138: - br label %logic.end137 -logic.end137: - %t73 = phi i1 [ false, %logic.from135 ], [ %t72, %logic.rend138 ] - br i1 %t73, label %then139, label %endif141 -then139: +inrange159: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 + %t53 = load { ptr, i64, i64 }, ptr %t52 + %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) + ret i64 %t54 +endif157: + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = icmp slt i64 %t56, 3 + br i1 %t57, label %then160, label %endif162 +then160: call void @finch.main.usage() - br label %endif141 -endif141: - %t74 = load { ptr, i64, i64 }, ptr %a56 - %t75 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t75, ptr %a76 - store i1 false, ptr %a77 - store i1 false, ptr %a78 - store i1 false, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.150, i64 0, i64 0 }, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.151, i64 3, i64 0 }, ptr %a81 - store { ptr, i64, i64 } zeroinitializer, ptr %a82 - store { ptr, i64, i64 } zeroinitializer, ptr %a83 - store { ptr, i64, i64 } zeroinitializer, ptr %a84 - store i64 3, ptr %a85 - br label %while.cond142 -while.cond142: - %t86 = load i64, ptr %a85 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp slt i64 %t86, %t88 - br i1 %t89, label %while.body143, label %while.end144 -while.body143: - %t90 = load i64, ptr %a85 - %t91 = load { ptr, i64, i64 }, ptr %a1 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range145, label %inrange146 -range145: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t90, i64 %t92) + br label %endif162 +endif162: + %t58 = load { ptr, i64, i64 }, ptr %a1 + %t59 = extractvalue { ptr, i64, i64 } %t58, 1 + %t60 = icmp uge i64 1, %t59 + br i1 %t60, label %range163, label %inrange164 +range163: + call void @finch_panic_index(ptr @.str.156, i64 143, i64 1, i64 %t59) unreachable -inrange146: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.153, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from147 -logic.from147: - br i1 %t105, label %logic.rhs148, label %logic.end149 -logic.rhs148: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = icmp sgt i64 %t107, 0 - br label %logic.rend150 -logic.rend150: - br label %logic.end149 -logic.end149: - %t109 = phi i1 [ false, %logic.from147 ], [ %t108, %logic.rend150 ] - br i1 %t109, label %then151, label %else152 -then151: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1 - %t111 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t110 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %a84, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %a84 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t110 - br label %endif153 -else152: - %t119 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.154, i64 2, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.from154 -logic.from154: - br i1 %t123, label %logic.rhs155, label %logic.end156 -logic.rhs155: - %t124 = load i64, ptr %a85 - %t125 = add i64 %t124, 1 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t127 = load i64, ptr %t126 - %t128 = icmp slt i64 %t125, %t127 - br label %logic.rend157 -logic.rend157: - br label %logic.end156 -logic.end156: - %t129 = phi i1 [ false, %logic.from154 ], [ %t128, %logic.rend157 ] - br label %logic.from158 -logic.from158: - br i1 %t129, label %logic.rhs159, label %logic.end160 -logic.rhs159: - %t130 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t130, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.155, i64 5, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.rend161 -logic.rend161: - br label %logic.end160 -logic.end160: - %t135 = phi i1 [ false, %logic.from158 ], [ %t134, %logic.rend161 ] - br i1 %t135, label %then162, label %else163 -then162: - %t136 = load i64, ptr %a85 - %t137 = add i64 %t136, 1 - %t138 = load { ptr, i64, i64 }, ptr %a1 - %t139 = extractvalue { ptr, i64, i64 } %t138, 1 - %t140 = icmp uge i64 %t137, %t139 - br i1 %t140, label %range165, label %inrange166 +inrange164: + %t61 = extractvalue { ptr, i64, i64 } %t58, 0 + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + call void @finch_str_copy(ptr %a65, ptr %a64) + %t66 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t66, ptr %a67 + %t68 = load { ptr, i64, i64 }, ptr %a1 + %t69 = extractvalue { ptr, i64, i64 } %t68, 1 + %t70 = icmp uge i64 2, %t69 + br i1 %t70, label %range165, label %inrange166 range165: - call void @finch_panic_index(ptr @.str.156, i64 149, i64 %t137, i64 %t139) + call void @finch_panic_index(ptr @.str.157, i64 144, i64 2, i64 %t69) unreachable inrange166: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t137 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } %t143, ptr %a144 - call void @finch_str_copy(ptr %a145, ptr %a144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t146, ptr %a76 - store i1 true, ptr %a77 - %t147 = load i64, ptr %a85 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a85 - br label %endif164 -else163: - %t149 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t149, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.157, i64 8, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 + %t71 = extractvalue { ptr, i64, i64 } %t68, 0 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 + %t73 = load { ptr, i64, i64 }, ptr %t72 + store { ptr, i64, i64 } %t73, ptr %a74 + call void @finch_str_copy(ptr %a75, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t76, ptr %a77 + %t78 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t78, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.158, i64 5, i64 0 }, ptr %a80 + %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) + %t82 = icmp eq i32 %t81, 0 br label %logic.from167 logic.from167: - br i1 %t153, label %logic.rhs168, label %logic.end169 + br i1 %t82, label %logic.rhs168, label %logic.end169 logic.rhs168: - %t154 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t154, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.158, i64 5, i64 0 }, ptr %a156 - %t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156) - %t158 = icmp ne i32 %t157, 0 + %t83 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t83, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.159, i64 3, i64 0 }, ptr %a85 + %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) + %t87 = icmp eq i32 %t86, 0 br label %logic.rend170 logic.rend170: br label %logic.end169 logic.end169: - %t159 = phi i1 [ false, %logic.from167 ], [ %t158, %logic.rend170 ] - br i1 %t159, label %then171, label %else172 -then171: - store i1 true, ptr %a78 - br label %endif173 -else172: - %t160 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.159, i64 3, i64 0 }, ptr %a162 - %t163 = call i32 @finch_str_eq(ptr %a161, ptr %a162) - %t164 = icmp ne i32 %t163, 0 - br i1 %t164, label %then174, label %else175 -then174: - store { ptr, i64, i64 } { ptr @.str.160, i64 3, i64 0 }, ptr %a81 - br label %endif176 -else175: - %t165 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.161, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from177 -logic.from177: - br i1 %t169, label %logic.rhs178, label %logic.end179 -logic.rhs178: - %t170 = load i64, ptr %a85 - %t171 = add i64 %t170, 1 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp slt i64 %t171, %t173 - br label %logic.rend180 -logic.rend180: - br label %logic.end179 -logic.end179: - %t175 = phi i1 [ false, %logic.from177 ], [ %t174, %logic.rend180 ] - br i1 %t175, label %then181, label %else182 -then181: - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %a82, i32 0, i32 1 - %t177 = load i64, ptr %a85 - %t178 = add i64 %t177, 1 - %t179 = load { ptr, i64, i64 }, ptr %a1 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range184, label %inrange185 -range184: - call void @finch_panic_index(ptr @.str.162, i64 157, i64 %t178, i64 %t180) + %t88 = phi i1 [ false, %logic.from167 ], [ %t87, %logic.rend170 ] + br label %logic.from171 +logic.from171: + br i1 %t88, label %logic.rhs172, label %logic.end173 +logic.rhs172: + %t89 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.160, i64 2, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp eq i32 %t92, 0 + br label %logic.rend174 +logic.rend174: + br label %logic.end173 +logic.end173: + %t94 = phi i1 [ false, %logic.from171 ], [ %t93, %logic.rend174 ] + br label %logic.from175 +logic.from175: + br i1 %t94, label %logic.rhs176, label %logic.end177 +logic.rhs176: + %t95 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t95, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.161, i64 5, i64 0 }, ptr %a97 + %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) + %t99 = icmp eq i32 %t98, 0 + br label %logic.rend178 +logic.rend178: + br label %logic.end177 +logic.end177: + %t100 = phi i1 [ false, %logic.from175 ], [ %t99, %logic.rend178 ] + br i1 %t100, label %then179, label %endif181 +then179: + call void @finch.main.usage() + br label %endif181 +endif181: + %t101 = load { ptr, i64, i64 }, ptr %a77 + %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) + store { ptr, i64, i64 } %t102, ptr %a103 + store i1 false, ptr %a104 + store i1 false, ptr %a105 + store i1 false, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.162, i64 0, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.163, i64 3, i64 0 }, ptr %a108 + store { ptr, i64, i64 } zeroinitializer, ptr %a109 + store { ptr, i64, i64 } zeroinitializer, ptr %a110 + store { ptr, i64, i64 } zeroinitializer, ptr %a111 + store { ptr, i64, i64 } zeroinitializer, ptr %a112 + store { ptr, i64, i64 } zeroinitializer, ptr %a113 + store i64 3, ptr %a114 + br label %while.cond182 +while.cond182: + %t115 = load i64, ptr %a114 + %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t117 = load i64, ptr %t116 + %t118 = icmp slt i64 %t115, %t117 + br i1 %t118, label %while.body183, label %while.end184 +while.body183: + %t119 = load i64, ptr %a114 + %t120 = load { ptr, i64, i64 }, ptr %a1 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 %t119, %t121 + br i1 %t122, label %range185, label %inrange186 +range185: + call void @finch_panic_index(ptr @.str.164, i64 161, i64 %t119, i64 %t121) unreachable -inrange185: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t184, ptr %a185 - call void @finch_str_copy(ptr %a186, ptr %a185) - %t187 = load { ptr, i64, i64 }, ptr %a186 - %t188 = load i64, ptr %t176 - %t189 = add i64 %t188, 1 - call void @finch_arr_reserve(ptr %a82, i64 %t189, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t190 = load ptr, ptr %a82 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t188 - store { ptr, i64, i64 } %t187, ptr %t191 - store i64 %t189, ptr %t176 - %t192 = load i64, ptr %a85 - %t193 = add i64 %t192, 1 - store i64 %t193, ptr %a85 - br label %endif183 -else182: - %t194 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.164, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_starts(ptr %a195, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.from186 -logic.from186: - br i1 %t199, label %logic.rhs187, label %logic.end188 -logic.rhs187: - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1 - %t201 = load i64, ptr %t200 - %t202 = icmp sgt i64 %t201, 2 - br label %logic.rend189 -logic.rend189: - br label %logic.end188 -logic.end188: - %t203 = phi i1 [ false, %logic.from186 ], [ %t202, %logic.rend189 ] - br i1 %t203, label %then190, label %else191 -then190: - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %a82, i32 0, i32 1 - %t205 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t205, ptr %a206 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a100, i32 0, i32 1 - %t209 = load i64, ptr %t208 - call void @finch_str_sub(ptr %a207, ptr %a206, i64 2, i64 %t209, ptr @.str.165, i64 160) - %t210 = load { ptr, i64, i64 }, ptr %a207 - %t211 = load i64, ptr %t204 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %a82, i64 %t212, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %a82 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t213, i64 %t211 - store { ptr, i64, i64 } %t210, ptr %t214 - store i64 %t212, ptr %t204 - br label %endif192 -else191: - %t215 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.166, i64 2, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from193 -logic.from193: - br i1 %t219, label %logic.rhs194, label %logic.end195 -logic.rhs194: - %t220 = load i64, ptr %a85 - %t221 = add i64 %t220, 1 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp slt i64 %t221, %t223 - br label %logic.rend196 -logic.rend196: - br label %logic.end195 -logic.end195: - %t225 = phi i1 [ false, %logic.from193 ], [ %t224, %logic.rend196 ] - br i1 %t225, label %then197, label %else198 -then197: - %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %a83, i32 0, i32 1 - %t227 = load i64, ptr %a85 - %t228 = add i64 %t227, 1 - %t229 = load { ptr, i64, i64 }, ptr %a1 - %t230 = extractvalue { ptr, i64, i64 } %t229, 1 - %t231 = icmp uge i64 %t228, %t230 - br i1 %t231, label %range200, label %inrange201 -range200: - call void @finch_panic_index(ptr @.str.167, i64 162, i64 %t228, i64 %t230) - unreachable -inrange201: - %t232 = extractvalue { ptr, i64, i64 } %t229, 0 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t228 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_copy(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - %t238 = load i64, ptr %t226 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %a83, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %a83 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } %t237, ptr %t241 - store i64 %t239, ptr %t226 - %t242 = load i64, ptr %a85 - %t243 = add i64 %t242, 1 - store i64 %t243, ptr %a85 - br label %endif199 -else198: - %t244 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.168, i64 2, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then202, label %else203 +inrange186: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 + %t125 = load { ptr, i64, i64 }, ptr %t124 + store { ptr, i64, i64 } %t125, ptr %a126 + call void @finch_str_copy(ptr %a127, ptr %a126) + %t128 = load { ptr, i64, i64 }, ptr %a127 + store { ptr, i64, i64 } %t128, ptr %a129 + %t130 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t130, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.165, i64 3, i64 0 }, ptr %a132 + %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) + %t134 = icmp ne i32 %t133, 0 + br label %logic.from187 +logic.from187: + br i1 %t134, label %logic.rhs188, label %logic.end189 +logic.rhs188: + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t136 = load i64, ptr %t135 + %t137 = icmp sgt i64 %t136, 0 + br label %logic.rend190 +logic.rend190: + br label %logic.end189 +logic.end189: + %t138 = phi i1 [ false, %logic.from187 ], [ %t137, %logic.rend190 ] + br i1 %t138, label %then191, label %else192 +then191: + %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t140 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t140, ptr %a141 + call void @finch_str_copy(ptr %a142, ptr %a141) + %t143 = load { ptr, i64, i64 }, ptr %a142 + %t144 = load i64, ptr %t139 + %t145 = add i64 %t144, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t145, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t146 = load ptr, ptr %a113 + %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t144 + store { ptr, i64, i64 } %t143, ptr %t147 + store i64 %t145, ptr %t139 + br label %endif193 +else192: + %t148 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t148, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.166, i64 2, i64 0 }, ptr %a150 + %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) + %t152 = icmp ne i32 %t151, 0 + br label %logic.from194 +logic.from194: + br i1 %t152, label %logic.rhs195, label %logic.end196 +logic.rhs195: + %t153 = load i64, ptr %a114 + %t154 = add i64 %t153, 1 + %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t156 = load i64, ptr %t155 + %t157 = icmp slt i64 %t154, %t156 + br label %logic.rend197 +logic.rend197: + br label %logic.end196 +logic.end196: + %t158 = phi i1 [ false, %logic.from194 ], [ %t157, %logic.rend197 ] + br label %logic.from198 +logic.from198: + br i1 %t158, label %logic.rhs199, label %logic.end200 +logic.rhs199: + %t159 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t159, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.167, i64 5, i64 0 }, ptr %a161 + %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) + %t163 = icmp ne i32 %t162, 0 + br label %logic.rend201 +logic.rend201: + br label %logic.end200 +logic.end200: + %t164 = phi i1 [ false, %logic.from198 ], [ %t163, %logic.rend201 ] + br i1 %t164, label %then202, label %else203 then202: - store i1 true, ptr %a79 + %t165 = load i64, ptr %a114 + %t166 = add i64 %t165, 1 + %t167 = load { ptr, i64, i64 }, ptr %a1 + %t168 = extractvalue { ptr, i64, i64 } %t167, 1 + %t169 = icmp uge i64 %t166, %t168 + br i1 %t169, label %range205, label %inrange206 +range205: + call void @finch_panic_index(ptr @.str.168, i64 165, i64 %t166, i64 %t168) + unreachable +inrange206: + %t170 = extractvalue { ptr, i64, i64 } %t167, 0 + %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 + %t172 = load { ptr, i64, i64 }, ptr %t171 + store { ptr, i64, i64 } %t172, ptr %a173 + call void @finch_str_copy(ptr %a174, ptr %a173) + %t175 = load { ptr, i64, i64 }, ptr %a174 + store { ptr, i64, i64 } %t175, ptr %a103 + store i1 true, ptr %a104 + %t176 = load i64, ptr %a114 + %t177 = add i64 %t176, 1 + store i64 %t177, ptr %a114 br label %endif204 else203: - %t249 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.169, i64 8, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br label %logic.from205 -logic.from205: - br i1 %t253, label %logic.rhs206, label %logic.end207 -logic.rhs206: - %t254 = load i64, ptr %a85 - %t255 = add i64 %t254, 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp slt i64 %t255, %t257 - br label %logic.rend208 -logic.rend208: - br label %logic.end207 -logic.end207: - %t259 = phi i1 [ false, %logic.from205 ], [ %t258, %logic.rend208 ] - br i1 %t259, label %then209, label %else210 -then209: - %t260 = load i64, ptr %a85 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range212, label %inrange213 -range212: - call void @finch_panic_index(ptr @.str.170, i64 167, i64 %t261, i64 %t263) - unreachable -inrange213: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t270, ptr %a80 - %t271 = load i64, ptr %a85 - %t272 = add i64 %t271, 1 - store i64 %t272, ptr %a85 - br label %endif211 -else210: - %t273 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t273, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.171, i64 3, i64 0 }, ptr %a275 - %t276 = call i32 @finch_str_eq(ptr %a274, ptr %a275) - %t277 = icmp ne i32 %t276, 0 - br i1 %t277, label %then214, label %else215 + %t178 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t178, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.169, i64 8, i64 0 }, ptr %a180 + %t181 = call i32 @finch_str_eq(ptr %a179, ptr %a180) + %t182 = icmp ne i32 %t181, 0 + br label %logic.from207 +logic.from207: + br i1 %t182, label %logic.rhs208, label %logic.end209 +logic.rhs208: + %t183 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t183, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.170, i64 5, i64 0 }, ptr %a185 + %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) + %t187 = icmp ne i32 %t186, 0 + br label %logic.rend210 +logic.rend210: + br label %logic.end209 +logic.end209: + %t188 = phi i1 [ false, %logic.from207 ], [ %t187, %logic.rend210 ] + br i1 %t188, label %then211, label %else212 +then211: + store i1 true, ptr %a105 + br label %endif213 +else212: + %t189 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t189, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.171, i64 3, i64 0 }, ptr %a191 + %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) + %t193 = icmp ne i32 %t192, 0 + br i1 %t193, label %then214, label %else215 then214: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1 - %t279 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t279, ptr %a280 - call void @finch_str_copy(ptr %a281, ptr %a280) - %t282 = load { ptr, i64, i64 }, ptr %a281 - %t283 = load i64, ptr %t278 - %t284 = add i64 %t283, 1 - call void @finch_arr_reserve(ptr %a84, i64 %t284, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t285 = load ptr, ptr %a84 - %t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t285, i64 %t283 - store { ptr, i64, i64 } %t282, ptr %t286 - store i64 %t284, ptr %t278 + store { ptr, i64, i64 } { ptr @.str.172, i64 3, i64 0 }, ptr %a108 br label %endif216 else215: - call void @finch.main.usage() - br label %endif216 -endif216: - br label %endif211 -endif211: - br label %endif204 -endif204: - br label %endif199 -endif199: - br label %endif192 -endif192: - br label %endif183 -endif183: - br label %endif176 -endif176: - br label %endif173 -endif173: - br label %endif164 -endif164: - br label %endif153 -endif153: - %t287 = load i64, ptr %a85 - %t288 = add i64 %t287, 1 - store i64 %t288, ptr %a85 - br label %while.cond142 -while.end144: - %t289 = load { ptr, i64, i64 }, ptr %a80 - %t290 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t289) - store %S.platform.Target %t290, ptr %a291 - %t292 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t292, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.172, i64 3, i64 0 }, ptr %a294 - %t295 = call i32 @finch_str_eq(ptr %a293, ptr %a294) - %t296 = icmp ne i32 %t295, 0 - br i1 %t296, label %then217, label %else218 -then217: - %t297 = load { ptr, i64, i64 }, ptr %a56 - %t298 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t297) - store { ptr, i64, i64 } { ptr @.str.173, i64 15, i64 0 }, ptr %a300 - store { ptr, i64, i64 } %t298, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a299 - %t303 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 6 - %t304 = load { ptr, i64, i64 }, ptr %t303 - store { ptr, i64, i64 } %t302, ptr %a306 - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_concat(ptr %a305, ptr %a306, ptr %a307) - %t308 = load { ptr, i64, i64 }, ptr %a305 - store { ptr, i64, i64 } %t308, ptr %a76 - br label %endif219 -else218: - %t309 = load i1, ptr %a78 - br label %logic.from220 -logic.from220: - br i1 %t309, label %logic.rhs221, label %logic.end222 -logic.rhs221: - %t310 = load i1, ptr %a77 - %t311 = xor i1 %t310, true - br label %logic.rend223 -logic.rend223: - br label %logic.end222 -logic.end222: - %t312 = phi i1 [ false, %logic.from220 ], [ %t311, %logic.rend223 ] - br i1 %t312, label %then224, label %else225 -then224: - %t313 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1 - %t314 = load i1, ptr %t313 - br i1 %t314, label %then227, label %else228 -then227: - %t315 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.174, i64 4, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t319, ptr %a76 - br label %endif229 -else228: - %t320 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 3 - %t321 = load i1, ptr %t320 - br i1 %t321, label %then230, label %else231 + %t194 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t194, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.173, i64 2, i64 0 }, ptr %a196 + %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) + %t198 = icmp ne i32 %t197, 0 + br label %logic.from217 +logic.from217: + br i1 %t198, label %logic.rhs218, label %logic.end219 +logic.rhs218: + %t199 = load i64, ptr %a114 + %t200 = add i64 %t199, 1 + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t202 = load i64, ptr %t201 + %t203 = icmp slt i64 %t200, %t202 + br label %logic.rend220 +logic.rend220: + br label %logic.end219 +logic.end219: + %t204 = phi i1 [ false, %logic.from217 ], [ %t203, %logic.rend220 ] + br i1 %t204, label %then221, label %else222 +then221: + %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t206 = load i64, ptr %a114 + %t207 = add i64 %t206, 1 + %t208 = load { ptr, i64, i64 }, ptr %a1 + %t209 = extractvalue { ptr, i64, i64 } %t208, 1 + %t210 = icmp uge i64 %t207, %t209 + br i1 %t210, label %range224, label %inrange225 +range224: + call void @finch_panic_index(ptr @.str.174, i64 173, i64 %t207, i64 %t209) + unreachable +inrange225: + %t211 = extractvalue { ptr, i64, i64 } %t208, 0 + %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t211, i64 %t207 + %t213 = load { ptr, i64, i64 }, ptr %t212 + store { ptr, i64, i64 } %t213, ptr %a214 + call void @finch_str_copy(ptr %a215, ptr %a214) + %t216 = load { ptr, i64, i64 }, ptr %a215 + %t217 = load i64, ptr %t205 + %t218 = add i64 %t217, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t219 = load ptr, ptr %a109 + %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 + store { ptr, i64, i64 } %t216, ptr %t220 + store i64 %t218, ptr %t205 + %t221 = load i64, ptr %a114 + %t222 = add i64 %t221, 1 + store i64 %t222, ptr %a114 + br label %endif223 +else222: + %t223 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t223, ptr %a224 + store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a226 + %t227 = call i32 @finch_str_starts(ptr %a224, ptr %a226) + %t228 = icmp ne i32 %t227, 0 + br label %logic.from226 +logic.from226: + br i1 %t228, label %logic.rhs227, label %logic.end228 +logic.rhs227: + %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t230 = load i64, ptr %t229 + %t231 = icmp sgt i64 %t230, 2 + br label %logic.rend229 +logic.rend229: + br label %logic.end228 +logic.end228: + %t232 = phi i1 [ false, %logic.from226 ], [ %t231, %logic.rend229 ] + br i1 %t232, label %then230, label %else231 then230: - %t322 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.175, i64 3, i64 0 }, ptr %a324 - store { ptr, i64, i64 } %t322, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t326, ptr %a328 - store { ptr, i64, i64 } { ptr @.str.176, i64 6, i64 0 }, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a76 + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 + %t234 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t234, ptr %a235 + %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 + %t238 = load i64, ptr %t237 + call void @finch_str_sub(ptr %a236, ptr %a235, i64 2, i64 %t238, ptr @.str.177, i64 176) + %t239 = load { ptr, i64, i64 }, ptr %a236 + %t240 = load i64, ptr %t233 + %t241 = add i64 %t240, 1 + call void @finch_arr_reserve(ptr %a109, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t242 = load ptr, ptr %a109 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 + store { ptr, i64, i64 } %t239, ptr %t243 + store i64 %t241, ptr %t233 br label %endif232 else231: - %t331 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.177, i64 3, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t335, ptr %a337 - store { ptr, i64, i64 } { ptr @.str.178, i64 3, i64 0 }, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t339, ptr %a76 + %t244 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t244, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.178, i64 2, i64 0 }, ptr %a246 + %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) + %t248 = icmp ne i32 %t247, 0 + br label %logic.from233 +logic.from233: + br i1 %t248, label %logic.rhs234, label %logic.end235 +logic.rhs234: + %t249 = load i64, ptr %a114 + %t250 = add i64 %t249, 1 + %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t252 = load i64, ptr %t251 + %t253 = icmp slt i64 %t250, %t252 + br label %logic.rend236 +logic.rend236: + br label %logic.end235 +logic.end235: + %t254 = phi i1 [ false, %logic.from233 ], [ %t253, %logic.rend236 ] + br i1 %t254, label %then237, label %else238 +then237: + %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 + %t256 = load i64, ptr %a114 + %t257 = add i64 %t256, 1 + %t258 = load { ptr, i64, i64 }, ptr %a1 + %t259 = extractvalue { ptr, i64, i64 } %t258, 1 + %t260 = icmp uge i64 %t257, %t259 + br i1 %t260, label %range240, label %inrange241 +range240: + call void @finch_panic_index(ptr @.str.179, i64 178, i64 %t257, i64 %t259) + unreachable +inrange241: + %t261 = extractvalue { ptr, i64, i64 } %t258, 0 + %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t257 + %t263 = load { ptr, i64, i64 }, ptr %t262 + store { ptr, i64, i64 } %t263, ptr %a264 + call void @finch_str_copy(ptr %a265, ptr %a264) + %t266 = load { ptr, i64, i64 }, ptr %a265 + %t267 = load i64, ptr %t255 + %t268 = add i64 %t267, 1 + call void @finch_arr_reserve(ptr %a110, i64 %t268, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t269 = load ptr, ptr %a110 + %t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i64 %t267 + store { ptr, i64, i64 } %t266, ptr %t270 + store i64 %t268, ptr %t255 + %t271 = load i64, ptr %a114 + %t272 = add i64 %t271, 1 + store i64 %t272, ptr %a114 + br label %endif239 +else238: + %t273 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t273, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.180, i64 9, i64 0 }, ptr %a275 + %t276 = call i32 @finch_str_eq(ptr %a274, ptr %a275) + %t277 = icmp ne i32 %t276, 0 + br label %logic.from242 +logic.from242: + br i1 %t277, label %logic.rhs243, label %logic.end244 +logic.rhs243: + %t278 = load i64, ptr %a114 + %t279 = add i64 %t278, 1 + %t280 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t281 = load i64, ptr %t280 + %t282 = icmp slt i64 %t279, %t281 + br label %logic.rend245 +logic.rend245: + br label %logic.end244 +logic.end244: + %t283 = phi i1 [ false, %logic.from242 ], [ %t282, %logic.rend245 ] + br i1 %t283, label %then246, label %else247 +then246: + %t284 = load i64, ptr %a114 + %t285 = add i64 %t284, 1 + %t286 = load { ptr, i64, i64 }, ptr %a1 + %t287 = extractvalue { ptr, i64, i64 } %t286, 1 + %t288 = icmp uge i64 %t285, %t287 + br i1 %t288, label %range249, label %inrange250 +range249: + call void @finch_panic_index(ptr @.str.181, i64 181, i64 %t285, i64 %t287) + unreachable +inrange250: + %t289 = extractvalue { ptr, i64, i64 } %t286, 0 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i64 %t285 + %t291 = load { ptr, i64, i64 }, ptr %t290 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.183, i64 1, i64 0 }, ptr %a294 + call void @finch_str_split(ptr %a295, ptr %a292, ptr %a294) + %t296 = load { ptr, i64, i64 }, ptr %a295 + store { ptr, i64, i64 } %t296, ptr %a297 + %t298 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 + %t299 = load { ptr, i64, i64 }, ptr %a297 + %t300 = extractvalue { ptr, i64, i64 } %t299, 1 + %t301 = icmp uge i64 0, %t300 + br i1 %t301, label %range251, label %inrange252 +range251: + call void @finch_panic_index(ptr @.str.184, i64 182, i64 0, i64 %t300) + unreachable +inrange252: + %t302 = extractvalue { ptr, i64, i64 } %t299, 0 + %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i64 0 + %t304 = load { ptr, i64, i64 }, ptr %t303 + store { ptr, i64, i64 } %t304, ptr %a305 + call void @finch_str_copy(ptr %a306, ptr %a305) + %t307 = load { ptr, i64, i64 }, ptr %a306 + %t308 = load i64, ptr %t298 + %t309 = add i64 %t308, 1 + call void @finch_arr_reserve(ptr %a111, i64 %t309, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t310 = load ptr, ptr %a111 + %t311 = getelementptr inbounds { ptr, i64, i64 }, ptr %t310, i64 %t308 + store { ptr, i64, i64 } %t307, ptr %t311 + store i64 %t309, ptr %t298 + %t312 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 + %t313 = load { ptr, i64, i64 }, ptr %a297 + %t314 = extractvalue { ptr, i64, i64 } %t313, 1 + %t315 = icmp uge i64 1, %t314 + br i1 %t315, label %range253, label %inrange254 +range253: + call void @finch_panic_index(ptr @.str.185, i64 183, i64 1, i64 %t314) + unreachable +inrange254: + %t316 = extractvalue { ptr, i64, i64 } %t313, 0 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 1 + %t318 = load { ptr, i64, i64 }, ptr %t317 + store { ptr, i64, i64 } %t318, ptr %a319 + call void @finch_str_copy(ptr %a320, ptr %a319) + %t321 = load { ptr, i64, i64 }, ptr %a320 + %t322 = load i64, ptr %t312 + %t323 = add i64 %t322, 1 + call void @finch_arr_reserve(ptr %a112, i64 %t323, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t324 = load ptr, ptr %a112 + %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i64 %t322 + store { ptr, i64, i64 } %t321, ptr %t325 + store i64 %t323, ptr %t312 + %t326 = load i64, ptr %a114 + %t327 = add i64 %t326, 1 + store i64 %t327, ptr %a114 + br label %endif248 +else247: + %t328 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a330 + %t331 = call i32 @finch_str_eq(ptr %a329, ptr %a330) + %t332 = icmp ne i32 %t331, 0 + br i1 %t332, label %then255, label %else256 +then255: + store i1 true, ptr %a106 + br label %endif257 +else256: + %t333 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t333, ptr %a334 + store { ptr, i64, i64 } { ptr @.str.187, i64 8, i64 0 }, ptr %a335 + %t336 = call i32 @finch_str_eq(ptr %a334, ptr %a335) + %t337 = icmp ne i32 %t336, 0 + br label %logic.from258 +logic.from258: + br i1 %t337, label %logic.rhs259, label %logic.end260 +logic.rhs259: + %t338 = load i64, ptr %a114 + %t339 = add i64 %t338, 1 + %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t341 = load i64, ptr %t340 + %t342 = icmp slt i64 %t339, %t341 + br label %logic.rend261 +logic.rend261: + br label %logic.end260 +logic.end260: + %t343 = phi i1 [ false, %logic.from258 ], [ %t342, %logic.rend261 ] + br i1 %t343, label %then262, label %else263 +then262: + %t344 = load i64, ptr %a114 + %t345 = add i64 %t344, 1 + %t346 = load { ptr, i64, i64 }, ptr %a1 + %t347 = extractvalue { ptr, i64, i64 } %t346, 1 + %t348 = icmp uge i64 %t345, %t347 + br i1 %t348, label %range265, label %inrange266 +range265: + call void @finch_panic_index(ptr @.str.188, i64 188, i64 %t345, i64 %t347) + unreachable +inrange266: + %t349 = extractvalue { ptr, i64, i64 } %t346, 0 + %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i64 %t345 + %t351 = load { ptr, i64, i64 }, ptr %t350 + store { ptr, i64, i64 } %t351, ptr %a352 + call void @finch_str_copy(ptr %a353, ptr %a352) + %t354 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t354, ptr %a107 + %t355 = load i64, ptr %a114 + %t356 = add i64 %t355, 1 + store i64 %t356, ptr %a114 + br label %endif264 +else263: + %t357 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t357, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.189, i64 3, i64 0 }, ptr %a359 + %t360 = call i32 @finch_str_eq(ptr %a358, ptr %a359) + %t361 = icmp ne i32 %t360, 0 + br i1 %t361, label %then267, label %else268 +then267: + %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t363 = load { ptr, i64, i64 }, ptr %a129 + store { ptr, i64, i64 } %t363, ptr %a364 + call void @finch_str_copy(ptr %a365, ptr %a364) + %t366 = load { ptr, i64, i64 }, ptr %a365 + %t367 = load i64, ptr %t362 + %t368 = add i64 %t367, 1 + call void @finch_arr_reserve(ptr %a113, i64 %t368, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t369 = load ptr, ptr %a113 + %t370 = getelementptr inbounds { ptr, i64, i64 }, ptr %t369, i64 %t367 + store { ptr, i64, i64 } %t366, ptr %t370 + store i64 %t368, ptr %t362 + br label %endif269 +else268: + call void @finch.main.usage() + br label %endif269 +endif269: + br label %endif264 +endif264: + br label %endif257 +endif257: + br label %endif248 +endif248: + br label %endif239 +endif239: br label %endif232 endif232: - br label %endif229 -endif229: - br label %endif226 -else225: - %t340 = load i1, ptr %a77 - %t341 = xor i1 %t340, true - br i1 %t341, label %then233, label %endif235 -then233: - %t342 = load { ptr, i64, i64 }, ptr %a76 - %t343 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 6 - %t344 = load { ptr, i64, i64 }, ptr %t343 - store { ptr, i64, i64 } %t342, ptr %a346 - store { ptr, i64, i64 } %t344, ptr %a347 - call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a345 - store { ptr, i64, i64 } %t348, ptr %a76 - br label %endif235 -endif235: - br label %endif226 -endif226: - br label %endif219 -endif219: - store %S.main.Loader zeroinitializer, ptr %a349 - %t350 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3 - store { ptr, i64, i64 } { ptr @.str.179, i64 5, i64 0 }, ptr %t350 - %t351 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1 - %t352 = load i1, ptr %t351 - br i1 %t352, label %then236, label %else237 -then236: - %t353 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3 - store { ptr, i64, i64 } { ptr @.str.180, i64 7, i64 0 }, ptr %t353 - br label %endif238 -else237: - %t354 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 3 - %t355 = load i1, ptr %t354 - br i1 %t355, label %then239, label %endif241 -then239: - %t356 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 3 - store { ptr, i64, i64 } { ptr @.str.181, i64 5, i64 0 }, ptr %t356 - br label %endif241 -endif241: - br label %endif238 -endif238: - %t357 = load { ptr, i64, i64 }, ptr %a1 - %t358 = extractvalue { ptr, i64, i64 } %t357, 1 - %t359 = icmp uge i64 0, %t358 - br i1 %t359, label %range242, label %inrange243 -range242: - call void @finch_panic_index(ptr @.str.182, i64 198, i64 0, i64 %t358) - unreachable -inrange243: - %t360 = extractvalue { ptr, i64, i64 } %t357, 0 - %t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t360, i64 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t362) - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.183, i64 7, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a364 - %t368 = load { ptr, i64, i64 }, ptr %a1 - %t369 = extractvalue { ptr, i64, i64 } %t368, 1 - %t370 = icmp uge i64 0, %t369 - br i1 %t370, label %range244, label %inrange245 -range244: - call void @finch_panic_index(ptr @.str.184, i64 198, i64 0, i64 %t369) - unreachable -inrange245: - %t371 = extractvalue { ptr, i64, i64 } %t368, 0 - %t372 = getelementptr inbounds { ptr, i64, i64 }, ptr %t371, i64 0 - %t373 = load { ptr, i64, i64 }, ptr %t372 - %t374 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t374, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.185, i64 4, i64 0 }, ptr %a377 - call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a375 - %t379 = mul i64 3, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t380 = call ptr @finch_alloc(i64 %t379) - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 0 - store { ptr, i64, i64 } %t367, ptr %t381 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 1 - store { ptr, i64, i64 } %t378, ptr %t382 - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 2 - store { ptr, i64, i64 } { ptr @.str.186, i64 3, i64 0 }, ptr %t383 - %t384 = insertvalue { ptr, i64, i64 } undef, ptr %t380, 0 - %t385 = insertvalue { ptr, i64, i64 } %t384, i64 3, 1 - %t386 = insertvalue { ptr, i64, i64 } %t385, i64 3, 2 - store { ptr, i64, i64 } %t386, ptr %a387 - store i64 0, ptr %a388 - br label %each.cond246 -each.cond246: - %t389 = getelementptr inbounds { ptr, i64, i64 }, ptr %a387, i32 0, i32 1 - %t390 = load i64, ptr %t389 - %t391 = load i64, ptr %a388 - %t392 = icmp slt i64 %t391, %t390 - br i1 %t392, label %each.body247, label %each.end249 -each.body247: - %t393 = load ptr, ptr %a387 - %t394 = getelementptr inbounds { ptr, i64, i64 }, ptr %t393, i64 %t391 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 4 - %t398 = getelementptr inbounds { ptr, i64, i64 }, ptr %t397, i32 0, i32 1 - %t399 = load i64, ptr %t398 - %t400 = icmp eq i64 %t399, 0 - br label %logic.from250 -logic.from250: - br i1 %t400, label %logic.rhs251, label %logic.end252 -logic.rhs251: - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.187, i64 9, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - %t405 = load { ptr, i64, i64 }, ptr %a402 - store { ptr, i64, i64 } %t405, ptr %a406 - %t407 = call i32 @finch_file_exists(ptr %a406) - %t408 = icmp ne i32 %t407, 0 - br label %logic.rend253 -logic.rend253: - br label %logic.end252 -logic.end252: - %t409 = phi i1 [ false, %logic.from250 ], [ %t408, %logic.rend253 ] - br i1 %t409, label %then254, label %endif256 -then254: - %t410 = load { ptr, i64, i64 }, ptr %a396 - %t411 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 4 + br label %endif223 +endif223: + br label %endif216 +endif216: + br label %endif213 +endif213: + br label %endif204 +endif204: + br label %endif193 +endif193: + %t371 = load i64, ptr %a114 + %t372 = add i64 %t371, 1 + store i64 %t372, ptr %a114 + br label %while.cond182 +while.end184: + %t373 = load { ptr, i64, i64 }, ptr %a107 + %t374 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t373) + store %S.platform.Target %t374, ptr %a375 + %t376 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t376, ptr %a377 + store { ptr, i64, i64 } { ptr @.str.190, i64 3, i64 0 }, ptr %a378 + %t379 = call i32 @finch_str_eq(ptr %a377, ptr %a378) + %t380 = icmp ne i32 %t379, 0 + br i1 %t380, label %then270, label %else271 +then270: + %t381 = load { ptr, i64, i64 }, ptr %a77 + %t382 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t381) + store { ptr, i64, i64 } { ptr @.str.191, i64 15, i64 0 }, ptr %a384 + store { ptr, i64, i64 } %t382, ptr %a385 + call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a383 + %t387 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 6 + %t388 = load { ptr, i64, i64 }, ptr %t387 + store { ptr, i64, i64 } %t386, ptr %a390 + store { ptr, i64, i64 } %t388, ptr %a391 + call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) + %t392 = load { ptr, i64, i64 }, ptr %a389 + store { ptr, i64, i64 } %t392, ptr %a103 + br label %endif272 +else271: + %t393 = load i1, ptr %a105 + br label %logic.from273 +logic.from273: + br i1 %t393, label %logic.rhs274, label %logic.end275 +logic.rhs274: + %t394 = load i1, ptr %a104 + %t395 = xor i1 %t394, true + br label %logic.rend276 +logic.rend276: + br label %logic.end275 +logic.end275: + %t396 = phi i1 [ false, %logic.from273 ], [ %t395, %logic.rend276 ] + br i1 %t396, label %then277, label %else278 +then277: + %t397 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 1 + %t398 = load i1, ptr %t397 + br i1 %t398, label %then280, label %else281 +then280: + %t399 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.192, i64 4, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + %t403 = load { ptr, i64, i64 }, ptr %a400 + store { ptr, i64, i64 } %t403, ptr %a103 + br label %endif282 +else281: + %t404 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 3 + %t405 = load i1, ptr %t404 + br i1 %t405, label %then283, label %else284 +then283: + %t406 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.193, i64 3, i64 0 }, ptr %a408 + store { ptr, i64, i64 } %t406, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a407 store { ptr, i64, i64 } %t410, ptr %a412 - call void @finch_str_copy(ptr %a413, ptr %a412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t414, ptr %t411 - br label %endif256 -endif256: - br label %each.step248 -each.step248: - %t415 = load i64, ptr %a388 - %t416 = add i64 %t415, 1 - store i64 %t416, ptr %a388 - br label %each.cond246 -each.end249: - %t417 = extractvalue { ptr, i64, i64 } { ptr @.str.188, i64 10, i64 0 }, 0 - %t418 = icmp eq ptr %t417, null - %t419 = select i1 %t418, ptr @.str.189, ptr %t417 - %t420 = call ptr @getenv(ptr %t419) - store { ptr, i64, i64 } zeroinitializer, ptr %a421 - call void @finch_str_from_c(ptr %a421, ptr %t420) - %t422 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.191, i64 1, i64 0 }, ptr %a425 - call void @finch_str_split(ptr %a426, ptr %a423, ptr %a425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t427, ptr %a428 - store i64 0, ptr %a429 - br label %each.cond257 -each.cond257: - %t430 = getelementptr inbounds { ptr, i64, i64 }, ptr %a428, i32 0, i32 1 - %t431 = load i64, ptr %t430 - %t432 = load i64, ptr %a429 - %t433 = icmp slt i64 %t432, %t431 - br i1 %t433, label %each.body258, label %each.end260 -each.body258: - %t434 = load ptr, ptr %a428 - %t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i64 %t432 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - %t438 = getelementptr inbounds { ptr, i64, i64 }, ptr %a437, i32 0, i32 1 - %t439 = load i64, ptr %t438 - %t440 = icmp sgt i64 %t439, 0 - br i1 %t440, label %then261, label %endif263 -then261: - %t441 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 5 - %t442 = getelementptr inbounds { ptr, i64, i64 }, ptr %t441, i32 0, i32 1 - %t443 = load { ptr, i64, i64 }, ptr %a437 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_copy(ptr %a445, ptr %a444) - %t446 = load { ptr, i64, i64 }, ptr %a445 - %t447 = load i64, ptr %t442 - %t448 = add i64 %t447, 1 - call void @finch_arr_reserve(ptr %t441, i64 %t448, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t449 = load ptr, ptr %t441 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i64 %t447 - store { ptr, i64, i64 } %t446, ptr %t450 - store i64 %t448, ptr %t442 - br label %endif263 -endif263: - br label %each.step259 -each.step259: - %t451 = load i64, ptr %a429 - %t452 = add i64 %t451, 1 - store i64 %t452, ptr %a429 - br label %each.cond257 -each.end260: - %t453 = load { ptr, i64, i64 }, ptr %a56 - call void @finch.main.load(ptr %a349, { ptr, i64, i64 } %t453, { ptr, i64, i64 } { ptr @.str.192, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a454 - store { ptr, i64, i64 } zeroinitializer, ptr %a455 - %t456 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t456, ptr %a457 - call void @finch.copy.arr_str(ptr %a458, ptr %a457) - %t459 = load { ptr, i64, i64 }, ptr %a458 - store { ptr, i64, i64 } %t459, ptr %a460 - %t461 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch.copy.arr_str(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t464, ptr %a465 - %t466 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 0 - store i64 0, ptr %a467 - br label %each.cond264 -each.cond264: - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i32 0, i32 1 - %t469 = load i64, ptr %t468 - %t470 = load i64, ptr %a467 - %t471 = icmp slt i64 %t470, %t469 - br i1 %t471, label %each.body265, label %each.end267 -each.body265: - %t472 = load ptr, ptr %t466 - %t473 = getelementptr inbounds %S.ast.Program, ptr %t472, i64 %t470 - %t474 = load %S.ast.Program, ptr %t473 - store %S.ast.Program %t474, ptr %a475 - %t476 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 1 - %t477 = load { ptr, i64, i64 }, ptr %t476 - %t478 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t477) - store { ptr, i64, i64 } %t478, ptr %a479 - %t480 = getelementptr inbounds { ptr, i64, i64 }, ptr %a460, i32 0, i32 1 - %t481 = load { ptr, i64, i64 }, ptr %a479 - store i64 -1, ptr %a482 - %t483 = load i64, ptr %t480 - %t484 = load ptr, ptr %a460 - store i64 0, ptr %a485 - br label %find.cond268 -find.cond268: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t483 - br i1 %t487, label %find.body269, label %find.end272 -find.body269: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i64 %t486 - %t489 = load { ptr, i64, i64 }, ptr %t488 + store { ptr, i64, i64 } { ptr @.str.194, i64 6, i64 0 }, ptr %a413 + call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) + %t414 = load { ptr, i64, i64 }, ptr %a411 + store { ptr, i64, i64 } %t414, ptr %a103 + br label %endif285 +else284: + %t415 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.195, i64 3, i64 0 }, ptr %a417 + store { ptr, i64, i64 } %t415, ptr %a418 + call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) + %t419 = load { ptr, i64, i64 }, ptr %a416 + store { ptr, i64, i64 } %t419, ptr %a421 + store { ptr, i64, i64 } { ptr @.str.196, i64 3, i64 0 }, ptr %a422 + call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) + %t423 = load { ptr, i64, i64 }, ptr %a420 + store { ptr, i64, i64 } %t423, ptr %a103 + br label %endif285 +endif285: + br label %endif282 +endif282: + br label %endif279 +else278: + %t424 = load i1, ptr %a104 + %t425 = xor i1 %t424, true + br i1 %t425, label %then286, label %endif288 +then286: + %t426 = load { ptr, i64, i64 }, ptr %a103 + %t427 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 6 + %t428 = load { ptr, i64, i64 }, ptr %t427 + store { ptr, i64, i64 } %t426, ptr %a430 + store { ptr, i64, i64 } %t428, ptr %a431 + call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431) + %t432 = load { ptr, i64, i64 }, ptr %a429 + store { ptr, i64, i64 } %t432, ptr %a103 + br label %endif288 +endif288: + br label %endif279 +endif279: + br label %endif272 +endif272: + store %S.main.Loader zeroinitializer, ptr %a433 + %t434 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 3 + store { ptr, i64, i64 } { ptr @.str.197, i64 5, i64 0 }, ptr %t434 + %t435 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 1 + %t436 = load i1, ptr %t435 + br i1 %t436, label %then289, label %else290 +then289: + %t437 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 3 + store { ptr, i64, i64 } { ptr @.str.198, i64 7, i64 0 }, ptr %t437 + br label %endif291 +else290: + %t438 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 3 + %t439 = load i1, ptr %t438 + br i1 %t439, label %then292, label %endif294 +then292: + %t440 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 3 + store { ptr, i64, i64 } { ptr @.str.199, i64 5, i64 0 }, ptr %t440 + br label %endif294 +endif294: + br label %endif291 +endif291: + %t441 = load { ptr, i64, i64 }, ptr %a1 + %t442 = extractvalue { ptr, i64, i64 } %t441, 1 + %t443 = icmp uge i64 0, %t442 + br i1 %t443, label %range295, label %inrange296 +range295: + call void @finch_panic_index(ptr @.str.200, i64 219, i64 0, i64 %t442) + unreachable +inrange296: + %t444 = extractvalue { ptr, i64, i64 } %t441, 0 + %t445 = getelementptr inbounds { ptr, i64, i64 }, ptr %t444, i64 0 + %t446 = load { ptr, i64, i64 }, ptr %t445 + %t447 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t446) + store { ptr, i64, i64 } %t447, ptr %a449 + store { ptr, i64, i64 } { ptr @.str.201, i64 7, i64 0 }, ptr %a450 + call void @finch_str_concat(ptr %a448, ptr %a449, ptr %a450) + %t451 = load { ptr, i64, i64 }, ptr %a448 + %t452 = load { ptr, i64, i64 }, ptr %a1 + %t453 = extractvalue { ptr, i64, i64 } %t452, 1 + %t454 = icmp uge i64 0, %t453 + br i1 %t454, label %range297, label %inrange298 +range297: + call void @finch_panic_index(ptr @.str.202, i64 219, i64 0, i64 %t453) + unreachable +inrange298: + %t455 = extractvalue { ptr, i64, i64 } %t452, 0 + %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 0 + %t457 = load { ptr, i64, i64 }, ptr %t456 + %t458 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t457) + store { ptr, i64, i64 } %t458, ptr %a460 + store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a461 + call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) + %t462 = load { ptr, i64, i64 }, ptr %a459 + %t463 = mul i64 3, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t464 = call ptr @finch_alloc(i64 %t463) + %t465 = getelementptr inbounds { ptr, i64, i64 }, ptr %t464, i64 0 + store { ptr, i64, i64 } %t451, ptr %t465 + %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t464, i64 1 + store { ptr, i64, i64 } %t462, ptr %t466 + %t467 = getelementptr inbounds { ptr, i64, i64 }, ptr %t464, i64 2 + store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %t467 + %t468 = insertvalue { ptr, i64, i64 } undef, ptr %t464, 0 + %t469 = insertvalue { ptr, i64, i64 } %t468, i64 3, 1 + %t470 = insertvalue { ptr, i64, i64 } %t469, i64 3, 2 + store { ptr, i64, i64 } %t470, ptr %a471 + store i64 0, ptr %a472 + br label %each.cond299 +each.cond299: + %t473 = getelementptr inbounds { ptr, i64, i64 }, ptr %a471, i32 0, i32 1 + %t474 = load i64, ptr %t473 + %t475 = load i64, ptr %a472 + %t476 = icmp slt i64 %t475, %t474 + br i1 %t476, label %each.body300, label %each.end302 +each.body300: + %t477 = load ptr, ptr %a471 + %t478 = getelementptr inbounds { ptr, i64, i64 }, ptr %t477, i64 %t475 + %t479 = load { ptr, i64, i64 }, ptr %t478 + store { ptr, i64, i64 } %t479, ptr %a480 + %t481 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 4 + %t482 = getelementptr inbounds { ptr, i64, i64 }, ptr %t481, i32 0, i32 1 + %t483 = load i64, ptr %t482 + %t484 = icmp eq i64 %t483, 0 + br label %logic.from303 +logic.from303: + br i1 %t484, label %logic.rhs304, label %logic.end305 +logic.rhs304: + %t485 = load { ptr, i64, i64 }, ptr %a480 + store { ptr, i64, i64 } %t485, ptr %a487 + store { ptr, i64, i64 } { ptr @.str.205, i64 9, i64 0 }, ptr %a488 + call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) + %t489 = load { ptr, i64, i64 }, ptr %a486 store { ptr, i64, i64 } %t489, ptr %a490 - store { ptr, i64, i64 } %t481, ptr %a491 - %t492 = call i32 @finch_str_eq(ptr %a490, ptr %a491) - %t493 = icmp ne i32 %t492, 0 - br i1 %t493, label %find.hit270, label %find.next271 -find.hit270: - store i64 %t486, ptr %a482 - br label %find.end272 -find.next271: - %t494 = add i64 %t486, 1 - store i64 %t494, ptr %a485 - br label %find.cond268 -find.end272: - %t495 = load i64, ptr %a482 - %t496 = icmp sge i64 %t495, 0 - %t497 = xor i1 %t496, true - br i1 %t497, label %then273, label %endif275 -then273: - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %a460, i32 0, i32 1 - %t499 = load { ptr, i64, i64 }, ptr %a479 - store { ptr, i64, i64 } %t499, ptr %a500 - call void @finch_str_copy(ptr %a501, ptr %a500) - %t502 = load { ptr, i64, i64 }, ptr %a501 - %t503 = load i64, ptr %t498 - %t504 = add i64 %t503, 1 - call void @finch_arr_reserve(ptr %a460, i64 %t504, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t505 = load ptr, ptr %a460 - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %t505, i64 %t503 - store { ptr, i64, i64 } %t502, ptr %t506 - store i64 %t504, ptr %t498 - br label %endif275 -endif275: - %t507 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3 - %t508 = getelementptr inbounds { ptr, i64, i64 }, ptr %t507, i32 0, i32 1 - %t509 = load i64, ptr %t508 - store i64 0, ptr %a510 - br label %for.cond276 -for.cond276: - %t511 = load i64, ptr %a510 - %t512 = icmp slt i64 %t511, %t509 - br i1 %t512, label %for.body277, label %for.end279 -for.body277: - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %a455, i32 0, i32 1 - %t514 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3 - %t515 = load i64, ptr %a510 - %t516 = load { ptr, i64, i64 }, ptr %t514 - %t517 = extractvalue { ptr, i64, i64 } %t516, 1 - %t518 = icmp uge i64 %t515, %t517 - br i1 %t518, label %range280, label %inrange281 -range280: - call void @finch_panic_index(ptr @.str.193, i64 221, i64 %t515, i64 %t517) - unreachable -inrange281: - %t519 = extractvalue { ptr, i64, i64 } %t516, 0 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t515 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store i64 -1, ptr %a522 - %t523 = load i64, ptr %t513 - %t524 = load ptr, ptr %a455 - store i64 0, ptr %a525 - br label %find.cond282 -find.cond282: - %t526 = load i64, ptr %a525 - %t527 = icmp slt i64 %t526, %t523 - br i1 %t527, label %find.body283, label %find.end286 -find.body283: - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i64 %t526 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - store { ptr, i64, i64 } %t521, ptr %a531 - %t532 = call i32 @finch_str_eq(ptr %a530, ptr %a531) - %t533 = icmp ne i32 %t532, 0 - br i1 %t533, label %find.hit284, label %find.next285 -find.hit284: - store i64 %t526, ptr %a522 - br label %find.end286 -find.next285: - %t534 = add i64 %t526, 1 - store i64 %t534, ptr %a525 - br label %find.cond282 -find.end286: - %t535 = load i64, ptr %a522 - %t536 = icmp sge i64 %t535, 0 - %t537 = xor i1 %t536, true - br i1 %t537, label %then287, label %endif289 -then287: - %t538 = getelementptr inbounds { ptr, i64, i64 }, ptr %a455, i32 0, i32 1 - %t539 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3 - %t540 = load i64, ptr %a510 - %t541 = load { ptr, i64, i64 }, ptr %t539 - %t542 = extractvalue { ptr, i64, i64 } %t541, 1 - %t543 = icmp uge i64 %t540, %t542 - br i1 %t543, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.194, i64 222, i64 %t540, i64 %t542) - unreachable -inrange291: - %t544 = extractvalue { ptr, i64, i64 } %t541, 0 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t540 - %t546 = load { ptr, i64, i64 }, ptr %t545 - store { ptr, i64, i64 } %t546, ptr %a547 - call void @finch_str_copy(ptr %a548, ptr %a547) - %t549 = load { ptr, i64, i64 }, ptr %a548 - %t550 = load i64, ptr %t538 - %t551 = add i64 %t550, 1 - call void @finch_arr_reserve(ptr %a455, i64 %t551, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t552 = load ptr, ptr %a455 - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 %t550 - store { ptr, i64, i64 } %t549, ptr %t553 - store i64 %t551, ptr %t538 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %a454, i32 0, i32 1 - %t555 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 3 - %t556 = load i64, ptr %a510 - %t557 = load { ptr, i64, i64 }, ptr %t555 - %t558 = extractvalue { ptr, i64, i64 } %t557, 1 - %t559 = icmp uge i64 %t556, %t558 - br i1 %t559, label %range292, label %inrange293 -range292: - call void @finch_panic_index(ptr @.str.195, i64 223, i64 %t556, i64 %t558) - unreachable -inrange293: - %t560 = extractvalue { ptr, i64, i64 } %t557, 0 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i64 %t556 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_copy(ptr %a564, ptr %a563) - %t565 = load { ptr, i64, i64 }, ptr %a564 - %t566 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t565, 0 - %t567 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 4 - %t568 = load i64, ptr %a510 - %t569 = load { ptr, i64, i64 }, ptr %t567 - %t570 = extractvalue { ptr, i64, i64 } %t569, 1 - %t571 = icmp uge i64 %t568, %t570 - br i1 %t571, label %range294, label %inrange295 -range294: - call void @finch_panic_index(ptr @.str.196, i64 223, i64 %t568, i64 %t570) - unreachable -inrange295: - %t572 = extractvalue { ptr, i64, i64 } %t569, 0 - %t573 = getelementptr inbounds { ptr, i64, i64 }, ptr %t572, i64 %t568 - %t574 = load { ptr, i64, i64 }, ptr %t573 - store { ptr, i64, i64 } %t574, ptr %a575 - call void @finch_str_copy(ptr %a576, ptr %a575) - %t577 = load { ptr, i64, i64 }, ptr %a576 - %t578 = insertvalue %S.cimport.Header %t566, { ptr, i64, i64 } %t577, 1 - %t579 = load i64, ptr %t554 - %t580 = add i64 %t579, 1 - call void @finch_arr_reserve(ptr %a454, i64 %t580, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t581 = load ptr, ptr %a454 - %t582 = getelementptr inbounds %S.cimport.Header, ptr %t581, i64 %t579 - store %S.cimport.Header %t578, ptr %t582 - store i64 %t580, ptr %t554 - br label %endif289 -endif289: - br label %for.step278 -for.step278: - %t583 = load i64, ptr %a510 - %t584 = add i64 %t583, 1 - store i64 %t584, ptr %a510 - br label %for.cond276 -for.end279: - %t585 = getelementptr inbounds %S.ast.Program, ptr %a475, i32 0, i32 5 - store i64 0, ptr %a586 - br label %each.cond296 -each.cond296: - %t587 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i32 0, i32 1 - %t588 = load i64, ptr %t587 - %t589 = load i64, ptr %a586 - %t590 = icmp slt i64 %t589, %t588 - br i1 %t590, label %each.body297, label %each.end299 -each.body297: - %t591 = load ptr, ptr %t585 - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t591, i64 %t589 - %t593 = load { ptr, i64, i64 }, ptr %t592 + %t491 = call i32 @finch_file_exists(ptr %a490) + %t492 = icmp ne i32 %t491, 0 + br label %logic.rend306 +logic.rend306: + br label %logic.end305 +logic.end305: + %t493 = phi i1 [ false, %logic.from303 ], [ %t492, %logic.rend306 ] + br i1 %t493, label %then307, label %endif309 +then307: + %t494 = load { ptr, i64, i64 }, ptr %a480 + %t495 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 4 + store { ptr, i64, i64 } %t494, ptr %a496 + call void @finch_str_copy(ptr %a497, ptr %a496) + %t498 = load { ptr, i64, i64 }, ptr %a497 + store { ptr, i64, i64 } %t498, ptr %t495 + br label %endif309 +endif309: + br label %each.step301 +each.step301: + %t499 = load i64, ptr %a472 + %t500 = add i64 %t499, 1 + store i64 %t500, ptr %a472 + br label %each.cond299 +each.end302: + %t501 = load { ptr, i64, i64 }, ptr %a111 + %t502 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 6 + store { ptr, i64, i64 } %t501, ptr %a503 + call void @finch.copy.arr_str(ptr %a504, ptr %a503) + %t505 = load { ptr, i64, i64 }, ptr %a504 + store { ptr, i64, i64 } %t505, ptr %t502 + %t506 = load { ptr, i64, i64 }, ptr %a112 + %t507 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 7 + store { ptr, i64, i64 } %t506, ptr %a508 + call void @finch.copy.arr_str(ptr %a509, ptr %a508) + %t510 = load { ptr, i64, i64 }, ptr %a509 + store { ptr, i64, i64 } %t510, ptr %t507 + %t511 = extractvalue { ptr, i64, i64 } { ptr @.str.206, i64 10, i64 0 }, 0 + %t512 = icmp eq ptr %t511, null + %t513 = select i1 %t512, ptr @.str.207, ptr %t511 + %t514 = call ptr @getenv(ptr %t513) + store { ptr, i64, i64 } zeroinitializer, ptr %a515 + call void @finch_str_from_c(ptr %a515, ptr %t514) + %t516 = load { ptr, i64, i64 }, ptr %a515 + store { ptr, i64, i64 } %t516, ptr %a517 + store { ptr, i64, i64 } { ptr @.str.209, i64 1, i64 0 }, ptr %a519 + call void @finch_str_split(ptr %a520, ptr %a517, ptr %a519) + %t521 = load { ptr, i64, i64 }, ptr %a520 + store { ptr, i64, i64 } %t521, ptr %a522 + store i64 0, ptr %a523 + br label %each.cond310 +each.cond310: + %t524 = getelementptr inbounds { ptr, i64, i64 }, ptr %a522, i32 0, i32 1 + %t525 = load i64, ptr %t524 + %t526 = load i64, ptr %a523 + %t527 = icmp slt i64 %t526, %t525 + br i1 %t527, label %each.body311, label %each.end313 +each.body311: + %t528 = load ptr, ptr %a522 + %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t528, i64 %t526 + %t530 = load { ptr, i64, i64 }, ptr %t529 + store { ptr, i64, i64 } %t530, ptr %a531 + %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a531, i32 0, i32 1 + %t533 = load i64, ptr %t532 + %t534 = icmp sgt i64 %t533, 0 + br i1 %t534, label %then314, label %endif316 +then314: + %t535 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 5 + %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 + %t537 = load { ptr, i64, i64 }, ptr %a531 + store { ptr, i64, i64 } %t537, ptr %a538 + call void @finch_str_copy(ptr %a539, ptr %a538) + %t540 = load { ptr, i64, i64 }, ptr %a539 + %t541 = load i64, ptr %t536 + %t542 = add i64 %t541, 1 + call void @finch_arr_reserve(ptr %t535, i64 %t542, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t543 = load ptr, ptr %t535 + %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i64 %t541 + store { ptr, i64, i64 } %t540, ptr %t544 + store i64 %t542, ptr %t536 + br label %endif316 +endif316: + br label %each.step312 +each.step312: + %t545 = load i64, ptr %a523 + %t546 = add i64 %t545, 1 + store i64 %t546, ptr %a523 + br label %each.cond310 +each.end313: + %t547 = load { ptr, i64, i64 }, ptr %a77 + call void @finch.main.load(ptr %a433, { ptr, i64, i64 } %t547, { ptr, i64, i64 } { ptr @.str.210, i64 0, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a548 + store { ptr, i64, i64 } zeroinitializer, ptr %a549 + %t550 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t550, ptr %a551 + call void @finch.copy.arr_str(ptr %a552, ptr %a551) + %t553 = load { ptr, i64, i64 }, ptr %a552 + store { ptr, i64, i64 } %t553, ptr %a554 + %t555 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t555, ptr %a556 + call void @finch.copy.arr_str(ptr %a557, ptr %a556) + %t558 = load { ptr, i64, i64 }, ptr %a557 + store { ptr, i64, i64 } %t558, ptr %a559 + %t560 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 + store i64 0, ptr %a561 + br label %each.cond317 +each.cond317: + %t562 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + %t563 = load i64, ptr %t562 + %t564 = load i64, ptr %a561 + %t565 = icmp slt i64 %t564, %t563 + br i1 %t565, label %each.body318, label %each.end320 +each.body318: + %t566 = load ptr, ptr %t560 + %t567 = getelementptr inbounds %S.ast.Program, ptr %t566, i64 %t564 + %t568 = load %S.ast.Program, ptr %t567 + store %S.ast.Program %t568, ptr %a569 + %t570 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 1 + %t571 = load { ptr, i64, i64 }, ptr %t570 + %t572 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t571) + store { ptr, i64, i64 } %t572, ptr %a573 + %t574 = getelementptr inbounds { ptr, i64, i64 }, ptr %a554, i32 0, i32 1 + %t575 = load { ptr, i64, i64 }, ptr %a573 + store i64 -1, ptr %a576 + %t577 = load i64, ptr %t574 + %t578 = load ptr, ptr %a554 + store i64 0, ptr %a579 + br label %find.cond321 +find.cond321: + %t580 = load i64, ptr %a579 + %t581 = icmp slt i64 %t580, %t577 + br i1 %t581, label %find.body322, label %find.end325 +find.body322: + %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i64 %t580 + %t583 = load { ptr, i64, i64 }, ptr %t582 + store { ptr, i64, i64 } %t583, ptr %a584 + store { ptr, i64, i64 } %t575, ptr %a585 + %t586 = call i32 @finch_str_eq(ptr %a584, ptr %a585) + %t587 = icmp ne i32 %t586, 0 + br i1 %t587, label %find.hit323, label %find.next324 +find.hit323: + store i64 %t580, ptr %a576 + br label %find.end325 +find.next324: + %t588 = add i64 %t580, 1 + store i64 %t588, ptr %a579 + br label %find.cond321 +find.end325: + %t589 = load i64, ptr %a576 + %t590 = icmp sge i64 %t589, 0 + %t591 = xor i1 %t590, true + br i1 %t591, label %then326, label %endif328 +then326: + %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %a554, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %a573 store { ptr, i64, i64 } %t593, ptr %a594 - %t595 = load { ptr, i64, i64 }, ptr %a594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.198, i64 2, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_ends(ptr %a596, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.from300 -logic.from300: - br i1 %t600, label %logic.end302, label %logic.rhs301 -logic.rhs301: - %t601 = load { ptr, i64, i64 }, ptr %a594 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.200, i64 2, i64 0 }, ptr %a604 - %t605 = call i32 @finch_str_ends(ptr %a602, ptr %a604) - %t606 = icmp ne i32 %t605, 0 - br label %logic.rend303 -logic.rend303: - br label %logic.end302 -logic.end302: - %t607 = phi i1 [ true, %logic.from300 ], [ %t606, %logic.rend303 ] - br label %logic.from304 -logic.from304: - br i1 %t607, label %logic.end306, label %logic.rhs305 -logic.rhs305: - %t608 = load { ptr, i64, i64 }, ptr %a594 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.202, i64 2, i64 0 }, ptr %a611 - %t612 = call i32 @finch_str_ends(ptr %a609, ptr %a611) - %t613 = icmp ne i32 %t612, 0 - br label %logic.rend307 -logic.rend307: - br label %logic.end306 -logic.end306: - %t614 = phi i1 [ true, %logic.from304 ], [ %t613, %logic.rend307 ] - br i1 %t614, label %then308, label %else309 -then308: - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %a465, i32 0, i32 1 - %t616 = load { ptr, i64, i64 }, ptr %a479 - store { ptr, i64, i64 } %t616, ptr %a618 - store { ptr, i64, i64 } { ptr @.str.203, i64 1, i64 0 }, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a617 - %t621 = load { ptr, i64, i64 }, ptr %a594 - store { ptr, i64, i64 } %t620, ptr %a623 - store { ptr, i64, i64 } %t621, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a622 - %t626 = load i64, ptr %t615 - %t627 = add i64 %t626, 1 - call void @finch_arr_reserve(ptr %a465, i64 %t627, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t628 = load ptr, ptr %a465 - %t629 = getelementptr inbounds { ptr, i64, i64 }, ptr %t628, i64 %t626 - store { ptr, i64, i64 } %t625, ptr %t629 - store i64 %t627, ptr %t615 - br label %endif310 -else309: - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a465, i32 0, i32 1 - %t631 = load { ptr, i64, i64 }, ptr %a594 - store { ptr, i64, i64 } %t631, ptr %a632 - call void @finch_str_copy(ptr %a633, ptr %a632) - %t634 = load { ptr, i64, i64 }, ptr %a633 - %t635 = load i64, ptr %t630 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a465, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a465 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t630 - br label %endif310 -endif310: - br label %each.step298 -each.step298: - %t639 = load i64, ptr %a586 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a586 - br label %each.cond296 -each.end299: - br label %each.step266 -each.step266: - %t641 = load i64, ptr %a467 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a467 - br label %each.cond264 -each.end267: - store { ptr, i64, i64 } { ptr @.str.204, i64 0, i64 0 }, ptr %a643 - %t644 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 5 - %t645 = load i1, ptr %t644 - br i1 %t645, label %then311, label %endif313 -then311: - %t646 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 0 - %t647 = load { ptr, i64, i64 }, ptr %t646 - store { ptr, i64, i64 } %t647, ptr %a648 - call void @finch_str_copy(ptr %a649, ptr %a648) - %t650 = load { ptr, i64, i64 }, ptr %a649 - store { ptr, i64, i64 } %t650, ptr %a643 - br label %endif313 -endif313: - %t651 = load { ptr, i64, i64 }, ptr %a454 - %t652 = load { ptr, i64, i64 }, ptr %a460 - %t653 = load { ptr, i64, i64 }, ptr %a643 - %t654 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 1 - %t655 = load i1, ptr %t654 - %t656 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 7 - %t657 = load { ptr, i64, i64 }, ptr %t656 - %t658 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t651, { ptr, i64, i64 } %t652, { ptr, i64, i64 } %t653, i1 %t655, { ptr, i64, i64 } %t657) - %t659 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 0 - %t660 = xor i1 %t659, true - %t661 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 2 - %t662 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t658, 1 - br i1 %t660, label %or.failed314, label %or.ok315 -or.failed314: - store { ptr, i64, i64 } %t661, ptr %a663 - %t664 = load { ptr, i64, i64 }, ptr %a663 - %t665 = extractvalue { ptr, i64, i64 } %t664, 1 - %t666 = trunc i64 %t665 to i32 - %t667 = extractvalue { ptr, i64, i64 } %t664, 0 - %t668 = icmp eq ptr %t667, null - %t669 = select i1 %t668, ptr @.str.205, ptr %t667 - %t670 = call i32 (ptr, ...) @printf(ptr @.str.206, i32 %t666, ptr %t669) - %t671 = call i32 (ptr, ...) @printf(ptr @.str.207) - ret i64 1 -or.ok315: - store %S.cimport.CImports %t662, ptr %a672 - %t673 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 0 - %t674 = load { ptr, i64, i64 }, ptr %t673 - %t675 = getelementptr inbounds %S.main.Loader, ptr %a349, i32 0, i32 1 - %t676 = load { ptr, i64, i64 }, ptr %t675 - %t677 = load %S.cimport.CImports, ptr %a672 - %t678 = load i1, ptr %a78 - %t679 = insertvalue %S.gen.Options zeroinitializer, i1 %t678, 0 - %t680 = load i1, ptr %a79 - %t681 = insertvalue %S.gen.Options %t679, i1 %t680, 1 - %t682 = extractvalue { ptr, i64, i64 } { ptr @.str.208, i64 3, i64 0 }, 0 - %t683 = icmp eq ptr %t682, null - %t684 = select i1 %t683, ptr @.str.209, ptr %t682 - %t685 = call ptr @getenv(ptr %t684) - store { ptr, i64, i64 } zeroinitializer, ptr %a686 - call void @finch_str_from_c(ptr %a686, ptr %t685) - %t687 = load { ptr, i64, i64 }, ptr %a686 + call void @finch_str_copy(ptr %a595, ptr %a594) + %t596 = load { ptr, i64, i64 }, ptr %a595 + %t597 = load i64, ptr %t592 + %t598 = add i64 %t597, 1 + call void @finch_arr_reserve(ptr %a554, i64 %t598, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t599 = load ptr, ptr %a554 + %t600 = getelementptr inbounds { ptr, i64, i64 }, ptr %t599, i64 %t597 + store { ptr, i64, i64 } %t596, ptr %t600 + store i64 %t598, ptr %t592 + br label %endif328 +endif328: + %t601 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i32 0, i32 1 + %t603 = load i64, ptr %t602 + store i64 0, ptr %a604 + br label %for.cond329 +for.cond329: + %t605 = load i64, ptr %a604 + %t606 = icmp slt i64 %t605, %t603 + br i1 %t606, label %for.body330, label %for.end332 +for.body330: + %t607 = getelementptr inbounds { ptr, i64, i64 }, ptr %a549, i32 0, i32 1 + %t608 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t609 = load i64, ptr %a604 + %t610 = load { ptr, i64, i64 }, ptr %t608 + %t611 = extractvalue { ptr, i64, i64 } %t610, 1 + %t612 = icmp uge i64 %t609, %t611 + br i1 %t612, label %range333, label %inrange334 +range333: + call void @finch_panic_index(ptr @.str.211, i64 244, i64 %t609, i64 %t611) + unreachable +inrange334: + %t613 = extractvalue { ptr, i64, i64 } %t610, 0 + %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t609 + %t615 = load { ptr, i64, i64 }, ptr %t614 + store i64 -1, ptr %a616 + %t617 = load i64, ptr %t607 + %t618 = load ptr, ptr %a549 + store i64 0, ptr %a619 + br label %find.cond335 +find.cond335: + %t620 = load i64, ptr %a619 + %t621 = icmp slt i64 %t620, %t617 + br i1 %t621, label %find.body336, label %find.end339 +find.body336: + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %t618, i64 %t620 + %t623 = load { ptr, i64, i64 }, ptr %t622 + store { ptr, i64, i64 } %t623, ptr %a624 + store { ptr, i64, i64 } %t615, ptr %a625 + %t626 = call i32 @finch_str_eq(ptr %a624, ptr %a625) + %t627 = icmp ne i32 %t626, 0 + br i1 %t627, label %find.hit337, label %find.next338 +find.hit337: + store i64 %t620, ptr %a616 + br label %find.end339 +find.next338: + %t628 = add i64 %t620, 1 + store i64 %t628, ptr %a619 + br label %find.cond335 +find.end339: + %t629 = load i64, ptr %a616 + %t630 = icmp sge i64 %t629, 0 + %t631 = xor i1 %t630, true + br i1 %t631, label %then340, label %endif342 +then340: + %t632 = getelementptr inbounds { ptr, i64, i64 }, ptr %a549, i32 0, i32 1 + %t633 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t634 = load i64, ptr %a604 + %t635 = load { ptr, i64, i64 }, ptr %t633 + %t636 = extractvalue { ptr, i64, i64 } %t635, 1 + %t637 = icmp uge i64 %t634, %t636 + br i1 %t637, label %range343, label %inrange344 +range343: + call void @finch_panic_index(ptr @.str.212, i64 245, i64 %t634, i64 %t636) + unreachable +inrange344: + %t638 = extractvalue { ptr, i64, i64 } %t635, 0 + %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t634 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } %t640, ptr %a641 + call void @finch_str_copy(ptr %a642, ptr %a641) + %t643 = load { ptr, i64, i64 }, ptr %a642 + %t644 = load i64, ptr %t632 + %t645 = add i64 %t644, 1 + call void @finch_arr_reserve(ptr %a549, i64 %t645, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t646 = load ptr, ptr %a549 + %t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t644 + store { ptr, i64, i64 } %t643, ptr %t647 + store i64 %t645, ptr %t632 + %t648 = getelementptr inbounds { ptr, i64, i64 }, ptr %a548, i32 0, i32 1 + %t649 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 3 + %t650 = load i64, ptr %a604 + %t651 = load { ptr, i64, i64 }, ptr %t649 + %t652 = extractvalue { ptr, i64, i64 } %t651, 1 + %t653 = icmp uge i64 %t650, %t652 + br i1 %t653, label %range345, label %inrange346 +range345: + call void @finch_panic_index(ptr @.str.213, i64 246, i64 %t650, i64 %t652) + unreachable +inrange346: + %t654 = extractvalue { ptr, i64, i64 } %t651, 0 + %t655 = getelementptr inbounds { ptr, i64, i64 }, ptr %t654, i64 %t650 + %t656 = load { ptr, i64, i64 }, ptr %t655 + store { ptr, i64, i64 } %t656, ptr %a657 + call void @finch_str_copy(ptr %a658, ptr %a657) + %t659 = load { ptr, i64, i64 }, ptr %a658 + %t660 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t659, 0 + %t661 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 4 + %t662 = load i64, ptr %a604 + %t663 = load { ptr, i64, i64 }, ptr %t661 + %t664 = extractvalue { ptr, i64, i64 } %t663, 1 + %t665 = icmp uge i64 %t662, %t664 + br i1 %t665, label %range347, label %inrange348 +range347: + call void @finch_panic_index(ptr @.str.214, i64 246, i64 %t662, i64 %t664) + unreachable +inrange348: + %t666 = extractvalue { ptr, i64, i64 } %t663, 0 + %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t666, i64 %t662 + %t668 = load { ptr, i64, i64 }, ptr %t667 + store { ptr, i64, i64 } %t668, ptr %a669 + call void @finch_str_copy(ptr %a670, ptr %a669) + %t671 = load { ptr, i64, i64 }, ptr %a670 + %t672 = insertvalue %S.cimport.Header %t660, { ptr, i64, i64 } %t671, 1 + %t673 = load i64, ptr %t648 + %t674 = add i64 %t673, 1 + call void @finch_arr_reserve(ptr %a548, i64 %t674, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) + %t675 = load ptr, ptr %a548 + %t676 = getelementptr inbounds %S.cimport.Header, ptr %t675, i64 %t673 + store %S.cimport.Header %t672, ptr %t676 + store i64 %t674, ptr %t648 + br label %endif342 +endif342: + br label %for.step331 +for.step331: + %t677 = load i64, ptr %a604 + %t678 = add i64 %t677, 1 + store i64 %t678, ptr %a604 + br label %for.cond329 +for.end332: + %t679 = getelementptr inbounds %S.ast.Program, ptr %a569, i32 0, i32 5 + store i64 0, ptr %a680 + br label %each.cond349 +each.cond349: + %t681 = getelementptr inbounds { ptr, i64, i64 }, ptr %t679, i32 0, i32 1 + %t682 = load i64, ptr %t681 + %t683 = load i64, ptr %a680 + %t684 = icmp slt i64 %t683, %t682 + br i1 %t684, label %each.body350, label %each.end352 +each.body350: + %t685 = load ptr, ptr %t679 + %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i64 %t683 + %t687 = load { ptr, i64, i64 }, ptr %t686 store { ptr, i64, i64 } %t687, ptr %a688 - call void @finch_str_copy(ptr %a689, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = insertvalue %S.gen.Options %t681, { ptr, i64, i64 } %t690, 2 - %t692 = load %S.platform.Target, ptr %a291 - store %S.platform.Target %t692, ptr %a693 - call void @finch.copy.S_platform_Target(ptr %a694, ptr %a693) - %t695 = load %S.platform.Target, ptr %a694 - %t696 = insertvalue %S.gen.Options %t691, %S.platform.Target %t695, 3 - %t697 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t674, { ptr, i64, i64 } %t676, %S.cimport.CImports %t677, %S.gen.Options %t696) - store { ptr, i64, i64 } %t697, ptr %a698 - %t699 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.210, i64 2, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br i1 %t703, label %then316, label %endif318 -then316: - %t704 = load { ptr, i64, i64 }, ptr %a698 - %t705 = extractvalue { ptr, i64, i64 } %t704, 1 - %t706 = trunc i64 %t705 to i32 - %t707 = extractvalue { ptr, i64, i64 } %t704, 0 - %t708 = icmp eq ptr %t707, null - %t709 = select i1 %t708, ptr @.str.211, ptr %t707 - %t710 = call i32 (ptr, ...) @printf(ptr @.str.212, i32 %t706, ptr %t709) - %t711 = call i32 (ptr, ...) @printf(ptr @.str.213) + %t689 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t689, ptr %a690 + store { ptr, i64, i64 } { ptr @.str.216, i64 2, i64 0 }, ptr %a692 + %t693 = call i32 @finch_str_ends(ptr %a690, ptr %a692) + %t694 = icmp ne i32 %t693, 0 + br label %logic.from353 +logic.from353: + br i1 %t694, label %logic.end355, label %logic.rhs354 +logic.rhs354: + %t695 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t695, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.218, i64 2, i64 0 }, ptr %a698 + %t699 = call i32 @finch_str_ends(ptr %a696, ptr %a698) + %t700 = icmp ne i32 %t699, 0 + br label %logic.rend356 +logic.rend356: + br label %logic.end355 +logic.end355: + %t701 = phi i1 [ true, %logic.from353 ], [ %t700, %logic.rend356 ] + br label %logic.from357 +logic.from357: + br i1 %t701, label %logic.end359, label %logic.rhs358 +logic.rhs358: + %t702 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t702, ptr %a703 + store { ptr, i64, i64 } { ptr @.str.220, i64 2, i64 0 }, ptr %a705 + %t706 = call i32 @finch_str_ends(ptr %a703, ptr %a705) + %t707 = icmp ne i32 %t706, 0 + br label %logic.rend360 +logic.rend360: + br label %logic.end359 +logic.end359: + %t708 = phi i1 [ true, %logic.from357 ], [ %t707, %logic.rend360 ] + br i1 %t708, label %then361, label %else362 +then361: + %t709 = getelementptr inbounds { ptr, i64, i64 }, ptr %a559, i32 0, i32 1 + %t710 = load { ptr, i64, i64 }, ptr %a573 + store { ptr, i64, i64 } %t710, ptr %a712 + store { ptr, i64, i64 } { ptr @.str.221, i64 1, i64 0 }, ptr %a713 + call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a711 + %t715 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t714, ptr %a717 + store { ptr, i64, i64 } %t715, ptr %a718 + call void @finch_str_concat(ptr %a716, ptr %a717, ptr %a718) + %t719 = load { ptr, i64, i64 }, ptr %a716 + %t720 = load i64, ptr %t709 + %t721 = add i64 %t720, 1 + call void @finch_arr_reserve(ptr %a559, i64 %t721, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t722 = load ptr, ptr %a559 + %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t720 + store { ptr, i64, i64 } %t719, ptr %t723 + store i64 %t721, ptr %t709 + br label %endif363 +else362: + %t724 = getelementptr inbounds { ptr, i64, i64 }, ptr %a559, i32 0, i32 1 + %t725 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t725, ptr %a726 + call void @finch_str_copy(ptr %a727, ptr %a726) + %t728 = load { ptr, i64, i64 }, ptr %a727 + %t729 = load i64, ptr %t724 + %t730 = add i64 %t729, 1 + call void @finch_arr_reserve(ptr %a559, i64 %t730, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t731 = load ptr, ptr %a559 + %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %t731, i64 %t729 + store { ptr, i64, i64 } %t728, ptr %t732 + store i64 %t730, ptr %t724 + br label %endif363 +endif363: + br label %each.step351 +each.step351: + %t733 = load i64, ptr %a680 + %t734 = add i64 %t733, 1 + store i64 %t734, ptr %a680 + br label %each.cond349 +each.end352: + br label %each.step319 +each.step319: + %t735 = load i64, ptr %a561 + %t736 = add i64 %t735, 1 + store i64 %t736, ptr %a561 + br label %each.cond317 +each.end320: + store { ptr, i64, i64 } { ptr @.str.222, i64 0, i64 0 }, ptr %a737 + %t738 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 5 + %t739 = load i1, ptr %t738 + br i1 %t739, label %then364, label %endif366 +then364: + %t740 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 0 + %t741 = load { ptr, i64, i64 }, ptr %t740 + store { ptr, i64, i64 } %t741, ptr %a742 + call void @finch_str_copy(ptr %a743, ptr %a742) + %t744 = load { ptr, i64, i64 }, ptr %a743 + store { ptr, i64, i64 } %t744, ptr %a737 + br label %endif366 +endif366: + %t745 = load { ptr, i64, i64 }, ptr %a548 + %t746 = load { ptr, i64, i64 }, ptr %a554 + %t747 = load { ptr, i64, i64 }, ptr %a737 + %t748 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 1 + %t749 = load i1, ptr %t748 + %t750 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 7 + %t751 = load { ptr, i64, i64 }, ptr %t750 + %t752 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t745, { ptr, i64, i64 } %t746, { ptr, i64, i64 } %t747, i1 %t749, { ptr, i64, i64 } %t751) + %t753 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 0 + %t754 = xor i1 %t753, true + %t755 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 2 + %t756 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t752, 1 + br i1 %t754, label %or.failed367, label %or.ok368 +or.failed367: + store { ptr, i64, i64 } %t755, ptr %a757 + %t758 = load { ptr, i64, i64 }, ptr %a757 + %t759 = extractvalue { ptr, i64, i64 } %t758, 1 + %t760 = trunc i64 %t759 to i32 + %t761 = extractvalue { ptr, i64, i64 } %t758, 0 + %t762 = icmp eq ptr %t761, null + %t763 = select i1 %t762, ptr @.str.223, ptr %t761 + %t764 = call i32 (ptr, ...) @printf(ptr @.str.224, i32 %t760, ptr %t763) + %t765 = call i32 (ptr, ...) @printf(ptr @.str.225) + ret i64 1 +or.ok368: + store %S.cimport.CImports %t756, ptr %a766 + %t767 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 0 + %t768 = load { ptr, i64, i64 }, ptr %t767 + %t769 = getelementptr inbounds %S.main.Loader, ptr %a433, i32 0, i32 1 + %t770 = load { ptr, i64, i64 }, ptr %t769 + %t771 = load %S.cimport.CImports, ptr %a766 + %t772 = load i1, ptr %a105 + %t773 = insertvalue %S.gen.Options zeroinitializer, i1 %t772, 0 + %t774 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t774, ptr %a775 + store { ptr, i64, i64 } { ptr @.str.226, i64 5, i64 0 }, ptr %a776 + %t777 = call i32 @finch_str_eq(ptr %a775, ptr %a776) + %t778 = icmp ne i32 %t777, 0 + %t779 = insertvalue %S.gen.Options %t773, i1 %t778, 1 + %t780 = load i1, ptr %a106 + %t781 = insertvalue %S.gen.Options %t779, i1 %t780, 2 + %t782 = extractvalue { ptr, i64, i64 } { ptr @.str.227, i64 3, i64 0 }, 0 + %t783 = icmp eq ptr %t782, null + %t784 = select i1 %t783, ptr @.str.228, ptr %t782 + %t785 = call ptr @getenv(ptr %t784) + store { ptr, i64, i64 } zeroinitializer, ptr %a786 + call void @finch_str_from_c(ptr %a786, ptr %t785) + %t787 = load { ptr, i64, i64 }, ptr %a786 + store { ptr, i64, i64 } %t787, ptr %a788 + call void @finch_str_copy(ptr %a789, ptr %a788) + %t790 = load { ptr, i64, i64 }, ptr %a789 + %t791 = insertvalue %S.gen.Options %t781, { ptr, i64, i64 } %t790, 3 + %t792 = load %S.platform.Target, ptr %a375 + store %S.platform.Target %t792, ptr %a793 + call void @finch.copy.S_platform_Target(ptr %a794, ptr %a793) + %t795 = load %S.platform.Target, ptr %a794 + %t796 = insertvalue %S.gen.Options %t791, %S.platform.Target %t795, 4 + %t797 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t768, { ptr, i64, i64 } %t770, %S.cimport.CImports %t771, %S.gen.Options %t796) + store { ptr, i64, i64 } %t797, ptr %a798 + %t799 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t799, ptr %a800 + store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a801 + %t802 = call i32 @finch_str_eq(ptr %a800, ptr %a801) + %t803 = icmp ne i32 %t802, 0 + br label %logic.from369 +logic.from369: + br i1 %t803, label %logic.end371, label %logic.rhs370 +logic.rhs370: + %t804 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t804, ptr %a805 + store { ptr, i64, i64 } { ptr @.str.230, i64 5, i64 0 }, ptr %a806 + %t807 = call i32 @finch_str_eq(ptr %a805, ptr %a806) + %t808 = icmp ne i32 %t807, 0 + br label %logic.rend372 +logic.rend372: + br label %logic.end371 +logic.end371: + %t809 = phi i1 [ true, %logic.from369 ], [ %t808, %logic.rend372 ] + br i1 %t809, label %then373, label %endif375 +then373: + %t810 = load { ptr, i64, i64 }, ptr %a798 + %t811 = extractvalue { ptr, i64, i64 } %t810, 1 + %t812 = trunc i64 %t811 to i32 + %t813 = extractvalue { ptr, i64, i64 } %t810, 0 + %t814 = icmp eq ptr %t813, null + %t815 = select i1 %t814, ptr @.str.231, ptr %t813 + %t816 = call i32 (ptr, ...) @printf(ptr @.str.232, i32 %t812, ptr %t815) + %t817 = call i32 (ptr, ...) @printf(ptr @.str.233) ret i64 0 -endif318: - %t712 = extractvalue { ptr, i64, i64 } { ptr @.str.214, i64 8, i64 0 }, 0 - %t713 = icmp eq ptr %t712, null - %t714 = select i1 %t713, ptr @.str.215, ptr %t712 - %t715 = call ptr @getenv(ptr %t714) - store { ptr, i64, i64 } zeroinitializer, ptr %a716 - call void @finch_str_from_c(ptr %a716, ptr %t715) - %t717 = load { ptr, i64, i64 }, ptr %a716 - store { ptr, i64, i64 } %t717, ptr %a718 - call void @finch_str_copy(ptr %a719, ptr %a718) - %t720 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t720, ptr %a721 - %t722 = getelementptr inbounds { ptr, i64, i64 }, ptr %a721, i32 0, i32 1 - %t723 = load i64, ptr %t722 - %t724 = icmp eq i64 %t723, 0 - br i1 %t724, label %then319, label %endif321 -then319: - %t725 = load { ptr, i64, i64 }, ptr %a1 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 0, %t726 - br i1 %t727, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.216, i64 251, i64 0, i64 %t726) - unreachable -inrange323: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds { ptr, i64, i64 }, ptr %t728, i64 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - %t731 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t730) - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.217, i64 22, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - %t735 = load { ptr, i64, i64 }, ptr %a732 - store { ptr, i64, i64 } %t735, ptr %a721 - br label %endif321 -endif321: - %t736 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t736, ptr %a737 - %t738 = call i32 @finch_file_exists(ptr %a737) - %t739 = icmp ne i32 %t738, 0 - %t740 = xor i1 %t739, true - br i1 %t740, label %then324, label %endif326 -then324: - %t741 = load { ptr, i64, i64 }, ptr %a1 - %t742 = extractvalue { ptr, i64, i64 } %t741, 1 - %t743 = icmp uge i64 0, %t742 - br i1 %t743, label %range327, label %inrange328 -range327: - call void @finch_panic_index(ptr @.str.218, i64 254, i64 0, i64 %t742) - unreachable -inrange328: - %t744 = extractvalue { ptr, i64, i64 } %t741, 0 - %t745 = getelementptr inbounds { ptr, i64, i64 }, ptr %t744, i64 0 - %t746 = load { ptr, i64, i64 }, ptr %t745 - %t747 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t746) - store { ptr, i64, i64 } %t747, ptr %a749 - store { ptr, i64, i64 } { ptr @.str.219, i64 19, i64 0 }, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - %t751 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t751, ptr %a721 - br label %endif326 -endif326: - %t752 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t752, ptr %a753 - %t754 = call i32 @finch_file_exists(ptr %a753) - %t755 = icmp ne i32 %t754, 0 - %t756 = xor i1 %t755, true - br label %logic.from329 -logic.from329: - br i1 %t756, label %logic.rhs330, label %logic.end331 -logic.rhs330: - store { ptr, i64, i64 } { ptr @.str.220, i64 18, i64 0 }, ptr %a757 - %t758 = call i32 @finch_file_exists(ptr %a757) - %t759 = icmp ne i32 %t758, 0 - br label %logic.rend332 -logic.rend332: - br label %logic.end331 -logic.end331: - %t760 = phi i1 [ false, %logic.from329 ], [ %t759, %logic.rend332 ] - br i1 %t760, label %then333, label %endif335 -then333: - store { ptr, i64, i64 } { ptr @.str.221, i64 18, i64 0 }, ptr %a721 - br label %endif335 -endif335: - %t761 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t761, ptr %a762 - %t763 = call i32 @finch_file_exists(ptr %a762) - %t764 = icmp ne i32 %t763, 0 - %t765 = xor i1 %t764, true - br i1 %t765, label %then336, label %endif338 -then336: - %t766 = extractvalue { ptr, i64, i64 } { ptr @.str.222, i64 56, i64 0 }, 1 - %t767 = trunc i64 %t766 to i32 - %t768 = extractvalue { ptr, i64, i64 } { ptr @.str.222, i64 56, i64 0 }, 0 - %t769 = icmp eq ptr %t768, null - %t770 = select i1 %t769, ptr @.str.223, ptr %t768 - %t771 = call i32 (ptr, ...) @printf(ptr @.str.224, i32 %t767, ptr %t770) - %t772 = call i32 (ptr, ...) @printf(ptr @.str.225) - ret i64 1 -endif338: - store { ptr, i64, i64 } { ptr @.str.226, i64 0, i64 0 }, ptr %a773 - %t774 = load i1, ptr %a78 - br i1 %t774, label %then339, label %endif341 -then339: - store { ptr, i64, i64 } { ptr @.str.227, i64 6, i64 0 }, ptr %a773 - br label %endif341 -endif341: - %t775 = load i1, ptr %a79 - br i1 %t775, label %then342, label %endif344 -then342: - %t776 = load { ptr, i64, i64 }, ptr %a773 - store { ptr, i64, i64 } %t776, ptr %a778 - store { ptr, i64, i64 } { ptr @.str.228, i64 3, i64 0 }, ptr %a779 - call void @finch_str_concat(ptr %a777, ptr %a778, ptr %a779) - %t780 = load { ptr, i64, i64 }, ptr %a777 - store { ptr, i64, i64 } %t780, ptr %a773 - br label %endif344 -endif344: - %t781 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t781, ptr %a782 - call void @finch_str_copy(ptr %a783, ptr %a782) - %t784 = load { ptr, i64, i64 }, ptr %a783 - %t785 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t784, 0 - %t786 = load { ptr, i64, i64 }, ptr %a698 - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_copy(ptr %a788, ptr %a787) - %t789 = load { ptr, i64, i64 }, ptr %a788 - %t790 = insertvalue %S.linker.Build %t785, { ptr, i64, i64 } %t789, 1 - %t791 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t791, ptr %a792 - call void @finch_str_copy(ptr %a793, ptr %a792) - %t794 = load { ptr, i64, i64 }, ptr %a793 - %t795 = insertvalue %S.linker.Build %t790, { ptr, i64, i64 } %t794, 2 - %t796 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t796, ptr %a797 - call void @finch_str_copy(ptr %a798, ptr %a797) - %t799 = load { ptr, i64, i64 }, ptr %a798 - %t800 = insertvalue %S.linker.Build %t795, { ptr, i64, i64 } %t799, 3 - %t801 = load { ptr, i64, i64 }, ptr %a773 - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_copy(ptr %a803, ptr %a802) - %t804 = load { ptr, i64, i64 }, ptr %a803 - %t805 = insertvalue %S.linker.Build %t800, { ptr, i64, i64 } %t804, 4 - %t806 = load i1, ptr %a78 - %t807 = insertvalue %S.linker.Build %t805, i1 %t806, 5 - %t808 = load { ptr, i64, i64 }, ptr %a465 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch.copy.arr_str(ptr %a810, ptr %a809) - %t811 = load { ptr, i64, i64 }, ptr %a810 - %t812 = insertvalue %S.linker.Build %t807, { ptr, i64, i64 } %t811, 6 - %t813 = load %S.platform.Target, ptr %a291 - %t814 = load %S.cimport.CImports, ptr %a672 - %t815 = call i64 @finch.linker.build(%S.linker.Build %t812, %S.platform.Target %t813, %S.cimport.CImports %t814) - %t816 = icmp ne i64 %t815, 0 - br i1 %t816, label %then345, label %endif347 -then345: - ret i64 1 -endif347: - %t817 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t817, ptr %a818 - store { ptr, i64, i64 } { ptr @.str.229, i64 3, i64 0 }, ptr %a819 - %t820 = call i32 @finch_str_eq(ptr %a818, ptr %a819) - %t821 = icmp ne i32 %t820, 0 - br i1 %t821, label %then348, label %endif350 -then348: +endif375: + %t818 = extractvalue { ptr, i64, i64 } { ptr @.str.234, i64 8, i64 0 }, 0 + %t819 = icmp eq ptr %t818, null + %t820 = select i1 %t819, ptr @.str.235, ptr %t818 + %t821 = call ptr @getenv(ptr %t820) store { ptr, i64, i64 } zeroinitializer, ptr %a822 - store i64 0, ptr %a823 - br label %each.cond351 -each.cond351: - %t824 = getelementptr inbounds { ptr, i64, i64 }, ptr %a84, i32 0, i32 1 - %t825 = load i64, ptr %t824 - %t826 = load i64, ptr %a823 - %t827 = icmp slt i64 %t826, %t825 - br i1 %t827, label %each.body352, label %each.end354 -each.body352: - %t828 = load ptr, ptr %a84 - %t829 = getelementptr inbounds { ptr, i64, i64 }, ptr %t828, i64 %t826 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t830, ptr %a831 - %t832 = getelementptr inbounds { ptr, i64, i64 }, ptr %a822, i32 0, i32 1 - %t833 = load { ptr, i64, i64 }, ptr %a831 - %t834 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t833) - %t835 = load i64, ptr %t832 - %t836 = add i64 %t835, 1 - call void @finch_arr_reserve(ptr %a822, i64 %t836, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t837 = load ptr, ptr %a822 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t835 - store { ptr, i64, i64 } %t834, ptr %t838 - store i64 %t836, ptr %t832 - br label %each.step353 -each.step353: - %t839 = load i64, ptr %a823 - %t840 = add i64 %t839, 1 - store i64 %t840, ptr %a823 - br label %each.cond351 -each.end354: - %t841 = getelementptr inbounds %S.platform.Target, ptr %a291, i32 0, i32 8 - %t842 = load { ptr, i64, i64 }, ptr %t841 - %t843 = load { ptr, i64, i64 }, ptr %a76 - %t844 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t843) - store { ptr, i64, i64 } %t842, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - %t848 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.230, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - %t853 = getelementptr inbounds { ptr, i64, i64 }, ptr %a822, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.231, i64 1, i64 0 }, ptr %a854 - call void @finch_str_join(ptr %a855, ptr %a822, ptr %a854) - %t856 = load { ptr, i64, i64 }, ptr %a855 - store { ptr, i64, i64 } %t852, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - %t860 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t860, ptr %a862 - call void @finch_str_copy(ptr %a861, ptr %a862) - %t863 = call i64 @finch_shell(ptr %a861) - store i64 %t863, ptr %a864 - %t865 = load { ptr, i64, i64 }, ptr %a76 - %t866 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t865) - store { ptr, i64, i64 } { ptr @.str.232, i64 6, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - %t870 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t870, ptr %a872 - call void @finch_str_copy(ptr %a871, ptr %a872) - %t873 = call i64 @finch_shell(ptr %a871) - %t874 = load i64, ptr %a864 - ret i64 %t874 -endif350: + call void @finch_str_from_c(ptr %a822, ptr %t821) + %t823 = load { ptr, i64, i64 }, ptr %a822 + store { ptr, i64, i64 } %t823, ptr %a824 + call void @finch_str_copy(ptr %a825, ptr %a824) + %t826 = load { ptr, i64, i64 }, ptr %a825 + store { ptr, i64, i64 } %t826, ptr %a827 + %t828 = getelementptr inbounds { ptr, i64, i64 }, ptr %a827, i32 0, i32 1 + %t829 = load i64, ptr %t828 + %t830 = icmp eq i64 %t829, 0 + br i1 %t830, label %then376, label %endif378 +then376: + %t831 = load { ptr, i64, i64 }, ptr %a1 + %t832 = extractvalue { ptr, i64, i64 } %t831, 1 + %t833 = icmp uge i64 0, %t832 + br i1 %t833, label %range379, label %inrange380 +range379: + call void @finch_panic_index(ptr @.str.236, i64 274, i64 0, i64 %t832) + unreachable +inrange380: + %t834 = extractvalue { ptr, i64, i64 } %t831, 0 + %t835 = getelementptr inbounds { ptr, i64, i64 }, ptr %t834, i64 0 + %t836 = load { ptr, i64, i64 }, ptr %t835 + %t837 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t836) + store { ptr, i64, i64 } %t837, ptr %a839 + store { ptr, i64, i64 } { ptr @.str.237, i64 22, i64 0 }, ptr %a840 + call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) + %t841 = load { ptr, i64, i64 }, ptr %a838 + store { ptr, i64, i64 } %t841, ptr %a827 + br label %endif378 +endif378: + %t842 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t842, ptr %a843 + %t844 = call i32 @finch_file_exists(ptr %a843) + %t845 = icmp ne i32 %t844, 0 + %t846 = xor i1 %t845, true + br i1 %t846, label %then381, label %endif383 +then381: + %t847 = load { ptr, i64, i64 }, ptr %a1 + %t848 = extractvalue { ptr, i64, i64 } %t847, 1 + %t849 = icmp uge i64 0, %t848 + br i1 %t849, label %range384, label %inrange385 +range384: + call void @finch_panic_index(ptr @.str.238, i64 277, i64 0, i64 %t848) + unreachable +inrange385: + %t850 = extractvalue { ptr, i64, i64 } %t847, 0 + %t851 = getelementptr inbounds { ptr, i64, i64 }, ptr %t850, i64 0 + %t852 = load { ptr, i64, i64 }, ptr %t851 + %t853 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t852) + store { ptr, i64, i64 } %t853, ptr %a855 + store { ptr, i64, i64 } { ptr @.str.239, i64 19, i64 0 }, ptr %a856 + call void @finch_str_concat(ptr %a854, ptr %a855, ptr %a856) + %t857 = load { ptr, i64, i64 }, ptr %a854 + store { ptr, i64, i64 } %t857, ptr %a827 + br label %endif383 +endif383: + %t858 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t858, ptr %a859 + %t860 = call i32 @finch_file_exists(ptr %a859) + %t861 = icmp ne i32 %t860, 0 + %t862 = xor i1 %t861, true + br label %logic.from386 +logic.from386: + br i1 %t862, label %logic.rhs387, label %logic.end388 +logic.rhs387: + store { ptr, i64, i64 } { ptr @.str.240, i64 18, i64 0 }, ptr %a863 + %t864 = call i32 @finch_file_exists(ptr %a863) + %t865 = icmp ne i32 %t864, 0 + br label %logic.rend389 +logic.rend389: + br label %logic.end388 +logic.end388: + %t866 = phi i1 [ false, %logic.from386 ], [ %t865, %logic.rend389 ] + br i1 %t866, label %then390, label %endif392 +then390: + store { ptr, i64, i64 } { ptr @.str.241, i64 18, i64 0 }, ptr %a827 + br label %endif392 +endif392: + %t867 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t867, ptr %a868 + %t869 = call i32 @finch_file_exists(ptr %a868) + %t870 = icmp ne i32 %t869, 0 + %t871 = xor i1 %t870, true + br i1 %t871, label %then393, label %endif395 +then393: + %t872 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 1 + %t873 = trunc i64 %t872 to i32 + %t874 = extractvalue { ptr, i64, i64 } { ptr @.str.242, i64 56, i64 0 }, 0 + %t875 = icmp eq ptr %t874, null + %t876 = select i1 %t875, ptr @.str.243, ptr %t874 + %t877 = call i32 (ptr, ...) @printf(ptr @.str.244, i32 %t873, ptr %t876) + %t878 = call i32 (ptr, ...) @printf(ptr @.str.245) + ret i64 1 +endif395: + store { ptr, i64, i64 } { ptr @.str.246, i64 0, i64 0 }, ptr %a879 + %t880 = load i1, ptr %a105 + br i1 %t880, label %then396, label %endif398 +then396: + store { ptr, i64, i64 } { ptr @.str.247, i64 6, i64 0 }, ptr %a879 + br label %endif398 +endif398: + %t881 = load i1, ptr %a106 + br i1 %t881, label %then399, label %endif401 +then399: + %t882 = load { ptr, i64, i64 }, ptr %a879 + store { ptr, i64, i64 } %t882, ptr %a884 + store { ptr, i64, i64 } { ptr @.str.248, i64 3, i64 0 }, ptr %a885 + call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) + %t886 = load { ptr, i64, i64 }, ptr %a883 + store { ptr, i64, i64 } %t886, ptr %a879 + br label %endif401 +endif401: + %t887 = load { ptr, i64, i64 }, ptr %a103 + store { ptr, i64, i64 } %t887, ptr %a888 + call void @finch_str_copy(ptr %a889, ptr %a888) + %t890 = load { ptr, i64, i64 }, ptr %a889 + %t891 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t890, 0 + %t892 = load { ptr, i64, i64 }, ptr %a798 + store { ptr, i64, i64 } %t892, ptr %a893 + call void @finch_str_copy(ptr %a894, ptr %a893) + %t895 = load { ptr, i64, i64 }, ptr %a894 + %t896 = insertvalue %S.linker.Build %t891, { ptr, i64, i64 } %t895, 1 + %t897 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t897, ptr %a898 + call void @finch_str_copy(ptr %a899, ptr %a898) + %t900 = load { ptr, i64, i64 }, ptr %a899 + %t901 = insertvalue %S.linker.Build %t896, { ptr, i64, i64 } %t900, 2 + %t902 = load { ptr, i64, i64 }, ptr %a108 + store { ptr, i64, i64 } %t902, ptr %a903 + call void @finch_str_copy(ptr %a904, ptr %a903) + %t905 = load { ptr, i64, i64 }, ptr %a904 + %t906 = insertvalue %S.linker.Build %t901, { ptr, i64, i64 } %t905, 3 + %t907 = load { ptr, i64, i64 }, ptr %a879 + store { ptr, i64, i64 } %t907, ptr %a908 + call void @finch_str_copy(ptr %a909, ptr %a908) + %t910 = load { ptr, i64, i64 }, ptr %a909 + %t911 = insertvalue %S.linker.Build %t906, { ptr, i64, i64 } %t910, 4 + %t912 = load i1, ptr %a105 + %t913 = insertvalue %S.linker.Build %t911, i1 %t912, 5 + %t914 = load { ptr, i64, i64 }, ptr %a559 + store { ptr, i64, i64 } %t914, ptr %a915 + call void @finch.copy.arr_str(ptr %a916, ptr %a915) + %t917 = load { ptr, i64, i64 }, ptr %a916 + %t918 = insertvalue %S.linker.Build %t913, { ptr, i64, i64 } %t917, 6 + %t919 = load %S.platform.Target, ptr %a375 + %t920 = load %S.cimport.CImports, ptr %a766 + %t921 = call i64 @finch.linker.build(%S.linker.Build %t918, %S.platform.Target %t919, %S.cimport.CImports %t920) + %t922 = icmp ne i64 %t921, 0 + br i1 %t922, label %then402, label %endif404 +then402: + ret i64 1 +endif404: + %t923 = load { ptr, i64, i64 }, ptr %a67 + store { ptr, i64, i64 } %t923, ptr %a924 + store { ptr, i64, i64 } { ptr @.str.249, i64 3, i64 0 }, ptr %a925 + %t926 = call i32 @finch_str_eq(ptr %a924, ptr %a925) + %t927 = icmp ne i32 %t926, 0 + br i1 %t927, label %then405, label %endif407 +then405: + store { ptr, i64, i64 } zeroinitializer, ptr %a928 + store i64 0, ptr %a929 + br label %each.cond408 +each.cond408: + %t930 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 + %t931 = load i64, ptr %t930 + %t932 = load i64, ptr %a929 + %t933 = icmp slt i64 %t932, %t931 + br i1 %t933, label %each.body409, label %each.end411 +each.body409: + %t934 = load ptr, ptr %a113 + %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i64 %t932 + %t936 = load { ptr, i64, i64 }, ptr %t935 + store { ptr, i64, i64 } %t936, ptr %a937 + %t938 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 + %t939 = load { ptr, i64, i64 }, ptr %a937 + %t940 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t939) + %t941 = load i64, ptr %t938 + %t942 = add i64 %t941, 1 + call void @finch_arr_reserve(ptr %a928, i64 %t942, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t943 = load ptr, ptr %a928 + %t944 = getelementptr inbounds { ptr, i64, i64 }, ptr %t943, i64 %t941 + store { ptr, i64, i64 } %t940, ptr %t944 + store i64 %t942, ptr %t938 + br label %each.step410 +each.step410: + %t945 = load i64, ptr %a929 + %t946 = add i64 %t945, 1 + store i64 %t946, ptr %a929 + br label %each.cond408 +each.end411: + %t947 = getelementptr inbounds %S.platform.Target, ptr %a375, i32 0, i32 8 + %t948 = load { ptr, i64, i64 }, ptr %t947 + %t949 = load { ptr, i64, i64 }, ptr %a103 + %t950 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t949) + store { ptr, i64, i64 } %t948, ptr %a952 + store { ptr, i64, i64 } %t950, ptr %a953 + call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) + %t954 = load { ptr, i64, i64 }, ptr %a951 + store { ptr, i64, i64 } %t954, ptr %a956 + store { ptr, i64, i64 } { ptr @.str.250, i64 1, i64 0 }, ptr %a957 + call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957) + %t958 = load { ptr, i64, i64 }, ptr %a955 + %t959 = getelementptr inbounds { ptr, i64, i64 }, ptr %a928, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.251, i64 1, i64 0 }, ptr %a960 + call void @finch_str_join(ptr %a961, ptr %a928, ptr %a960) + %t962 = load { ptr, i64, i64 }, ptr %a961 + store { ptr, i64, i64 } %t958, ptr %a964 + store { ptr, i64, i64 } %t962, ptr %a965 + call void @finch_str_concat(ptr %a963, ptr %a964, ptr %a965) + %t966 = load { ptr, i64, i64 }, ptr %a963 + store { ptr, i64, i64 } %t966, ptr %a968 + call void @finch_str_copy(ptr %a967, ptr %a968) + %t969 = call i64 @finch_shell(ptr %a967) + store i64 %t969, ptr %a970 + %t971 = load { ptr, i64, i64 }, ptr %a103 + %t972 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t971) + store { ptr, i64, i64 } { ptr @.str.252, i64 6, i64 0 }, ptr %a974 + store { ptr, i64, i64 } %t972, ptr %a975 + call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) + %t976 = load { ptr, i64, i64 }, ptr %a973 + store { ptr, i64, i64 } %t976, ptr %a978 + call void @finch_str_copy(ptr %a977, ptr %a978) + %t979 = call i64 @finch_shell(ptr %a977) + %t980 = load i64, ptr %a970 + ret i64 %t980 +endif407: ret i64 0 } @@ -9171,50 +10602,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 97 - br label %logic.from355 -logic.from355: - br i1 %t3, label %logic.rhs356, label %logic.end357 -logic.rhs356: + br label %logic.from412 +logic.from412: + br i1 %t3, label %logic.rhs413, label %logic.end414 +logic.rhs413: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 122 - br label %logic.rend358 -logic.rend358: - br label %logic.end357 -logic.end357: - %t6 = phi i1 [ false, %logic.from355 ], [ %t5, %logic.rend358 ] - br label %logic.from359 -logic.from359: - br i1 %t6, label %logic.end361, label %logic.rhs360 -logic.rhs360: + br label %logic.rend415 +logic.rend415: + br label %logic.end414 +logic.end414: + %t6 = phi i1 [ false, %logic.from412 ], [ %t5, %logic.rend415 ] + br label %logic.from416 +logic.from416: + br i1 %t6, label %logic.end418, label %logic.rhs417 +logic.rhs417: %t7 = load i8, ptr %a1 %t8 = icmp uge i8 %t7, 65 - br label %logic.from362 -logic.from362: - br i1 %t8, label %logic.rhs363, label %logic.end364 -logic.rhs363: + br label %logic.from419 +logic.from419: + br i1 %t8, label %logic.rhs420, label %logic.end421 +logic.rhs420: %t9 = load i8, ptr %a1 %t10 = icmp ule i8 %t9, 90 - br label %logic.rend365 -logic.rend365: - br label %logic.end364 -logic.end364: - %t11 = phi i1 [ false, %logic.from362 ], [ %t10, %logic.rend365 ] - br label %logic.rend366 -logic.rend366: - br label %logic.end361 -logic.end361: - %t12 = phi i1 [ true, %logic.from359 ], [ %t11, %logic.rend366 ] - br label %logic.from367 -logic.from367: - br i1 %t12, label %logic.end369, label %logic.rhs368 -logic.rhs368: + br label %logic.rend422 +logic.rend422: + br label %logic.end421 +logic.end421: + %t11 = phi i1 [ false, %logic.from419 ], [ %t10, %logic.rend422 ] + br label %logic.rend423 +logic.rend423: + br label %logic.end418 +logic.end418: + %t12 = phi i1 [ true, %logic.from416 ], [ %t11, %logic.rend423 ] + br label %logic.from424 +logic.from424: + br i1 %t12, label %logic.end426, label %logic.rhs425 +logic.rhs425: %t13 = load i8, ptr %a1 %t14 = icmp eq i8 %t13, 95 - br label %logic.rend370 -logic.rend370: - br label %logic.end369 -logic.end369: - %t15 = phi i1 [ true, %logic.from367 ], [ %t14, %logic.rend370 ] + br label %logic.rend427 +logic.rend427: + br label %logic.end426 +logic.end426: + %t15 = phi i1 [ true, %logic.from424 ], [ %t14, %logic.rend427 ] ret i1 %t15 } @@ -9224,17 +10655,17 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = icmp uge i8 %t2, 48 - br label %logic.from371 -logic.from371: - br i1 %t3, label %logic.rhs372, label %logic.end373 -logic.rhs372: + br label %logic.from428 +logic.from428: + br i1 %t3, label %logic.rhs429, label %logic.end430 +logic.rhs429: %t4 = load i8, ptr %a1 %t5 = icmp ule i8 %t4, 57 - br label %logic.rend374 -logic.rend374: - br label %logic.end373 -logic.end373: - %t6 = phi i1 [ false, %logic.from371 ], [ %t5, %logic.rend374 ] + br label %logic.rend431 +logic.rend431: + br label %logic.end430 +logic.end430: + %t6 = phi i1 [ false, %logic.from428 ], [ %t5, %logic.rend431 ] ret i1 %t6 } @@ -9244,50 +10675,50 @@ entry: store i8 %p0, ptr %a1 %t2 = load i8, ptr %a1 %t3 = call i1 @finch.lexer.isDigit(i8 %t2) - br label %logic.from375 -logic.from375: - br i1 %t3, label %logic.end377, label %logic.rhs376 -logic.rhs376: + br label %logic.from432 +logic.from432: + br i1 %t3, label %logic.end434, label %logic.rhs433 +logic.rhs433: %t4 = load i8, ptr %a1 %t5 = icmp uge i8 %t4, 97 - br label %logic.from378 -logic.from378: - br i1 %t5, label %logic.rhs379, label %logic.end380 -logic.rhs379: + br label %logic.from435 +logic.from435: + br i1 %t5, label %logic.rhs436, label %logic.end437 +logic.rhs436: %t6 = load i8, ptr %a1 %t7 = icmp ule i8 %t6, 102 - br label %logic.rend381 -logic.rend381: - br label %logic.end380 -logic.end380: - %t8 = phi i1 [ false, %logic.from378 ], [ %t7, %logic.rend381 ] - br label %logic.rend382 -logic.rend382: - br label %logic.end377 -logic.end377: - %t9 = phi i1 [ true, %logic.from375 ], [ %t8, %logic.rend382 ] - br label %logic.from383 -logic.from383: - br i1 %t9, label %logic.end385, label %logic.rhs384 -logic.rhs384: + br label %logic.rend438 +logic.rend438: + br label %logic.end437 +logic.end437: + %t8 = phi i1 [ false, %logic.from435 ], [ %t7, %logic.rend438 ] + br label %logic.rend439 +logic.rend439: + br label %logic.end434 +logic.end434: + %t9 = phi i1 [ true, %logic.from432 ], [ %t8, %logic.rend439 ] + br label %logic.from440 +logic.from440: + br i1 %t9, label %logic.end442, label %logic.rhs441 +logic.rhs441: %t10 = load i8, ptr %a1 %t11 = icmp uge i8 %t10, 65 - br label %logic.from386 -logic.from386: - br i1 %t11, label %logic.rhs387, label %logic.end388 -logic.rhs387: + br label %logic.from443 +logic.from443: + br i1 %t11, label %logic.rhs444, label %logic.end445 +logic.rhs444: %t12 = load i8, ptr %a1 %t13 = icmp ule i8 %t12, 70 - br label %logic.rend389 -logic.rend389: - br label %logic.end388 -logic.end388: - %t14 = phi i1 [ false, %logic.from386 ], [ %t13, %logic.rend389 ] - br label %logic.rend390 -logic.rend390: - br label %logic.end385 -logic.end385: - %t15 = phi i1 [ true, %logic.from383 ], [ %t14, %logic.rend390 ] + br label %logic.rend446 +logic.rend446: + br label %logic.end445 +logic.end445: + %t14 = phi i1 [ false, %logic.from443 ], [ %t13, %logic.rend446 ] + br label %logic.rend447 +logic.rend447: + br label %logic.end442 +logic.end442: + %t15 = phi i1 [ true, %logic.from440 ], [ %t14, %logic.rend447 ] ret i1 %t15 } @@ -9303,47 +10734,47 @@ entry: %t2 = mul i64 21, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.253, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.234, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.254, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.235, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.255, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.236, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.256, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.237, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.257, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.238, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.239, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.259, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.240, i64 5, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.260, i64 5, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.241, i64 8, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.261, i64 8, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.242, i64 4, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.262, i64 4, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.243, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.263, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.244, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.264, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.245, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.265, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.246, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.266, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.247, i64 6, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.267, i64 6, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.248, i64 5, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.268, i64 5, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.249, i64 2, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.269, i64 2, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.250, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.270, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.251, i64 4, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.252, i64 5, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.253, i64 6, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.273, i64 6, i64 0 }, ptr %t24 %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 @@ -9354,27 +10785,27 @@ entry: %t32 = load i64, ptr %t29 %t33 = load ptr, ptr %a28 store i64 0, ptr %a34 - br label %find.cond391 -find.cond391: + br label %find.cond448 +find.cond448: %t35 = load i64, ptr %a34 %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body392, label %find.end395 -find.body392: + br i1 %t36, label %find.body449, label %find.end452 +find.body449: %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t35 %t38 = load { ptr, i64, i64 }, ptr %t37 store { ptr, i64, i64 } %t38, ptr %a39 store { ptr, i64, i64 } %t30, ptr %a40 %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) %t42 = icmp ne i32 %t41, 0 - br i1 %t42, label %find.hit393, label %find.next394 -find.hit393: + br i1 %t42, label %find.hit450, label %find.next451 +find.hit450: store i64 %t35, ptr %a31 - br label %find.end395 -find.next394: + br label %find.end452 +find.next451: %t43 = add i64 %t35, 1 store i64 %t43, ptr %a34 - br label %find.cond391 -find.end395: + br label %find.cond448 +find.end452: %t44 = load i64, ptr %a31 %t45 = icmp sge i64 %t44, 0 ret i1 %t45 @@ -9412,15 +10843,15 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic396, label %ok397 -panic396: - call void @finch_panic(ptr @.str.254, i64 41, ptr @.str.255) + br i1 %t6, label %panic453, label %ok454 +panic453: + call void @finch_panic(ptr @.str.274, i64 41, ptr @.str.275) unreachable -ok397: +ok454: %t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 1 %t8 = load { ptr, i64, i64 }, ptr %t7 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.256, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.276, i64 1, i64 0 }, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 %t13 = load i64, ptr %a2 @@ -9431,7 +10862,7 @@ ok397: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.257, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.277, i64 1, i64 0 }, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 %t24 = load i64, ptr %a3 @@ -9442,7 +10873,7 @@ ok397: call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.258, i64 9, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.278, i64 9, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = load { ptr, i64, i64 }, ptr %a4 @@ -9454,9 +10885,9 @@ ok397: %t41 = trunc i64 %t40 to i32 %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = icmp eq ptr %t42, null - %t44 = select i1 %t43, ptr @.str.259, ptr %t42 - %t45 = call i32 (ptr, ...) @printf(ptr @.str.260, i32 %t41, ptr %t44) - %t46 = call i32 (ptr, ...) @printf(ptr @.str.261) + %t44 = select i1 %t43, ptr @.str.279, ptr %t42 + %t45 = call i32 (ptr, ...) @printf(ptr @.str.280, i32 %t41, ptr %t44) + %t46 = call i32 (ptr, ...) @printf(ptr @.str.281) %t47 = trunc i64 1 to i32 %t48 = call i32 @fflush(ptr null) call void @exit(i32 %t47) @@ -9471,43 +10902,43 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic398, label %ok399 -panic398: - call void @finch_panic(ptr @.str.262, i64 46, ptr @.str.263) + br i1 %t4, label %panic455, label %ok456 +panic455: + call void @finch_panic(ptr @.str.282, i64 46, ptr @.str.283) unreachable -ok399: +ok456: %t5 = getelementptr inbounds %S.lexer.Lexer, ptr %t3, i32 0, i32 2 %t6 = load i64, ptr %t5 %t7 = load i64, ptr %a2 %t8 = add i64 %t6, %t7 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic400, label %ok401 -panic400: - call void @finch_panic(ptr @.str.264, i64 46, ptr @.str.265) + br i1 %t10, label %panic457, label %ok458 +panic457: + call void @finch_panic(ptr @.str.284, i64 46, ptr @.str.285) unreachable -ok401: +ok458: %t11 = getelementptr inbounds %S.lexer.Lexer, ptr %t9, i32 0, i32 0 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = icmp slt i64 %t8, %t13 - br i1 %t14, label %then402, label %endif404 -then402: + br i1 %t14, label %then459, label %endif461 +then459: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic405, label %ok406 -panic405: - call void @finch_panic(ptr @.str.266, i64 47, ptr @.str.267) + br i1 %t16, label %panic462, label %ok463 +panic462: + call void @finch_panic(ptr @.str.286, i64 47, ptr @.str.287) unreachable -ok406: +ok463: %t17 = getelementptr inbounds %S.lexer.Lexer, ptr %t15, i32 0, i32 0 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic407, label %ok408 -panic407: - call void @finch_panic(ptr @.str.268, i64 47, ptr @.str.269) + br i1 %t19, label %panic464, label %ok465 +panic464: + call void @finch_panic(ptr @.str.288, i64 47, ptr @.str.289) unreachable -ok408: +ok465: %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 2 %t21 = load i64, ptr %t20 %t22 = load i64, ptr %a2 @@ -9515,16 +10946,16 @@ ok408: %t24 = load { ptr, i64, i64 }, ptr %t17 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range409, label %inrange410 -range409: - call void @finch_panic_index(ptr @.str.270, i64 47, i64 %t23, i64 %t25) + br i1 %t26, label %range466, label %inrange467 +range466: + call void @finch_panic_index(ptr @.str.290, i64 47, i64 %t23, i64 %t25) unreachable -inrange410: +inrange467: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 %t29 = load i8, ptr %t28 ret i8 %t29 -endif404: +endif461: %t30 = trunc i64 0 to i8 ret i8 %t30 } @@ -9536,96 +10967,96 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic411, label %ok412 -panic411: - call void @finch_panic(ptr @.str.271, i64 53, ptr @.str.272) + br i1 %t3, label %panic468, label %ok469 +panic468: + call void @finch_panic(ptr @.str.291, i64 53, ptr @.str.292) unreachable -ok412: +ok469: %t4 = getelementptr inbounds %S.lexer.Lexer, ptr %t2, i32 0, i32 0 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic413, label %ok414 -panic413: - call void @finch_panic(ptr @.str.273, i64 53, ptr @.str.274) + br i1 %t6, label %panic470, label %ok471 +panic470: + call void @finch_panic(ptr @.str.293, i64 53, ptr @.str.294) unreachable -ok414: +ok471: %t7 = getelementptr inbounds %S.lexer.Lexer, ptr %t5, i32 0, i32 2 %t8 = load i64, ptr %t7 %t9 = load { ptr, i64, i64 }, ptr %t4 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range415, label %inrange416 -range415: - call void @finch_panic_index(ptr @.str.275, i64 53, i64 %t8, i64 %t10) + br i1 %t11, label %range472, label %inrange473 +range472: + call void @finch_panic_index(ptr @.str.295, i64 53, i64 %t8, i64 %t10) unreachable -inrange416: +inrange473: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds i8, ptr %t12, i64 %t8 %t14 = load i8, ptr %t13 store i8 %t14, ptr %a15 %t16 = load i8, ptr %a15 %t17 = icmp eq i8 %t16, 10 - br i1 %t17, label %then417, label %else418 -then417: + br i1 %t17, label %then474, label %else475 +then474: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic420, label %ok421 -panic420: - call void @finch_panic(ptr @.str.276, i64 55, ptr @.str.277) + br i1 %t19, label %panic477, label %ok478 +panic477: + call void @finch_panic(ptr @.str.296, i64 55, ptr @.str.297) unreachable -ok421: +ok478: %t20 = getelementptr inbounds %S.lexer.Lexer, ptr %t18, i32 0, i32 3 %t21 = load i64, ptr %t20 %t22 = add i64 %t21, 1 store i64 %t22, ptr %t20 %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic422, label %ok423 -panic422: - call void @finch_panic(ptr @.str.278, i64 56, ptr @.str.279) + br i1 %t24, label %panic479, label %ok480 +panic479: + call void @finch_panic(ptr @.str.298, i64 56, ptr @.str.299) unreachable -ok423: +ok480: %t25 = getelementptr inbounds %S.lexer.Lexer, ptr %t23, i32 0, i32 4 store i64 1, ptr %t25 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic424, label %ok425 -panic424: - call void @finch_panic(ptr @.str.280, i64 57, ptr @.str.281) + br i1 %t27, label %panic481, label %ok482 +panic481: + call void @finch_panic(ptr @.str.300, i64 57, ptr @.str.301) unreachable -ok425: +ok482: %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 store i1 true, ptr %t28 - br label %endif419 -else418: + br label %endif476 +else475: %t29 = load i8, ptr %a15 %t30 = zext i8 %t29 to i64 %t31 = and i64 %t30, 192 %t32 = icmp ne i64 %t31, 128 - br i1 %t32, label %then426, label %endif428 -then426: + br i1 %t32, label %then483, label %endif485 +then483: %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic429, label %ok430 -panic429: - call void @finch_panic(ptr @.str.282, i64 59, ptr @.str.283) + br i1 %t34, label %panic486, label %ok487 +panic486: + call void @finch_panic(ptr @.str.302, i64 59, ptr @.str.303) unreachable -ok430: +ok487: %t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 4 %t36 = load i64, ptr %t35 %t37 = add i64 %t36, 1 store i64 %t37, ptr %t35 - br label %endif428 -endif428: - br label %endif419 -endif419: + br label %endif485 +endif485: + br label %endif476 +endif476: %t38 = load ptr, ptr %a1 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic431, label %ok432 -panic431: - call void @finch_panic(ptr @.str.284, i64 61, ptr @.str.285) + br i1 %t39, label %panic488, label %ok489 +panic488: + call void @finch_panic(ptr @.str.304, i64 61, ptr @.str.305) unreachable -ok432: +ok489: %t40 = getelementptr inbounds %S.lexer.Lexer, ptr %t38, i32 0, i32 2 %t41 = load i64, ptr %t40 %t42 = add i64 %t41, 1 @@ -9657,94 +11088,94 @@ entry: %t2 = mul i64 16, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.286, i64 2, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.306, i64 2, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.287, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.307, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.288, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.308, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.289, i64 2, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.309, i64 2, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.290, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.310, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.291, i64 2, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.311, i64 2, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.292, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.312, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.293, i64 2, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.313, i64 2, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.294, i64 2, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.314, i64 2, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.295, i64 2, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.315, i64 2, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.296, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.297, i64 2, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.298, i64 2, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.299, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.300, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.301, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t19 %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 store { ptr, i64, i64 } %t22, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic433, label %ok434 -panic433: - call void @finch_panic(ptr @.str.302, i64 67, ptr @.str.303) + br i1 %t25, label %panic490, label %ok491 +panic490: + call void @finch_panic(ptr @.str.322, i64 67, ptr @.str.323) unreachable -ok434: +ok491: %t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 2 %t27 = load i64, ptr %t26 %t28 = add i64 %t27, 1 %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic435, label %ok436 -panic435: - call void @finch_panic(ptr @.str.304, i64 67, ptr @.str.305) + br i1 %t30, label %panic492, label %ok493 +panic492: + call void @finch_panic(ptr @.str.324, i64 67, ptr @.str.325) unreachable -ok436: +ok493: %t31 = getelementptr inbounds %S.lexer.Lexer, ptr %t29, i32 0, i32 0 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 %t33 = load i64, ptr %t32 %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %then437, label %endif439 -then437: + br i1 %t34, label %then494, label %endif496 +then494: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic440, label %ok441 -panic440: - call void @finch_panic(ptr @.str.306, i64 68, ptr @.str.307) + br i1 %t36, label %panic497, label %ok498 +panic497: + call void @finch_panic(ptr @.str.326, i64 68, ptr @.str.327) unreachable -ok441: +ok498: %t37 = getelementptr inbounds %S.lexer.Lexer, ptr %t35, i32 0, i32 0 %t38 = load { ptr, i64, i64 }, ptr %t37 store { ptr, i64, i64 } %t38, ptr %a39 %t41 = load ptr, ptr %a1 %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic442, label %ok443 -panic442: - call void @finch_panic(ptr @.str.309, i64 68, ptr @.str.310) + br i1 %t42, label %panic499, label %ok500 +panic499: + call void @finch_panic(ptr @.str.329, i64 68, ptr @.str.330) unreachable -ok443: +ok500: %t43 = getelementptr inbounds %S.lexer.Lexer, ptr %t41, i32 0, i32 2 %t44 = load i64, ptr %t43 %t45 = load ptr, ptr %a1 %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic444, label %ok445 -panic444: - call void @finch_panic(ptr @.str.311, i64 68, ptr @.str.312) + br i1 %t46, label %panic501, label %ok502 +panic501: + call void @finch_panic(ptr @.str.331, i64 68, ptr @.str.332) unreachable -ok445: +ok502: %t47 = getelementptr inbounds %S.lexer.Lexer, ptr %t45, i32 0, i32 2 %t48 = load i64, ptr %t47 %t49 = add i64 %t48, 2 - call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.308, i64 68) + call void @finch_str_sub(ptr %a40, ptr %a39, i64 %t44, i64 %t49, ptr @.str.328, i64 68) %t50 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t50, ptr %a51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 @@ -9753,67 +11184,67 @@ ok445: %t55 = load i64, ptr %t52 %t56 = load ptr, ptr %a23 store i64 0, ptr %a57 - br label %find.cond446 -find.cond446: + br label %find.cond503 +find.cond503: %t58 = load i64, ptr %a57 %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body447, label %find.end450 -find.body447: + br i1 %t59, label %find.body504, label %find.end507 +find.body504: %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i64 %t58 %t61 = load { ptr, i64, i64 }, ptr %t60 store { ptr, i64, i64 } %t61, ptr %a62 store { ptr, i64, i64 } %t53, ptr %a63 %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) %t65 = icmp ne i32 %t64, 0 - br i1 %t65, label %find.hit448, label %find.next449 -find.hit448: + br i1 %t65, label %find.hit505, label %find.next506 +find.hit505: store i64 %t58, ptr %a54 - br label %find.end450 -find.next449: + br label %find.end507 +find.next506: %t66 = add i64 %t58, 1 store i64 %t66, ptr %a57 - br label %find.cond446 -find.end450: + br label %find.cond503 +find.end507: %t67 = load i64, ptr %a54 %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then451, label %endif453 -then451: + br i1 %t68, label %then508, label %endif510 +then508: %t69 = load { ptr, i64, i64 }, ptr %a51 ret { ptr, i64, i64 } %t69 -endif453: - br label %endif439 -endif439: - store { ptr, i64, i64 } { ptr @.str.313, i64 22, i64 0 }, ptr %a70 +endif510: + br label %endif496 +endif496: + store { ptr, i64, i64 } { ptr @.str.333, i64 22, i64 0 }, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic454, label %ok455 -panic454: - call void @finch_panic(ptr @.str.314, i64 74, ptr @.str.315) + br i1 %t72, label %panic511, label %ok512 +panic511: + call void @finch_panic(ptr @.str.334, i64 74, ptr @.str.335) unreachable -ok455: +ok512: %t73 = getelementptr inbounds %S.lexer.Lexer, ptr %t71, i32 0, i32 0 %t74 = load { ptr, i64, i64 }, ptr %t73 store { ptr, i64, i64 } %t74, ptr %a75 %t77 = load ptr, ptr %a1 %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic456, label %ok457 -panic456: - call void @finch_panic(ptr @.str.317, i64 74, ptr @.str.318) + br i1 %t78, label %panic513, label %ok514 +panic513: + call void @finch_panic(ptr @.str.337, i64 74, ptr @.str.338) unreachable -ok457: +ok514: %t79 = getelementptr inbounds %S.lexer.Lexer, ptr %t77, i32 0, i32 2 %t80 = load i64, ptr %t79 %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic458, label %ok459 -panic458: - call void @finch_panic(ptr @.str.319, i64 74, ptr @.str.320) + br i1 %t82, label %panic515, label %ok516 +panic515: + call void @finch_panic(ptr @.str.339, i64 74, ptr @.str.340) unreachable -ok459: +ok516: %t83 = getelementptr inbounds %S.lexer.Lexer, ptr %t81, i32 0, i32 2 %t84 = load i64, ptr %t83 %t85 = add i64 %t84, 1 - call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.316, i64 74) + call void @finch_str_sub(ptr %a76, ptr %a75, i64 %t80, i64 %t85, ptr @.str.336, i64 74) %t86 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load { ptr, i64, i64 }, ptr %a70 @@ -9822,15 +11253,15 @@ ok459: store { ptr, i64, i64 } %t91, ptr %a92 %t93 = call i64 @finch_str_find(ptr %a89, ptr %a92) %t94 = icmp sge i64 %t93, 0 - br i1 %t94, label %then460, label %endif462 -then460: + br i1 %t94, label %then517, label %endif519 +then517: %t95 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t95, ptr %a96 call void @finch_str_copy(ptr %a97, ptr %a96) %t98 = load { ptr, i64, i64 }, ptr %a97 ret { ptr, i64, i64 } %t98 -endif462: - ret { ptr, i64, i64 } { ptr @.str.322, i64 0, i64 0 } +endif519: + ret { ptr, i64, i64 } { ptr @.str.342, i64 0, i64 0 } } define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { @@ -9845,82 +11276,82 @@ entry: store i8 %p1, ptr %a2 %t3 = load i8, ptr %a2 %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then463, label %endif465 -then463: + br i1 %t4, label %then520, label %endif522 +then520: ret i8 10 -endif465: +endif522: %t5 = load i8, ptr %a2 %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then466, label %endif468 -then466: + br i1 %t6, label %then523, label %endif525 +then523: ret i8 9 -endif468: +endif525: %t7 = load i8, ptr %a2 %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then469, label %endif471 -then469: + br i1 %t8, label %then526, label %endif528 +then526: ret i8 13 -endif471: +endif528: %t9 = load i8, ptr %a2 %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then472, label %endif474 -then472: + br i1 %t10, label %then529, label %endif531 +then529: %t11 = trunc i64 0 to i8 ret i8 %t11 -endif474: +endif531: %t12 = load i8, ptr %a2 %t13 = icmp eq i8 %t12, 92 - br label %logic.from475 -logic.from475: - br i1 %t13, label %logic.end477, label %logic.rhs476 -logic.rhs476: + br label %logic.from532 +logic.from532: + br i1 %t13, label %logic.end534, label %logic.rhs533 +logic.rhs533: %t14 = load i8, ptr %a2 %t15 = icmp eq i8 %t14, 34 - br label %logic.rend478 -logic.rend478: - br label %logic.end477 -logic.end477: - %t16 = phi i1 [ true, %logic.from475 ], [ %t15, %logic.rend478 ] - br label %logic.from479 -logic.from479: - br i1 %t16, label %logic.end481, label %logic.rhs480 -logic.rhs480: + br label %logic.rend535 +logic.rend535: + br label %logic.end534 +logic.end534: + %t16 = phi i1 [ true, %logic.from532 ], [ %t15, %logic.rend535 ] + br label %logic.from536 +logic.from536: + br i1 %t16, label %logic.end538, label %logic.rhs537 +logic.rhs537: %t17 = load i8, ptr %a2 %t18 = icmp eq i8 %t17, 39 - br label %logic.rend482 -logic.rend482: - br label %logic.end481 -logic.end481: - %t19 = phi i1 [ true, %logic.from479 ], [ %t18, %logic.rend482 ] - br i1 %t19, label %then483, label %endif485 -then483: + br label %logic.rend539 +logic.rend539: + br label %logic.end538 +logic.end538: + %t19 = phi i1 [ true, %logic.from536 ], [ %t18, %logic.rend539 ] + br i1 %t19, label %then540, label %endif542 +then540: %t20 = load i8, ptr %a2 ret i8 %t20 -endif485: +endif542: %t21 = load ptr, ptr %a1 %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic486, label %ok487 -panic486: - call void @finch_panic(ptr @.str.323, i64 97, ptr @.str.324) + br i1 %t23, label %panic543, label %ok544 +panic543: + call void @finch_panic(ptr @.str.343, i64 97, ptr @.str.344) unreachable -ok487: +ok544: %t24 = getelementptr inbounds %S.lexer.Lexer, ptr %t22, i32 0, i32 3 %t25 = load i64, ptr %t24 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic488, label %ok489 -panic488: - call void @finch_panic(ptr @.str.325, i64 97, ptr @.str.326) + br i1 %t27, label %panic545, label %ok546 +panic545: + call void @finch_panic(ptr @.str.345, i64 97, ptr @.str.346) unreachable -ok489: +ok546: %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 4 %t29 = load i64, ptr %t28 %t30 = sub i64 %t29, 1 %t31 = load i8, ptr %a2 call void @finch_str_from_char(ptr %a32, i8 signext %t31) %t33 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.327, i64 16, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.347, i64 16, i64 0 }, ptr %a35 store { ptr, i64, i64 } %t33, ptr %a36 call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 @@ -9952,20 +11383,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond796 -n.cond796: + br label %n.cond853 +n.cond853: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body797, label %n.end798 -n.body797: + br i1 %t7, label %n.body854, label %n.end855 +n.body854: %t8 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.lexer.Token, ptr %t2, i64 %t6 call void @finch.copy.S_lexer_Token(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond796 -n.end798: + br label %n.cond853 +n.end855: ret void } @@ -10044,217 +11475,217 @@ entry: store %S.lexer.Lexer %t16, ptr %a17 store ptr %a17, ptr %a18 store { ptr, i64, i64 } zeroinitializer, ptr %a19 - br label %while.cond490 -while.cond490: + br label %while.cond547 +while.cond547: %t20 = load ptr, ptr %a18 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic493, label %ok494 -panic493: - call void @finch_panic(ptr @.str.328, i64 105, ptr @.str.329) + br i1 %t21, label %panic550, label %ok551 +panic550: + call void @finch_panic(ptr @.str.348, i64 105, ptr @.str.349) unreachable -ok494: +ok551: %t22 = getelementptr inbounds %S.lexer.Lexer, ptr %t20, i32 0, i32 2 %t23 = load i64, ptr %t22 %t24 = load ptr, ptr %a18 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic495, label %ok496 -panic495: - call void @finch_panic(ptr @.str.330, i64 105, ptr @.str.331) + br i1 %t25, label %panic552, label %ok553 +panic552: + call void @finch_panic(ptr @.str.350, i64 105, ptr @.str.351) unreachable -ok496: +ok553: %t26 = getelementptr inbounds %S.lexer.Lexer, ptr %t24, i32 0, i32 0 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1 %t28 = load i64, ptr %t27 %t29 = icmp slt i64 %t23, %t28 - br i1 %t29, label %while.body491, label %while.end492 -while.body491: + br i1 %t29, label %while.body548, label %while.end549 +while.body548: %t30 = load ptr, ptr %a18 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic497, label %ok498 -panic497: - call void @finch_panic(ptr @.str.332, i64 106, ptr @.str.333) + br i1 %t31, label %panic554, label %ok555 +panic554: + call void @finch_panic(ptr @.str.352, i64 106, ptr @.str.353) unreachable -ok498: +ok555: %t32 = getelementptr inbounds %S.lexer.Lexer, ptr %t30, i32 0, i32 0 %t33 = load ptr, ptr %a18 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic499, label %ok500 -panic499: - call void @finch_panic(ptr @.str.334, i64 106, ptr @.str.335) + br i1 %t34, label %panic556, label %ok557 +panic556: + call void @finch_panic(ptr @.str.354, i64 106, ptr @.str.355) unreachable -ok500: +ok557: %t35 = getelementptr inbounds %S.lexer.Lexer, ptr %t33, i32 0, i32 2 %t36 = load i64, ptr %t35 %t37 = load { ptr, i64, i64 }, ptr %t32 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range501, label %inrange502 -range501: - call void @finch_panic_index(ptr @.str.336, i64 106, i64 %t36, i64 %t38) + br i1 %t39, label %range558, label %inrange559 +range558: + call void @finch_panic_index(ptr @.str.356, i64 106, i64 %t36, i64 %t38) unreachable -inrange502: +inrange559: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds i8, ptr %t40, i64 %t36 %t42 = load i8, ptr %t41 store i8 %t42, ptr %a43 %t44 = load i8, ptr %a43 %t45 = icmp eq i8 %t44, 32 - br label %logic.from503 -logic.from503: - br i1 %t45, label %logic.end505, label %logic.rhs504 -logic.rhs504: + br label %logic.from560 +logic.from560: + br i1 %t45, label %logic.end562, label %logic.rhs561 +logic.rhs561: %t46 = load i8, ptr %a43 %t47 = icmp eq i8 %t46, 9 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t48 = phi i1 [ true, %logic.from503 ], [ %t47, %logic.rend506 ] - br label %logic.from507 -logic.from507: - br i1 %t48, label %logic.end509, label %logic.rhs508 -logic.rhs508: + br label %logic.rend563 +logic.rend563: + br label %logic.end562 +logic.end562: + %t48 = phi i1 [ true, %logic.from560 ], [ %t47, %logic.rend563 ] + br label %logic.from564 +logic.from564: + br i1 %t48, label %logic.end566, label %logic.rhs565 +logic.rhs565: %t49 = load i8, ptr %a43 %t50 = icmp eq i8 %t49, 10 - br label %logic.rend510 -logic.rend510: - br label %logic.end509 -logic.end509: - %t51 = phi i1 [ true, %logic.from507 ], [ %t50, %logic.rend510 ] - br label %logic.from511 -logic.from511: - br i1 %t51, label %logic.end513, label %logic.rhs512 -logic.rhs512: + br label %logic.rend567 +logic.rend567: + br label %logic.end566 +logic.end566: + %t51 = phi i1 [ true, %logic.from564 ], [ %t50, %logic.rend567 ] + br label %logic.from568 +logic.from568: + br i1 %t51, label %logic.end570, label %logic.rhs569 +logic.rhs569: %t52 = load i8, ptr %a43 %t53 = icmp eq i8 %t52, 13 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t54 = phi i1 [ true, %logic.from511 ], [ %t53, %logic.rend514 ] - br i1 %t54, label %then515, label %endif517 -then515: + br label %logic.rend571 +logic.rend571: + br label %logic.end570 +logic.end570: + %t54 = phi i1 [ true, %logic.from568 ], [ %t53, %logic.rend571 ] + br i1 %t54, label %then572, label %endif574 +then572: %t55 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t55) - br label %while.cond490 -endif517: + br label %while.cond547 +endif574: %t56 = load i8, ptr %a43 %t57 = icmp eq i8 %t56, 47 - br label %logic.from518 -logic.from518: - br i1 %t57, label %logic.rhs519, label %logic.end520 -logic.rhs519: + br label %logic.from575 +logic.from575: + br i1 %t57, label %logic.rhs576, label %logic.end577 +logic.rhs576: %t58 = load ptr, ptr %a18 %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) %t60 = icmp eq i8 %t59, 47 - br label %logic.rend521 -logic.rend521: - br label %logic.end520 -logic.end520: - %t61 = phi i1 [ false, %logic.from518 ], [ %t60, %logic.rend521 ] - br i1 %t61, label %then522, label %endif524 -then522: - br label %while.cond525 -while.cond525: + br label %logic.rend578 +logic.rend578: + br label %logic.end577 +logic.end577: + %t61 = phi i1 [ false, %logic.from575 ], [ %t60, %logic.rend578 ] + br i1 %t61, label %then579, label %endif581 +then579: + br label %while.cond582 +while.cond582: %t62 = load ptr, ptr %a18 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic528, label %ok529 -panic528: - call void @finch_panic(ptr @.str.337, i64 112, ptr @.str.338) + br i1 %t63, label %panic585, label %ok586 +panic585: + call void @finch_panic(ptr @.str.357, i64 112, ptr @.str.358) unreachable -ok529: +ok586: %t64 = getelementptr inbounds %S.lexer.Lexer, ptr %t62, i32 0, i32 2 %t65 = load i64, ptr %t64 %t66 = load ptr, ptr %a18 %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.339, i64 112, ptr @.str.340) + br i1 %t67, label %panic587, label %ok588 +panic587: + call void @finch_panic(ptr @.str.359, i64 112, ptr @.str.360) unreachable -ok531: +ok588: %t68 = getelementptr inbounds %S.lexer.Lexer, ptr %t66, i32 0, i32 0 %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 %t70 = load i64, ptr %t69 %t71 = icmp slt i64 %t65, %t70 - br label %logic.from532 -logic.from532: - br i1 %t71, label %logic.rhs533, label %logic.end534 -logic.rhs533: + br label %logic.from589 +logic.from589: + br i1 %t71, label %logic.rhs590, label %logic.end591 +logic.rhs590: %t72 = load ptr, ptr %a18 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic535, label %ok536 -panic535: - call void @finch_panic(ptr @.str.341, i64 112, ptr @.str.342) + br i1 %t73, label %panic592, label %ok593 +panic592: + call void @finch_panic(ptr @.str.361, i64 112, ptr @.str.362) unreachable -ok536: +ok593: %t74 = getelementptr inbounds %S.lexer.Lexer, ptr %t72, i32 0, i32 0 %t75 = load ptr, ptr %a18 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic537, label %ok538 -panic537: - call void @finch_panic(ptr @.str.343, i64 112, ptr @.str.344) + br i1 %t76, label %panic594, label %ok595 +panic594: + call void @finch_panic(ptr @.str.363, i64 112, ptr @.str.364) unreachable -ok538: +ok595: %t77 = getelementptr inbounds %S.lexer.Lexer, ptr %t75, i32 0, i32 2 %t78 = load i64, ptr %t77 %t79 = load { ptr, i64, i64 }, ptr %t74 %t80 = extractvalue { ptr, i64, i64 } %t79, 1 %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range539, label %inrange540 -range539: - call void @finch_panic_index(ptr @.str.345, i64 112, i64 %t78, i64 %t80) + br i1 %t81, label %range596, label %inrange597 +range596: + call void @finch_panic_index(ptr @.str.365, i64 112, i64 %t78, i64 %t80) unreachable -inrange540: +inrange597: %t82 = extractvalue { ptr, i64, i64 } %t79, 0 %t83 = getelementptr inbounds i8, ptr %t82, i64 %t78 %t84 = load i8, ptr %t83 %t85 = icmp ne i8 %t84, 10 - br label %logic.rend541 -logic.rend541: - br label %logic.end534 -logic.end534: - %t86 = phi i1 [ false, %logic.from532 ], [ %t85, %logic.rend541 ] - br i1 %t86, label %while.body526, label %while.end527 -while.body526: + br label %logic.rend598 +logic.rend598: + br label %logic.end591 +logic.end591: + %t86 = phi i1 [ false, %logic.from589 ], [ %t85, %logic.rend598 ] + br i1 %t86, label %while.body583, label %while.end584 +while.body583: %t87 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t87) - br label %while.cond525 -while.end527: - br label %while.cond490 -endif524: + br label %while.cond582 +while.end584: + br label %while.cond547 +endif581: %t88 = load i8, ptr %a43 %t89 = icmp eq i8 %t88, 47 - br label %logic.from542 -logic.from542: - br i1 %t89, label %logic.rhs543, label %logic.end544 -logic.rhs543: + br label %logic.from599 +logic.from599: + br i1 %t89, label %logic.rhs600, label %logic.end601 +logic.rhs600: %t90 = load ptr, ptr %a18 %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) %t92 = icmp eq i8 %t91, 42 - br label %logic.rend545 -logic.rend545: - br label %logic.end544 -logic.end544: - %t93 = phi i1 [ false, %logic.from542 ], [ %t92, %logic.rend545 ] - br i1 %t93, label %then546, label %endif548 -then546: + br label %logic.rend602 +logic.rend602: + br label %logic.end601 +logic.end601: + %t93 = phi i1 [ false, %logic.from599 ], [ %t92, %logic.rend602 ] + br i1 %t93, label %then603, label %endif605 +then603: %t94 = load ptr, ptr %a18 %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.346, i64 118, ptr @.str.347) + br i1 %t95, label %panic606, label %ok607 +panic606: + call void @finch_panic(ptr @.str.366, i64 118, ptr @.str.367) unreachable -ok550: +ok607: %t96 = getelementptr inbounds %S.lexer.Lexer, ptr %t94, i32 0, i32 3 %t97 = load i64, ptr %t96 store i64 %t97, ptr %a98 %t99 = load ptr, ptr %a18 %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic551, label %ok552 -panic551: - call void @finch_panic(ptr @.str.348, i64 119, ptr @.str.349) + br i1 %t100, label %panic608, label %ok609 +panic608: + call void @finch_panic(ptr @.str.368, i64 119, ptr @.str.369) unreachable -ok552: +ok609: %t101 = getelementptr inbounds %S.lexer.Lexer, ptr %t99, i32 0, i32 4 %t102 = load i64, ptr %t101 store i64 %t102, ptr %a103 @@ -10262,310 +11693,310 @@ ok552: call void @finch.lexer.advance(ptr %t104) %t105 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t105) - br label %while.cond553 -while.cond553: + br label %while.cond610 +while.cond610: %t106 = load ptr, ptr %a18 %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.350, i64 122, ptr @.str.351) + br i1 %t107, label %panic613, label %ok614 +panic613: + call void @finch_panic(ptr @.str.370, i64 122, ptr @.str.371) unreachable -ok557: +ok614: %t108 = getelementptr inbounds %S.lexer.Lexer, ptr %t106, i32 0, i32 2 %t109 = load i64, ptr %t108 %t110 = load ptr, ptr %a18 %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.352, i64 122, ptr @.str.353) + br i1 %t111, label %panic615, label %ok616 +panic615: + call void @finch_panic(ptr @.str.372, i64 122, ptr @.str.373) unreachable -ok559: +ok616: %t112 = getelementptr inbounds %S.lexer.Lexer, ptr %t110, i32 0, i32 0 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = icmp slt i64 %t109, %t114 - br label %logic.from560 -logic.from560: - br i1 %t115, label %logic.rhs561, label %logic.end562 -logic.rhs561: + br label %logic.from617 +logic.from617: + br i1 %t115, label %logic.rhs618, label %logic.end619 +logic.rhs618: %t116 = load ptr, ptr %a18 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic563, label %ok564 -panic563: - call void @finch_panic(ptr @.str.354, i64 122, ptr @.str.355) + br i1 %t117, label %panic620, label %ok621 +panic620: + call void @finch_panic(ptr @.str.374, i64 122, ptr @.str.375) unreachable -ok564: +ok621: %t118 = getelementptr inbounds %S.lexer.Lexer, ptr %t116, i32 0, i32 0 %t119 = load ptr, ptr %a18 %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.356, i64 122, ptr @.str.357) + br i1 %t120, label %panic622, label %ok623 +panic622: + call void @finch_panic(ptr @.str.376, i64 122, ptr @.str.377) unreachable -ok566: +ok623: %t121 = getelementptr inbounds %S.lexer.Lexer, ptr %t119, i32 0, i32 2 %t122 = load i64, ptr %t121 %t123 = load { ptr, i64, i64 }, ptr %t118 %t124 = extractvalue { ptr, i64, i64 } %t123, 1 %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range567, label %inrange568 -range567: - call void @finch_panic_index(ptr @.str.358, i64 122, i64 %t122, i64 %t124) + br i1 %t125, label %range624, label %inrange625 +range624: + call void @finch_panic_index(ptr @.str.378, i64 122, i64 %t122, i64 %t124) unreachable -inrange568: +inrange625: %t126 = extractvalue { ptr, i64, i64 } %t123, 0 %t127 = getelementptr inbounds i8, ptr %t126, i64 %t122 %t128 = load i8, ptr %t127 %t129 = icmp eq i8 %t128, 42 - br label %logic.from569 -logic.from569: - br i1 %t129, label %logic.rhs570, label %logic.end571 -logic.rhs570: + br label %logic.from626 +logic.from626: + br i1 %t129, label %logic.rhs627, label %logic.end628 +logic.rhs627: %t130 = load ptr, ptr %a18 %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) %t132 = icmp eq i8 %t131, 47 - br label %logic.rend572 -logic.rend572: - br label %logic.end571 -logic.end571: - %t133 = phi i1 [ false, %logic.from569 ], [ %t132, %logic.rend572 ] + br label %logic.rend629 +logic.rend629: + br label %logic.end628 +logic.end628: + %t133 = phi i1 [ false, %logic.from626 ], [ %t132, %logic.rend629 ] %t134 = xor i1 %t133, true - br label %logic.rend573 -logic.rend573: - br label %logic.end562 -logic.end562: - %t135 = phi i1 [ false, %logic.from560 ], [ %t134, %logic.rend573 ] - br i1 %t135, label %while.body554, label %while.end555 -while.body554: + br label %logic.rend630 +logic.rend630: + br label %logic.end619 +logic.end619: + %t135 = phi i1 [ false, %logic.from617 ], [ %t134, %logic.rend630 ] + br i1 %t135, label %while.body611, label %while.end612 +while.body611: %t136 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t136) - br label %while.cond553 -while.end555: + br label %while.cond610 +while.end612: %t137 = load ptr, ptr %a18 %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic574, label %ok575 -panic574: - call void @finch_panic(ptr @.str.359, i64 125, ptr @.str.360) + br i1 %t138, label %panic631, label %ok632 +panic631: + call void @finch_panic(ptr @.str.379, i64 125, ptr @.str.380) unreachable -ok575: +ok632: %t139 = getelementptr inbounds %S.lexer.Lexer, ptr %t137, i32 0, i32 2 %t140 = load i64, ptr %t139 %t141 = load ptr, ptr %a18 %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic576, label %ok577 -panic576: - call void @finch_panic(ptr @.str.361, i64 125, ptr @.str.362) + br i1 %t142, label %panic633, label %ok634 +panic633: + call void @finch_panic(ptr @.str.381, i64 125, ptr @.str.382) unreachable -ok577: +ok634: %t143 = getelementptr inbounds %S.lexer.Lexer, ptr %t141, i32 0, i32 0 %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 %t145 = load i64, ptr %t144 %t146 = icmp sge i64 %t140, %t145 - br i1 %t146, label %then578, label %endif580 -then578: + br i1 %t146, label %then635, label %endif637 +then635: %t147 = load ptr, ptr %a18 %t148 = load i64, ptr %a98 %t149 = load i64, ptr %a103 - call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.363, i64 36, i64 0 }) - br label %endif580 -endif580: + call void @finch.lexer.fail(ptr %t147, i64 %t148, i64 %t149, { ptr, i64, i64 } { ptr @.str.383, i64 36, i64 0 }) + br label %endif637 +endif637: %t150 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t150) %t151 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t151) - br label %while.cond490 -endif548: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.364, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.365, i64 0, i64 0 }, 1 + br label %while.cond547 +endif605: + %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.384, i64 0, i64 0 }, 0 + %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.385, i64 0, i64 0 }, 1 %t154 = load ptr, ptr %a18 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.366, i64 133, ptr @.str.367) + br i1 %t155, label %panic638, label %ok639 +panic638: + call void @finch_panic(ptr @.str.386, i64 133, ptr @.str.387) unreachable -ok582: +ok639: %t156 = getelementptr inbounds %S.lexer.Lexer, ptr %t154, i32 0, i32 3 %t157 = load i64, ptr %t156 %t158 = insertvalue %S.lexer.Token %t153, i64 %t157, 2 %t159 = load ptr, ptr %a18 %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.368, i64 133, ptr @.str.369) + br i1 %t160, label %panic640, label %ok641 +panic640: + call void @finch_panic(ptr @.str.388, i64 133, ptr @.str.389) unreachable -ok584: +ok641: %t161 = getelementptr inbounds %S.lexer.Lexer, ptr %t159, i32 0, i32 4 %t162 = load i64, ptr %t161 %t163 = insertvalue %S.lexer.Token %t158, i64 %t162, 3 %t164 = load ptr, ptr %a18 %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic585, label %ok586 -panic585: - call void @finch_panic(ptr @.str.370, i64 133, ptr @.str.371) + br i1 %t165, label %panic642, label %ok643 +panic642: + call void @finch_panic(ptr @.str.390, i64 133, ptr @.str.391) unreachable -ok586: +ok643: %t166 = getelementptr inbounds %S.lexer.Lexer, ptr %t164, i32 0, i32 5 %t167 = load i1, ptr %t166 %t168 = insertvalue %S.lexer.Token %t163, i1 %t167, 4 store %S.lexer.Token %t168, ptr %a169 %t170 = load ptr, ptr %a18 %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic587, label %ok588 -panic587: - call void @finch_panic(ptr @.str.372, i64 134, ptr @.str.373) + br i1 %t171, label %panic644, label %ok645 +panic644: + call void @finch_panic(ptr @.str.392, i64 134, ptr @.str.393) unreachable -ok588: +ok645: %t172 = getelementptr inbounds %S.lexer.Lexer, ptr %t170, i32 0, i32 5 store i1 false, ptr %t172 %t173 = load ptr, ptr %a18 %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic589, label %ok590 -panic589: - call void @finch_panic(ptr @.str.374, i64 135, ptr @.str.375) + br i1 %t174, label %panic646, label %ok647 +panic646: + call void @finch_panic(ptr @.str.394, i64 135, ptr @.str.395) unreachable -ok590: +ok647: %t175 = getelementptr inbounds %S.lexer.Lexer, ptr %t173, i32 0, i32 2 %t176 = load i64, ptr %t175 store i64 %t176, ptr %a177 %t178 = load i8, ptr %a43 %t179 = call i1 @finch.lexer.isAlpha(i8 %t178) - br i1 %t179, label %then591, label %else592 -then591: - br label %while.cond594 -while.cond594: + br i1 %t179, label %then648, label %else649 +then648: + br label %while.cond651 +while.cond651: %t180 = load ptr, ptr %a18 %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic597, label %ok598 -panic597: - call void @finch_panic(ptr @.str.376, i64 137, ptr @.str.377) + br i1 %t181, label %panic654, label %ok655 +panic654: + call void @finch_panic(ptr @.str.396, i64 137, ptr @.str.397) unreachable -ok598: +ok655: %t182 = getelementptr inbounds %S.lexer.Lexer, ptr %t180, i32 0, i32 2 %t183 = load i64, ptr %t182 %t184 = load ptr, ptr %a18 %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic599, label %ok600 -panic599: - call void @finch_panic(ptr @.str.378, i64 137, ptr @.str.379) + br i1 %t185, label %panic656, label %ok657 +panic656: + call void @finch_panic(ptr @.str.398, i64 137, ptr @.str.399) unreachable -ok600: +ok657: %t186 = getelementptr inbounds %S.lexer.Lexer, ptr %t184, i32 0, i32 0 %t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1 %t188 = load i64, ptr %t187 %t189 = icmp slt i64 %t183, %t188 - br label %logic.from601 -logic.from601: - br i1 %t189, label %logic.rhs602, label %logic.end603 -logic.rhs602: + br label %logic.from658 +logic.from658: + br i1 %t189, label %logic.rhs659, label %logic.end660 +logic.rhs659: %t190 = load ptr, ptr %a18 %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic604, label %ok605 -panic604: - call void @finch_panic(ptr @.str.380, i64 137, ptr @.str.381) + br i1 %t191, label %panic661, label %ok662 +panic661: + call void @finch_panic(ptr @.str.400, i64 137, ptr @.str.401) unreachable -ok605: +ok662: %t192 = getelementptr inbounds %S.lexer.Lexer, ptr %t190, i32 0, i32 0 %t193 = load ptr, ptr %a18 %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic606, label %ok607 -panic606: - call void @finch_panic(ptr @.str.382, i64 137, ptr @.str.383) + br i1 %t194, label %panic663, label %ok664 +panic663: + call void @finch_panic(ptr @.str.402, i64 137, ptr @.str.403) unreachable -ok607: +ok664: %t195 = getelementptr inbounds %S.lexer.Lexer, ptr %t193, i32 0, i32 2 %t196 = load i64, ptr %t195 %t197 = load { ptr, i64, i64 }, ptr %t192 %t198 = extractvalue { ptr, i64, i64 } %t197, 1 %t199 = icmp uge i64 %t196, %t198 - br i1 %t199, label %range608, label %inrange609 -range608: - call void @finch_panic_index(ptr @.str.384, i64 137, i64 %t196, i64 %t198) + br i1 %t199, label %range665, label %inrange666 +range665: + call void @finch_panic_index(ptr @.str.404, i64 137, i64 %t196, i64 %t198) unreachable -inrange609: +inrange666: %t200 = extractvalue { ptr, i64, i64 } %t197, 0 %t201 = getelementptr inbounds i8, ptr %t200, i64 %t196 %t202 = load i8, ptr %t201 %t203 = call i1 @finch.lexer.isAlpha(i8 %t202) - br label %logic.from610 -logic.from610: - br i1 %t203, label %logic.end612, label %logic.rhs611 -logic.rhs611: + br label %logic.from667 +logic.from667: + br i1 %t203, label %logic.end669, label %logic.rhs668 +logic.rhs668: %t204 = load ptr, ptr %a18 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.385, i64 137, ptr @.str.386) + br i1 %t205, label %panic670, label %ok671 +panic670: + call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) unreachable -ok614: +ok671: %t206 = getelementptr inbounds %S.lexer.Lexer, ptr %t204, i32 0, i32 0 %t207 = load ptr, ptr %a18 %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic615, label %ok616 -panic615: - call void @finch_panic(ptr @.str.387, i64 137, ptr @.str.388) + br i1 %t208, label %panic672, label %ok673 +panic672: + call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) unreachable -ok616: +ok673: %t209 = getelementptr inbounds %S.lexer.Lexer, ptr %t207, i32 0, i32 2 %t210 = load i64, ptr %t209 %t211 = load { ptr, i64, i64 }, ptr %t206 %t212 = extractvalue { ptr, i64, i64 } %t211, 1 %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range617, label %inrange618 -range617: - call void @finch_panic_index(ptr @.str.389, i64 137, i64 %t210, i64 %t212) + br i1 %t213, label %range674, label %inrange675 +range674: + call void @finch_panic_index(ptr @.str.409, i64 137, i64 %t210, i64 %t212) unreachable -inrange618: +inrange675: %t214 = extractvalue { ptr, i64, i64 } %t211, 0 %t215 = getelementptr inbounds i8, ptr %t214, i64 %t210 %t216 = load i8, ptr %t215 %t217 = call i1 @finch.lexer.isDigit(i8 %t216) - br label %logic.rend619 -logic.rend619: - br label %logic.end612 -logic.end612: - %t218 = phi i1 [ true, %logic.from610 ], [ %t217, %logic.rend619 ] - br label %logic.rend620 -logic.rend620: - br label %logic.end603 -logic.end603: - %t219 = phi i1 [ false, %logic.from601 ], [ %t218, %logic.rend620 ] - br i1 %t219, label %while.body595, label %while.end596 -while.body595: + br label %logic.rend676 +logic.rend676: + br label %logic.end669 +logic.end669: + %t218 = phi i1 [ true, %logic.from667 ], [ %t217, %logic.rend676 ] + br label %logic.rend677 +logic.rend677: + br label %logic.end660 +logic.end660: + %t219 = phi i1 [ false, %logic.from658 ], [ %t218, %logic.rend677 ] + br i1 %t219, label %while.body652, label %while.end653 +while.body652: %t220 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t220) - br label %while.cond594 -while.end596: + br label %while.cond651 +while.end653: %t221 = load ptr, ptr %a18 %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic621, label %ok622 -panic621: - call void @finch_panic(ptr @.str.390, i64 140, ptr @.str.391) + br i1 %t222, label %panic678, label %ok679 +panic678: + call void @finch_panic(ptr @.str.410, i64 140, ptr @.str.411) unreachable -ok622: +ok679: %t223 = getelementptr inbounds %S.lexer.Lexer, ptr %t221, i32 0, i32 0 %t224 = load { ptr, i64, i64 }, ptr %t223 store { ptr, i64, i64 } %t224, ptr %a225 %t227 = load i64, ptr %a177 %t228 = load ptr, ptr %a18 %t229 = icmp eq ptr %t228, null - br i1 %t229, label %panic623, label %ok624 -panic623: - call void @finch_panic(ptr @.str.393, i64 140, ptr @.str.394) + br i1 %t229, label %panic680, label %ok681 +panic680: + call void @finch_panic(ptr @.str.413, i64 140, ptr @.str.414) unreachable -ok624: +ok681: %t230 = getelementptr inbounds %S.lexer.Lexer, ptr %t228, i32 0, i32 2 %t231 = load i64, ptr %t230 - call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.392, i64 140) + call void @finch_str_sub(ptr %a226, ptr %a225, i64 %t227, i64 %t231, ptr @.str.412, i64 140) %t232 = load { ptr, i64, i64 }, ptr %a226 %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 store { ptr, i64, i64 } %t232, ptr %t233 %t234 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.395, i64 5, i64 0 }, ptr %t234 + store { ptr, i64, i64 } { ptr @.str.415, i64 5, i64 0 }, ptr %t234 %t235 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 %t236 = load { ptr, i64, i64 }, ptr %t235 %t237 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t236) - br i1 %t237, label %then625, label %endif627 -then625: + br i1 %t237, label %then682, label %endif684 +then682: %t238 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 %t239 = load { ptr, i64, i64 }, ptr %t238 %t240 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 @@ -10573,494 +12004,494 @@ then625: call void @finch_str_copy(ptr %a242, ptr %a241) %t243 = load { ptr, i64, i64 }, ptr %a242 store { ptr, i64, i64 } %t243, ptr %t240 - br label %endif627 -endif627: - br label %endif593 -else592: + br label %endif684 +endif684: + br label %endif650 +else649: %t244 = load i8, ptr %a43 %t245 = call i1 @finch.lexer.isDigit(i8 %t244) - br i1 %t245, label %then628, label %else629 -then628: + br i1 %t245, label %then685, label %else686 +then685: %t246 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.396, i64 3, i64 0 }, ptr %t246 + store { ptr, i64, i64 } { ptr @.str.416, i64 3, i64 0 }, ptr %t246 %t247 = load i8, ptr %a43 %t248 = icmp eq i8 %t247, 48 - br label %logic.from631 -logic.from631: - br i1 %t248, label %logic.rhs632, label %logic.end633 -logic.rhs632: + br label %logic.from688 +logic.from688: + br i1 %t248, label %logic.rhs689, label %logic.end690 +logic.rhs689: %t249 = load ptr, ptr %a18 %t250 = call i8 @finch.lexer.peek(ptr %t249, i64 1) %t251 = icmp eq i8 %t250, 120 - br label %logic.from634 -logic.from634: - br i1 %t251, label %logic.end636, label %logic.rhs635 -logic.rhs635: + br label %logic.from691 +logic.from691: + br i1 %t251, label %logic.end693, label %logic.rhs692 +logic.rhs692: %t252 = load ptr, ptr %a18 %t253 = call i8 @finch.lexer.peek(ptr %t252, i64 1) %t254 = icmp eq i8 %t253, 88 - br label %logic.rend637 -logic.rend637: - br label %logic.end636 -logic.end636: - %t255 = phi i1 [ true, %logic.from634 ], [ %t254, %logic.rend637 ] - br label %logic.rend638 -logic.rend638: - br label %logic.end633 -logic.end633: - %t256 = phi i1 [ false, %logic.from631 ], [ %t255, %logic.rend638 ] - br i1 %t256, label %then639, label %else640 -then639: + br label %logic.rend694 +logic.rend694: + br label %logic.end693 +logic.end693: + %t255 = phi i1 [ true, %logic.from691 ], [ %t254, %logic.rend694 ] + br label %logic.rend695 +logic.rend695: + br label %logic.end690 +logic.end690: + %t256 = phi i1 [ false, %logic.from688 ], [ %t255, %logic.rend695 ] + br i1 %t256, label %then696, label %else697 +then696: %t257 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t257) %t258 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t258) - br label %while.cond642 -while.cond642: + br label %while.cond699 +while.cond699: %t259 = load ptr, ptr %a18 %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic645, label %ok646 -panic645: - call void @finch_panic(ptr @.str.397, i64 150, ptr @.str.398) + br i1 %t260, label %panic702, label %ok703 +panic702: + call void @finch_panic(ptr @.str.417, i64 150, ptr @.str.418) unreachable -ok646: +ok703: %t261 = getelementptr inbounds %S.lexer.Lexer, ptr %t259, i32 0, i32 2 %t262 = load i64, ptr %t261 %t263 = load ptr, ptr %a18 %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic647, label %ok648 -panic647: - call void @finch_panic(ptr @.str.399, i64 150, ptr @.str.400) + br i1 %t264, label %panic704, label %ok705 +panic704: + call void @finch_panic(ptr @.str.419, i64 150, ptr @.str.420) unreachable -ok648: +ok705: %t265 = getelementptr inbounds %S.lexer.Lexer, ptr %t263, i32 0, i32 0 %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 %t267 = load i64, ptr %t266 %t268 = icmp slt i64 %t262, %t267 - br label %logic.from649 -logic.from649: - br i1 %t268, label %logic.rhs650, label %logic.end651 -logic.rhs650: + br label %logic.from706 +logic.from706: + br i1 %t268, label %logic.rhs707, label %logic.end708 +logic.rhs707: %t269 = load ptr, ptr %a18 %t270 = icmp eq ptr %t269, null - br i1 %t270, label %panic652, label %ok653 -panic652: - call void @finch_panic(ptr @.str.401, i64 150, ptr @.str.402) + br i1 %t270, label %panic709, label %ok710 +panic709: + call void @finch_panic(ptr @.str.421, i64 150, ptr @.str.422) unreachable -ok653: +ok710: %t271 = getelementptr inbounds %S.lexer.Lexer, ptr %t269, i32 0, i32 0 %t272 = load ptr, ptr %a18 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic654, label %ok655 -panic654: - call void @finch_panic(ptr @.str.403, i64 150, ptr @.str.404) + br i1 %t273, label %panic711, label %ok712 +panic711: + call void @finch_panic(ptr @.str.423, i64 150, ptr @.str.424) unreachable -ok655: +ok712: %t274 = getelementptr inbounds %S.lexer.Lexer, ptr %t272, i32 0, i32 2 %t275 = load i64, ptr %t274 %t276 = load { ptr, i64, i64 }, ptr %t271 %t277 = extractvalue { ptr, i64, i64 } %t276, 1 %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range656, label %inrange657 -range656: - call void @finch_panic_index(ptr @.str.405, i64 150, i64 %t275, i64 %t277) + br i1 %t278, label %range713, label %inrange714 +range713: + call void @finch_panic_index(ptr @.str.425, i64 150, i64 %t275, i64 %t277) unreachable -inrange657: +inrange714: %t279 = extractvalue { ptr, i64, i64 } %t276, 0 %t280 = getelementptr inbounds i8, ptr %t279, i64 %t275 %t281 = load i8, ptr %t280 %t282 = call i1 @finch.lexer.isHex(i8 %t281) - br label %logic.from658 -logic.from658: - br i1 %t282, label %logic.end660, label %logic.rhs659 -logic.rhs659: + br label %logic.from715 +logic.from715: + br i1 %t282, label %logic.end717, label %logic.rhs716 +logic.rhs716: %t283 = load ptr, ptr %a18 %t284 = icmp eq ptr %t283, null - br i1 %t284, label %panic661, label %ok662 -panic661: - call void @finch_panic(ptr @.str.406, i64 150, ptr @.str.407) + br i1 %t284, label %panic718, label %ok719 +panic718: + call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) unreachable -ok662: +ok719: %t285 = getelementptr inbounds %S.lexer.Lexer, ptr %t283, i32 0, i32 0 %t286 = load ptr, ptr %a18 %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic663, label %ok664 -panic663: - call void @finch_panic(ptr @.str.408, i64 150, ptr @.str.409) + br i1 %t287, label %panic720, label %ok721 +panic720: + call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) unreachable -ok664: +ok721: %t288 = getelementptr inbounds %S.lexer.Lexer, ptr %t286, i32 0, i32 2 %t289 = load i64, ptr %t288 %t290 = load { ptr, i64, i64 }, ptr %t285 %t291 = extractvalue { ptr, i64, i64 } %t290, 1 %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range665, label %inrange666 -range665: - call void @finch_panic_index(ptr @.str.410, i64 150, i64 %t289, i64 %t291) + br i1 %t292, label %range722, label %inrange723 +range722: + call void @finch_panic_index(ptr @.str.430, i64 150, i64 %t289, i64 %t291) unreachable -inrange666: +inrange723: %t293 = extractvalue { ptr, i64, i64 } %t290, 0 %t294 = getelementptr inbounds i8, ptr %t293, i64 %t289 %t295 = load i8, ptr %t294 %t296 = icmp eq i8 %t295, 95 - br label %logic.rend667 -logic.rend667: - br label %logic.end660 -logic.end660: - %t297 = phi i1 [ true, %logic.from658 ], [ %t296, %logic.rend667 ] - br label %logic.rend668 -logic.rend668: - br label %logic.end651 -logic.end651: - %t298 = phi i1 [ false, %logic.from649 ], [ %t297, %logic.rend668 ] - br i1 %t298, label %while.body643, label %while.end644 -while.body643: + br label %logic.rend724 +logic.rend724: + br label %logic.end717 +logic.end717: + %t297 = phi i1 [ true, %logic.from715 ], [ %t296, %logic.rend724 ] + br label %logic.rend725 +logic.rend725: + br label %logic.end708 +logic.end708: + %t298 = phi i1 [ false, %logic.from706 ], [ %t297, %logic.rend725 ] + br i1 %t298, label %while.body700, label %while.end701 +while.body700: %t299 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t299) - br label %while.cond642 -while.end644: - br label %endif641 -else640: - br label %while.cond669 -while.cond669: + br label %while.cond699 +while.end701: + br label %endif698 +else697: + br label %while.cond726 +while.cond726: %t300 = load ptr, ptr %a18 %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic672, label %ok673 -panic672: - call void @finch_panic(ptr @.str.411, i64 154, ptr @.str.412) + br i1 %t301, label %panic729, label %ok730 +panic729: + call void @finch_panic(ptr @.str.431, i64 154, ptr @.str.432) unreachable -ok673: +ok730: %t302 = getelementptr inbounds %S.lexer.Lexer, ptr %t300, i32 0, i32 2 %t303 = load i64, ptr %t302 %t304 = load ptr, ptr %a18 %t305 = icmp eq ptr %t304, null - br i1 %t305, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.413, i64 154, ptr @.str.414) + br i1 %t305, label %panic731, label %ok732 +panic731: + call void @finch_panic(ptr @.str.433, i64 154, ptr @.str.434) unreachable -ok675: +ok732: %t306 = getelementptr inbounds %S.lexer.Lexer, ptr %t304, i32 0, i32 0 %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i32 0, i32 1 %t308 = load i64, ptr %t307 %t309 = icmp slt i64 %t303, %t308 - br label %logic.from676 -logic.from676: - br i1 %t309, label %logic.rhs677, label %logic.end678 -logic.rhs677: + br label %logic.from733 +logic.from733: + br i1 %t309, label %logic.rhs734, label %logic.end735 +logic.rhs734: %t310 = load ptr, ptr %a18 %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic679, label %ok680 -panic679: - call void @finch_panic(ptr @.str.415, i64 154, ptr @.str.416) + br i1 %t311, label %panic736, label %ok737 +panic736: + call void @finch_panic(ptr @.str.435, i64 154, ptr @.str.436) unreachable -ok680: +ok737: %t312 = getelementptr inbounds %S.lexer.Lexer, ptr %t310, i32 0, i32 0 %t313 = load ptr, ptr %a18 %t314 = icmp eq ptr %t313, null - br i1 %t314, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.417, i64 154, ptr @.str.418) + br i1 %t314, label %panic738, label %ok739 +panic738: + call void @finch_panic(ptr @.str.437, i64 154, ptr @.str.438) unreachable -ok682: +ok739: %t315 = getelementptr inbounds %S.lexer.Lexer, ptr %t313, i32 0, i32 2 %t316 = load i64, ptr %t315 %t317 = load { ptr, i64, i64 }, ptr %t312 %t318 = extractvalue { ptr, i64, i64 } %t317, 1 %t319 = icmp uge i64 %t316, %t318 - br i1 %t319, label %range683, label %inrange684 -range683: - call void @finch_panic_index(ptr @.str.419, i64 154, i64 %t316, i64 %t318) + br i1 %t319, label %range740, label %inrange741 +range740: + call void @finch_panic_index(ptr @.str.439, i64 154, i64 %t316, i64 %t318) unreachable -inrange684: +inrange741: %t320 = extractvalue { ptr, i64, i64 } %t317, 0 %t321 = getelementptr inbounds i8, ptr %t320, i64 %t316 %t322 = load i8, ptr %t321 %t323 = call i1 @finch.lexer.isDigit(i8 %t322) - br label %logic.from685 -logic.from685: - br i1 %t323, label %logic.end687, label %logic.rhs686 -logic.rhs686: + br label %logic.from742 +logic.from742: + br i1 %t323, label %logic.end744, label %logic.rhs743 +logic.rhs743: %t324 = load ptr, ptr %a18 %t325 = icmp eq ptr %t324, null - br i1 %t325, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.420, i64 154, ptr @.str.421) + br i1 %t325, label %panic745, label %ok746 +panic745: + call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) unreachable -ok689: +ok746: %t326 = getelementptr inbounds %S.lexer.Lexer, ptr %t324, i32 0, i32 0 %t327 = load ptr, ptr %a18 %t328 = icmp eq ptr %t327, null - br i1 %t328, label %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.422, i64 154, ptr @.str.423) + br i1 %t328, label %panic747, label %ok748 +panic747: + call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) unreachable -ok691: +ok748: %t329 = getelementptr inbounds %S.lexer.Lexer, ptr %t327, i32 0, i32 2 %t330 = load i64, ptr %t329 %t331 = load { ptr, i64, i64 }, ptr %t326 %t332 = extractvalue { ptr, i64, i64 } %t331, 1 %t333 = icmp uge i64 %t330, %t332 - br i1 %t333, label %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.424, i64 154, i64 %t330, i64 %t332) + br i1 %t333, label %range749, label %inrange750 +range749: + call void @finch_panic_index(ptr @.str.444, i64 154, i64 %t330, i64 %t332) unreachable -inrange693: +inrange750: %t334 = extractvalue { ptr, i64, i64 } %t331, 0 %t335 = getelementptr inbounds i8, ptr %t334, i64 %t330 %t336 = load i8, ptr %t335 %t337 = icmp eq i8 %t336, 95 - br label %logic.rend694 -logic.rend694: - br label %logic.end687 -logic.end687: - %t338 = phi i1 [ true, %logic.from685 ], [ %t337, %logic.rend694 ] - br label %logic.rend695 -logic.rend695: - br label %logic.end678 -logic.end678: - %t339 = phi i1 [ false, %logic.from676 ], [ %t338, %logic.rend695 ] - br i1 %t339, label %while.body670, label %while.end671 -while.body670: + br label %logic.rend751 +logic.rend751: + br label %logic.end744 +logic.end744: + %t338 = phi i1 [ true, %logic.from742 ], [ %t337, %logic.rend751 ] + br label %logic.rend752 +logic.rend752: + br label %logic.end735 +logic.end735: + %t339 = phi i1 [ false, %logic.from733 ], [ %t338, %logic.rend752 ] + br i1 %t339, label %while.body727, label %while.end728 +while.body727: %t340 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t340) - br label %while.cond669 -while.end671: + br label %while.cond726 +while.end728: %t341 = load ptr, ptr %a18 %t342 = call i8 @finch.lexer.peek(ptr %t341, i64 0) %t343 = icmp eq i8 %t342, 46 - br label %logic.from696 -logic.from696: - br i1 %t343, label %logic.rhs697, label %logic.end698 -logic.rhs697: + br label %logic.from753 +logic.from753: + br i1 %t343, label %logic.rhs754, label %logic.end755 +logic.rhs754: %t344 = load ptr, ptr %a18 %t345 = call i8 @finch.lexer.peek(ptr %t344, i64 1) %t346 = call i1 @finch.lexer.isDigit(i8 %t345) - br label %logic.rend699 -logic.rend699: - br label %logic.end698 -logic.end698: - %t347 = phi i1 [ false, %logic.from696 ], [ %t346, %logic.rend699 ] - br i1 %t347, label %then700, label %endif702 -then700: + br label %logic.rend756 +logic.rend756: + br label %logic.end755 +logic.end755: + %t347 = phi i1 [ false, %logic.from753 ], [ %t346, %logic.rend756 ] + br i1 %t347, label %then757, label %endif759 +then757: %t348 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.425, i64 5, i64 0 }, ptr %t348 + store { ptr, i64, i64 } { ptr @.str.445, i64 5, i64 0 }, ptr %t348 %t349 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t349) - br label %while.cond703 -while.cond703: + br label %while.cond760 +while.cond760: %t350 = load ptr, ptr %a18 %t351 = icmp eq ptr %t350, null - br i1 %t351, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.426, i64 160, ptr @.str.427) + br i1 %t351, label %panic763, label %ok764 +panic763: + call void @finch_panic(ptr @.str.446, i64 160, ptr @.str.447) unreachable -ok707: +ok764: %t352 = getelementptr inbounds %S.lexer.Lexer, ptr %t350, i32 0, i32 2 %t353 = load i64, ptr %t352 %t354 = load ptr, ptr %a18 %t355 = icmp eq ptr %t354, null - br i1 %t355, label %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.428, i64 160, ptr @.str.429) + br i1 %t355, label %panic765, label %ok766 +panic765: + call void @finch_panic(ptr @.str.448, i64 160, ptr @.str.449) unreachable -ok709: +ok766: %t356 = getelementptr inbounds %S.lexer.Lexer, ptr %t354, i32 0, i32 0 %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 %t358 = load i64, ptr %t357 %t359 = icmp slt i64 %t353, %t358 - br label %logic.from710 -logic.from710: - br i1 %t359, label %logic.rhs711, label %logic.end712 -logic.rhs711: + br label %logic.from767 +logic.from767: + br i1 %t359, label %logic.rhs768, label %logic.end769 +logic.rhs768: %t360 = load ptr, ptr %a18 %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic713, label %ok714 -panic713: - call void @finch_panic(ptr @.str.430, i64 160, ptr @.str.431) + br i1 %t361, label %panic770, label %ok771 +panic770: + call void @finch_panic(ptr @.str.450, i64 160, ptr @.str.451) unreachable -ok714: +ok771: %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 0 %t363 = load ptr, ptr %a18 %t364 = icmp eq ptr %t363, null - br i1 %t364, label %panic715, label %ok716 -panic715: - call void @finch_panic(ptr @.str.432, i64 160, ptr @.str.433) + br i1 %t364, label %panic772, label %ok773 +panic772: + call void @finch_panic(ptr @.str.452, i64 160, ptr @.str.453) unreachable -ok716: +ok773: %t365 = getelementptr inbounds %S.lexer.Lexer, ptr %t363, i32 0, i32 2 %t366 = load i64, ptr %t365 %t367 = load { ptr, i64, i64 }, ptr %t362 %t368 = extractvalue { ptr, i64, i64 } %t367, 1 %t369 = icmp uge i64 %t366, %t368 - br i1 %t369, label %range717, label %inrange718 -range717: - call void @finch_panic_index(ptr @.str.434, i64 160, i64 %t366, i64 %t368) + br i1 %t369, label %range774, label %inrange775 +range774: + call void @finch_panic_index(ptr @.str.454, i64 160, i64 %t366, i64 %t368) unreachable -inrange718: +inrange775: %t370 = extractvalue { ptr, i64, i64 } %t367, 0 %t371 = getelementptr inbounds i8, ptr %t370, i64 %t366 %t372 = load i8, ptr %t371 %t373 = call i1 @finch.lexer.isDigit(i8 %t372) - br label %logic.from719 -logic.from719: - br i1 %t373, label %logic.end721, label %logic.rhs720 -logic.rhs720: + br label %logic.from776 +logic.from776: + br i1 %t373, label %logic.end778, label %logic.rhs777 +logic.rhs777: %t374 = load ptr, ptr %a18 %t375 = icmp eq ptr %t374, null - br i1 %t375, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.435, i64 160, ptr @.str.436) + br i1 %t375, label %panic779, label %ok780 +panic779: + call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) unreachable -ok723: +ok780: %t376 = getelementptr inbounds %S.lexer.Lexer, ptr %t374, i32 0, i32 0 %t377 = load ptr, ptr %a18 %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.437, i64 160, ptr @.str.438) + br i1 %t378, label %panic781, label %ok782 +panic781: + call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) unreachable -ok725: +ok782: %t379 = getelementptr inbounds %S.lexer.Lexer, ptr %t377, i32 0, i32 2 %t380 = load i64, ptr %t379 %t381 = load { ptr, i64, i64 }, ptr %t376 %t382 = extractvalue { ptr, i64, i64 } %t381, 1 %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range726, label %inrange727 -range726: - call void @finch_panic_index(ptr @.str.439, i64 160, i64 %t380, i64 %t382) + br i1 %t383, label %range783, label %inrange784 +range783: + call void @finch_panic_index(ptr @.str.459, i64 160, i64 %t380, i64 %t382) unreachable -inrange727: +inrange784: %t384 = extractvalue { ptr, i64, i64 } %t381, 0 %t385 = getelementptr inbounds i8, ptr %t384, i64 %t380 %t386 = load i8, ptr %t385 %t387 = icmp eq i8 %t386, 95 - br label %logic.rend728 -logic.rend728: - br label %logic.end721 -logic.end721: - %t388 = phi i1 [ true, %logic.from719 ], [ %t387, %logic.rend728 ] - br label %logic.rend729 -logic.rend729: - br label %logic.end712 -logic.end712: - %t389 = phi i1 [ false, %logic.from710 ], [ %t388, %logic.rend729 ] - br i1 %t389, label %while.body704, label %while.end705 -while.body704: + br label %logic.rend785 +logic.rend785: + br label %logic.end778 +logic.end778: + %t388 = phi i1 [ true, %logic.from776 ], [ %t387, %logic.rend785 ] + br label %logic.rend786 +logic.rend786: + br label %logic.end769 +logic.end769: + %t389 = phi i1 [ false, %logic.from767 ], [ %t388, %logic.rend786 ] + br i1 %t389, label %while.body761, label %while.end762 +while.body761: %t390 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t390) - br label %while.cond703 -while.end705: - br label %endif702 -endif702: - br label %endif641 -endif641: + br label %while.cond760 +while.end762: + br label %endif759 +endif759: + br label %endif698 +endif698: %t391 = load ptr, ptr %a18 %t392 = icmp eq ptr %t391, null - br i1 %t392, label %panic730, label %ok731 -panic730: - call void @finch_panic(ptr @.str.440, i64 165, ptr @.str.441) + br i1 %t392, label %panic787, label %ok788 +panic787: + call void @finch_panic(ptr @.str.460, i64 165, ptr @.str.461) unreachable -ok731: +ok788: %t393 = getelementptr inbounds %S.lexer.Lexer, ptr %t391, i32 0, i32 0 %t394 = load { ptr, i64, i64 }, ptr %t393 store { ptr, i64, i64 } %t394, ptr %a395 %t397 = load i64, ptr %a177 %t398 = load ptr, ptr %a18 %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic732, label %ok733 -panic732: - call void @finch_panic(ptr @.str.443, i64 165, ptr @.str.444) + br i1 %t399, label %panic789, label %ok790 +panic789: + call void @finch_panic(ptr @.str.463, i64 165, ptr @.str.464) unreachable -ok733: +ok790: %t400 = getelementptr inbounds %S.lexer.Lexer, ptr %t398, i32 0, i32 2 %t401 = load i64, ptr %t400 - call void @finch_str_sub(ptr %a396, ptr %a395, i64 %t397, i64 %t401, ptr @.str.442, i64 165) + call void @finch_str_sub(ptr %a396, ptr %a395, i64 %t397, i64 %t401, ptr @.str.462, i64 165) %t402 = load { ptr, i64, i64 }, ptr %a396 store { ptr, i64, i64 } %t402, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.446, i64 1, i64 0 }, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.447, i64 0, i64 0 }, ptr %a406 + store { ptr, i64, i64 } { ptr @.str.466, i64 1, i64 0 }, ptr %a405 + store { ptr, i64, i64 } { ptr @.str.467, i64 0, i64 0 }, ptr %a406 call void @finch_str_replace(ptr %a404, ptr %a403, ptr %a405, ptr %a406) %t407 = load { ptr, i64, i64 }, ptr %a404 %t408 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 store { ptr, i64, i64 } %t407, ptr %t408 - br label %endif630 -else629: + br label %endif687 +else686: %t409 = load i8, ptr %a43 %t410 = icmp eq i8 %t409, 34 - br label %logic.from734 -logic.from734: - br i1 %t410, label %logic.end736, label %logic.rhs735 -logic.rhs735: + br label %logic.from791 +logic.from791: + br i1 %t410, label %logic.end793, label %logic.rhs792 +logic.rhs792: %t411 = load i8, ptr %a43 %t412 = icmp eq i8 %t411, 39 - br label %logic.rend737 -logic.rend737: - br label %logic.end736 -logic.end736: - %t413 = phi i1 [ true, %logic.from734 ], [ %t412, %logic.rend737 ] - br i1 %t413, label %then738, label %else739 -then738: + br label %logic.rend794 +logic.rend794: + br label %logic.end793 +logic.end793: + %t413 = phi i1 [ true, %logic.from791 ], [ %t412, %logic.rend794 ] + br i1 %t413, label %then795, label %else796 +then795: %t414 = load i8, ptr %a43 store i8 %t414, ptr %a415 %t416 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.448, i64 6, i64 0 }, ptr %t416 + store { ptr, i64, i64 } { ptr @.str.468, i64 6, i64 0 }, ptr %t416 %t417 = load i8, ptr %a415 %t418 = icmp eq i8 %t417, 39 - br i1 %t418, label %then741, label %endif743 -then741: + br i1 %t418, label %then798, label %endif800 +then798: %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.449, i64 4, i64 0 }, ptr %t419 - br label %endif743 -endif743: + store { ptr, i64, i64 } { ptr @.str.469, i64 4, i64 0 }, ptr %t419 + br label %endif800 +endif800: %t420 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t420) store { ptr, i64, i64 } zeroinitializer, ptr %a421 - br label %while.cond744 -while.cond744: + br label %while.cond801 +while.cond801: %t422 = load ptr, ptr %a18 %t423 = call i8 @finch.lexer.peek(ptr %t422, i64 0) %t424 = load i8, ptr %a415 %t425 = icmp ne i8 %t423, %t424 - br i1 %t425, label %while.body745, label %while.end746 -while.body745: + br i1 %t425, label %while.body802, label %while.end803 +while.body802: %t426 = load ptr, ptr %a18 %t427 = call i8 @finch.lexer.peek(ptr %t426, i64 0) %t428 = trunc i64 0 to i8 %t429 = icmp eq i8 %t427, %t428 - br label %logic.from747 -logic.from747: - br i1 %t429, label %logic.end749, label %logic.rhs748 -logic.rhs748: + br label %logic.from804 +logic.from804: + br i1 %t429, label %logic.end806, label %logic.rhs805 +logic.rhs805: %t430 = load ptr, ptr %a18 %t431 = call i8 @finch.lexer.peek(ptr %t430, i64 0) %t432 = icmp eq i8 %t431, 10 - br label %logic.rend750 -logic.rend750: - br label %logic.end749 -logic.end749: - %t433 = phi i1 [ true, %logic.from747 ], [ %t432, %logic.rend750 ] - br i1 %t433, label %then751, label %endif753 -then751: + br label %logic.rend807 +logic.rend807: + br label %logic.end806 +logic.end806: + %t433 = phi i1 [ true, %logic.from804 ], [ %t432, %logic.rend807 ] + br i1 %t433, label %then808, label %endif810 +then808: %t434 = load i8, ptr %a415 %t435 = icmp eq i8 %t434, 34 - br i1 %t435, label %then754, label %endif756 -then754: + br i1 %t435, label %then811, label %endif813 +then811: %t436 = load ptr, ptr %a18 %t437 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 %t438 = load i64, ptr %t437 %t439 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 %t440 = load i64, ptr %t439 - call void @finch.lexer.fail(ptr %t436, i64 %t438, i64 %t440, { ptr, i64, i64 } { ptr @.str.450, i64 34, i64 0 }) - br label %endif756 -endif756: + call void @finch.lexer.fail(ptr %t436, i64 %t438, i64 %t440, { ptr, i64, i64 } { ptr @.str.470, i64 34, i64 0 }) + br label %endif813 +endif813: %t441 = load ptr, ptr %a18 %t442 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 %t443 = load i64, ptr %t442 %t444 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 %t445 = load i64, ptr %t444 - call void @finch.lexer.fail(ptr %t441, i64 %t443, i64 %t445, { ptr, i64, i64 } { ptr @.str.451, i64 32, i64 0 }) - br label %endif753 -endif753: + call void @finch.lexer.fail(ptr %t441, i64 %t443, i64 %t445, { ptr, i64, i64 } { ptr @.str.471, i64 32, i64 0 }) + br label %endif810 +endif810: %t446 = load ptr, ptr %a18 %t447 = call i8 @finch.lexer.peek(ptr %t446, i64 0) store i8 %t447, ptr %a448 @@ -11068,8 +12499,8 @@ endif753: call void @finch.lexer.advance(ptr %t449) %t450 = load i8, ptr %a448 %t451 = icmp eq i8 %t450, 92 - br i1 %t451, label %then757, label %endif759 -then757: + br i1 %t451, label %then814, label %endif816 +then814: %t452 = load ptr, ptr %a18 %t453 = call i8 @finch.lexer.peek(ptr %t452, i64 0) store i8 %t453, ptr %a454 @@ -11079,8 +12510,8 @@ then757: %t457 = load i8, ptr %a454 %t458 = call i8 @finch.lexer.escape(ptr %t456, i8 %t457) store i8 %t458, ptr %a448 - br label %endif759 -endif759: + br label %endif816 +endif816: %t459 = getelementptr inbounds { ptr, i64, i64 }, ptr %a421, i32 0, i32 1 %t460 = load i8, ptr %a448 call void @finch_str_from_char(ptr %a461, i8 signext %t460) @@ -11092,92 +12523,92 @@ endif759: %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 %t463 store { ptr, i64, i64 } %t462, ptr %t466 store i64 %t464, ptr %t459 - br label %while.cond744 -while.end746: + br label %while.cond801 +while.end803: %t467 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t467) %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %a421, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.452, i64 0, i64 0 }, ptr %a469 + store { ptr, i64, i64 } { ptr @.str.472, i64 0, i64 0 }, ptr %a469 call void @finch_str_join(ptr %a470, ptr %a421, ptr %a469) %t471 = load { ptr, i64, i64 }, ptr %a470 %t472 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 store { ptr, i64, i64 } %t471, ptr %t472 %t473 = load i8, ptr %a415 %t474 = icmp eq i8 %t473, 39 - br label %logic.from760 -logic.from760: - br i1 %t474, label %logic.rhs761, label %logic.end762 -logic.rhs761: + br label %logic.from817 +logic.from817: + br i1 %t474, label %logic.rhs818, label %logic.end819 +logic.rhs818: %t475 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i32 0, i32 1 %t477 = load i64, ptr %t476 %t478 = icmp ne i64 %t477, 1 - br label %logic.rend763 -logic.rend763: - br label %logic.end762 -logic.end762: - %t479 = phi i1 [ false, %logic.from760 ], [ %t478, %logic.rend763 ] - br i1 %t479, label %then764, label %endif766 -then764: + br label %logic.rend820 +logic.rend820: + br label %logic.end819 +logic.end819: + %t479 = phi i1 [ false, %logic.from817 ], [ %t478, %logic.rend820 ] + br i1 %t479, label %then821, label %endif823 +then821: %t480 = load ptr, ptr %a18 %t481 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 %t482 = load i64, ptr %t481 %t483 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 %t484 = load i64, ptr %t483 - call void @finch.lexer.fail(ptr %t480, i64 %t482, i64 %t484, { ptr, i64, i64 } { ptr @.str.453, i64 44, i64 0 }) - br label %endif766 -endif766: - br label %endif740 -else739: + call void @finch.lexer.fail(ptr %t480, i64 %t482, i64 %t484, { ptr, i64, i64 } { ptr @.str.473, i64 44, i64 0 }) + br label %endif823 +endif823: + br label %endif797 +else796: %t485 = load ptr, ptr %a18 %t486 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t485) store { ptr, i64, i64 } %t486, ptr %a487 %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a487, i32 0, i32 1 %t489 = load i64, ptr %t488 %t490 = icmp eq i64 %t489, 0 - br i1 %t490, label %then767, label %endif769 -then767: + br i1 %t490, label %then824, label %endif826 +then824: store i64 1, ptr %a491 %t492 = load i8, ptr %a43 %t493 = zext i8 %t492 to i64 %t494 = and i64 %t493, 224 %t495 = icmp eq i64 %t494, 192 - br i1 %t495, label %then770, label %else771 -then770: + br i1 %t495, label %then827, label %else828 +then827: store i64 2, ptr %a491 - br label %endif772 -else771: + br label %endif829 +else828: %t496 = load i8, ptr %a43 %t497 = zext i8 %t496 to i64 %t498 = and i64 %t497, 240 %t499 = icmp eq i64 %t498, 224 - br i1 %t499, label %then773, label %else774 -then773: + br i1 %t499, label %then830, label %else831 +then830: store i64 3, ptr %a491 - br label %endif775 -else774: + br label %endif832 +else831: %t500 = load i8, ptr %a43 %t501 = zext i8 %t500 to i64 %t502 = and i64 %t501, 248 %t503 = icmp eq i64 %t502, 240 - br i1 %t503, label %then776, label %endif778 -then776: + br i1 %t503, label %then833, label %endif835 +then833: store i64 4, ptr %a491 - br label %endif778 -endif778: - br label %endif775 -endif775: - br label %endif772 -endif772: - store { ptr, i64, i64 } { ptr @.str.454, i64 0, i64 0 }, ptr %a504 + br label %endif835 +endif835: + br label %endif832 +endif832: + br label %endif829 +endif829: + store { ptr, i64, i64 } { ptr @.str.474, i64 0, i64 0 }, ptr %a504 %t505 = load i8, ptr %a43 %t506 = zext i8 %t505 to i64 %t507 = icmp sge i64 %t506, 128 - br i1 %t507, label %then779, label %endif781 -then779: - store { ptr, i64, i64 } { ptr @.str.455, i64 74, i64 0 }, ptr %a504 - br label %endif781 -endif781: + br i1 %t507, label %then836, label %endif838 +then836: + store { ptr, i64, i64 } { ptr @.str.475, i64 74, i64 0 }, ptr %a504 + br label %endif838 +endif838: %t508 = load ptr, ptr %a18 %t509 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 %t510 = load i64, ptr %t509 @@ -11185,42 +12616,42 @@ endif781: %t512 = load i64, ptr %t511 %t513 = load ptr, ptr %a18 %t514 = icmp eq ptr %t513, null - br i1 %t514, label %panic782, label %ok783 -panic782: - call void @finch_panic(ptr @.str.457, i64 211, ptr @.str.458) + br i1 %t514, label %panic839, label %ok840 +panic839: + call void @finch_panic(ptr @.str.477, i64 211, ptr @.str.478) unreachable -ok783: +ok840: %t515 = getelementptr inbounds %S.lexer.Lexer, ptr %t513, i32 0, i32 0 %t516 = load { ptr, i64, i64 }, ptr %t515 store { ptr, i64, i64 } %t516, ptr %a517 %t519 = load ptr, ptr %a18 %t520 = icmp eq ptr %t519, null - br i1 %t520, label %panic784, label %ok785 -panic784: - call void @finch_panic(ptr @.str.460, i64 211, ptr @.str.461) + br i1 %t520, label %panic841, label %ok842 +panic841: + call void @finch_panic(ptr @.str.480, i64 211, ptr @.str.481) unreachable -ok785: +ok842: %t521 = getelementptr inbounds %S.lexer.Lexer, ptr %t519, i32 0, i32 2 %t522 = load i64, ptr %t521 %t523 = load ptr, ptr %a18 %t524 = icmp eq ptr %t523, null - br i1 %t524, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.462, i64 211, ptr @.str.463) + br i1 %t524, label %panic843, label %ok844 +panic843: + call void @finch_panic(ptr @.str.482, i64 211, ptr @.str.483) unreachable -ok787: +ok844: %t525 = getelementptr inbounds %S.lexer.Lexer, ptr %t523, i32 0, i32 2 %t526 = load i64, ptr %t525 %t527 = load i64, ptr %a491 %t528 = add i64 %t526, %t527 - call void @finch_str_sub(ptr %a518, ptr %a517, i64 %t522, i64 %t528, ptr @.str.459, i64 211) + call void @finch_str_sub(ptr %a518, ptr %a517, i64 %t522, i64 %t528, ptr @.str.479, i64 211) %t529 = load { ptr, i64, i64 }, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.456, i64 22, i64 0 }, ptr %a531 + store { ptr, i64, i64 } { ptr @.str.476, i64 22, i64 0 }, ptr %a531 store { ptr, i64, i64 } %t529, ptr %a532 call void @finch_str_concat(ptr %a530, ptr %a531, ptr %a532) %t533 = load { ptr, i64, i64 }, ptr %a530 store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.464, i64 1, i64 0 }, ptr %a536 + store { ptr, i64, i64 } { ptr @.str.484, i64 1, i64 0 }, ptr %a536 call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) %t537 = load { ptr, i64, i64 }, ptr %a534 %t538 = load { ptr, i64, i64 }, ptr %a504 @@ -11229,26 +12660,26 @@ ok787: call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541) %t542 = load { ptr, i64, i64 }, ptr %a539 call void @finch.lexer.fail(ptr %t508, i64 %t510, i64 %t512, { ptr, i64, i64 } %t542) - br label %endif769 -endif769: + br label %endif826 +endif826: %t543 = getelementptr inbounds { ptr, i64, i64 }, ptr %a487, i32 0, i32 1 %t544 = load i64, ptr %t543 store i64 0, ptr %a545 - br label %for.cond788 -for.cond788: + br label %for.cond845 +for.cond845: %t546 = load i64, ptr %a545 %t547 = icmp slt i64 %t546, %t544 - br i1 %t547, label %for.body789, label %for.end791 -for.body789: + br i1 %t547, label %for.body846, label %for.end848 +for.body846: %t548 = load ptr, ptr %a18 call void @finch.lexer.advance(ptr %t548) - br label %for.step790 -for.step790: + br label %for.step847 +for.step847: %t549 = load i64, ptr %a545 %t550 = add i64 %t549, 1 store i64 %t550, ptr %a545 - br label %for.cond788 -for.end791: + br label %for.cond845 +for.end848: %t551 = load { ptr, i64, i64 }, ptr %a487 %t552 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 store { ptr, i64, i64 } %t551, ptr %a553 @@ -11261,12 +12692,12 @@ for.end791: call void @finch_str_copy(ptr %a559, ptr %a558) %t560 = load { ptr, i64, i64 }, ptr %a559 store { ptr, i64, i64 } %t560, ptr %t557 - br label %endif740 -endif740: - br label %endif630 -endif630: - br label %endif593 -endif593: + br label %endif797 +endif797: + br label %endif687 +endif687: + br label %endif650 +endif650: %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 %t562 = load %S.lexer.Token, ptr %a169 store %S.lexer.Token %t562, ptr %a563 @@ -11279,28 +12710,28 @@ endif593: %t569 = getelementptr inbounds %S.lexer.Token, ptr %t568, i64 %t566 store %S.lexer.Token %t565, ptr %t569 store i64 %t567, ptr %t561 - br label %while.cond490 -while.end492: + br label %while.cond547 +while.end549: %t570 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t571 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.465, i64 3, i64 0 }, 0 - %t572 = insertvalue %S.lexer.Token %t571, { ptr, i64, i64 } { ptr @.str.466, i64 0, i64 0 }, 1 + %t571 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.485, i64 3, i64 0 }, 0 + %t572 = insertvalue %S.lexer.Token %t571, { ptr, i64, i64 } { ptr @.str.486, i64 0, i64 0 }, 1 %t573 = load ptr, ptr %a18 %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic792, label %ok793 -panic792: - call void @finch_panic(ptr @.str.467, i64 221, ptr @.str.468) + br i1 %t574, label %panic849, label %ok850 +panic849: + call void @finch_panic(ptr @.str.487, i64 221, ptr @.str.488) unreachable -ok793: +ok850: %t575 = getelementptr inbounds %S.lexer.Lexer, ptr %t573, i32 0, i32 3 %t576 = load i64, ptr %t575 %t577 = insertvalue %S.lexer.Token %t572, i64 %t576, 2 %t578 = load ptr, ptr %a18 %t579 = icmp eq ptr %t578, null - br i1 %t579, label %panic794, label %ok795 -panic794: - call void @finch_panic(ptr @.str.469, i64 221, ptr @.str.470) + br i1 %t579, label %panic851, label %ok852 +panic851: + call void @finch_panic(ptr @.str.489, i64 221, ptr @.str.490) unreachable -ok795: +ok852: %t580 = getelementptr inbounds %S.lexer.Lexer, ptr %t578, i32 0, i32 4 %t581 = load i64, ptr %t580 %t582 = insertvalue %S.lexer.Token %t577, i64 %t581, 3 @@ -11342,7 +12773,7 @@ entry: %a15 = alloca %S.ast.Type, align 16 %a16 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.471, i64 5, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.491, i64 5, i64 0 }, 0 store %S.ast.Type %t2, ptr %a3 %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 @@ -11377,7 +12808,7 @@ entry: %a27 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.472, i64 3, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.492, i64 3, i64 0 }, 0 store %S.ast.Type %t3, ptr %a4 %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 @@ -11421,7 +12852,7 @@ entry: %a15 = alloca %S.ast.Type, align 16 %a16 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.473, i64 3, i64 0 }, 0 + %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.493, i64 3, i64 0 }, 0 store %S.ast.Type %t2, ptr %a3 %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 @@ -11480,48 +12911,48 @@ entry: store { ptr, i64, i64 } %t6, ptr %a8 %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) %t10 = icmp eq i32 %t9, 0 - br i1 %t10, label %then799, label %endif801 -then799: + br i1 %t10, label %then856, label %endif858 +then856: ret i1 false -endif801: +endif858: %t11 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t12 = load { ptr, i64, i64 }, ptr %t11 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.474, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.494, i64 6, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br label %logic.from802 -logic.from802: - br i1 %t16, label %logic.end804, label %logic.rhs803 -logic.rhs803: + br label %logic.from859 +logic.from859: + br i1 %t16, label %logic.end861, label %logic.rhs860 +logic.rhs860: %t17 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.475, i64 5, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.495, i64 5, i64 0 }, ptr %a20 %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) %t22 = icmp ne i32 %t21, 0 - br label %logic.rend805 -logic.rend805: - br label %logic.end804 -logic.end804: - %t23 = phi i1 [ true, %logic.from802 ], [ %t22, %logic.rend805 ] - br label %logic.from806 -logic.from806: - br i1 %t23, label %logic.end808, label %logic.rhs807 -logic.rhs807: + br label %logic.rend862 +logic.rend862: + br label %logic.end861 +logic.end861: + %t23 = phi i1 [ true, %logic.from859 ], [ %t22, %logic.rend862 ] + br label %logic.from863 +logic.from863: + br i1 %t23, label %logic.end865, label %logic.rhs864 +logic.rhs864: %t24 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t25 = load { ptr, i64, i64 }, ptr %t24 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.476, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.496, i64 4, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend809 -logic.rend809: - br label %logic.end808 -logic.end808: - %t30 = phi i1 [ true, %logic.from806 ], [ %t29, %logic.rend809 ] - br i1 %t30, label %then810, label %endif812 -then810: + br label %logic.rend866 +logic.rend866: + br label %logic.end865 +logic.end865: + %t30 = phi i1 [ true, %logic.from863 ], [ %t29, %logic.rend866 ] + br i1 %t30, label %then867, label %endif869 +then867: %t31 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 %t32 = load { ptr, i64, i64 }, ptr %t31 %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 @@ -11530,10 +12961,10 @@ then810: store { ptr, i64, i64 } %t34, ptr %a36 %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) %t38 = icmp ne i32 %t37, 0 - br label %logic.from813 -logic.from813: - br i1 %t38, label %logic.rhs814, label %logic.end815 -logic.rhs814: + br label %logic.from870 +logic.from870: + br i1 %t38, label %logic.rhs871, label %logic.end872 +logic.rhs871: %t39 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t40 = load { ptr, i64, i64 }, ptr %t39 %t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -11542,90 +12973,90 @@ logic.rhs814: store { ptr, i64, i64 } %t42, ptr %a44 %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) %t46 = icmp ne i32 %t45, 0 - br label %logic.rend816 -logic.rend816: - br label %logic.end815 -logic.end815: - %t47 = phi i1 [ false, %logic.from813 ], [ %t46, %logic.rend816 ] + br label %logic.rend873 +logic.rend873: + br label %logic.end872 +logic.end872: + %t47 = phi i1 [ false, %logic.from870 ], [ %t46, %logic.rend873 ] ret i1 %t47 -endif812: +endif869: %t48 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t49 = load { ptr, i64, i64 }, ptr %t48 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.477, i64 5, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.497, i64 5, i64 0 }, ptr %a51 %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) %t53 = icmp ne i32 %t52, 0 - br label %logic.from817 -logic.from817: - br i1 %t53, label %logic.rhs818, label %logic.end819 -logic.rhs818: + br label %logic.from874 +logic.from874: + br i1 %t53, label %logic.rhs875, label %logic.end876 +logic.rhs875: %t54 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 %t55 = load i64, ptr %t54 %t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t57 = load i64, ptr %t56 %t58 = icmp ne i64 %t55, %t57 - br label %logic.rend820 -logic.rend820: - br label %logic.end819 -logic.end819: - %t59 = phi i1 [ false, %logic.from817 ], [ %t58, %logic.rend820 ] - br i1 %t59, label %then821, label %endif823 -then821: + br label %logic.rend877 +logic.rend877: + br label %logic.end876 +logic.end876: + %t59 = phi i1 [ false, %logic.from874 ], [ %t58, %logic.rend877 ] + br i1 %t59, label %then878, label %endif880 +then878: ret i1 false -endif823: +endif880: %t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t61 = load { ptr, i64, i64 }, ptr %t60 store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.478, i64 5, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.498, i64 5, i64 0 }, ptr %a63 %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) %t65 = icmp ne i32 %t64, 0 - br label %logic.from824 -logic.from824: - br i1 %t65, label %logic.end826, label %logic.rhs825 -logic.rhs825: + br label %logic.from881 +logic.from881: + br i1 %t65, label %logic.end883, label %logic.rhs882 +logic.rhs882: %t66 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t67 = load { ptr, i64, i64 }, ptr %t66 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.479, i64 3, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.499, i64 3, i64 0 }, ptr %a69 %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) %t71 = icmp ne i32 %t70, 0 - br label %logic.rend827 -logic.rend827: - br label %logic.end826 -logic.end826: - %t72 = phi i1 [ true, %logic.from824 ], [ %t71, %logic.rend827 ] - br label %logic.from828 -logic.from828: - br i1 %t72, label %logic.end830, label %logic.rhs829 -logic.rhs829: + br label %logic.rend884 +logic.rend884: + br label %logic.end883 +logic.end883: + %t72 = phi i1 [ true, %logic.from881 ], [ %t71, %logic.rend884 ] + br label %logic.from885 +logic.from885: + br i1 %t72, label %logic.end887, label %logic.rhs886 +logic.rhs886: %t73 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t74 = load { ptr, i64, i64 }, ptr %t73 store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.480, i64 3, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.500, i64 3, i64 0 }, ptr %a76 %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) %t78 = icmp ne i32 %t77, 0 - br label %logic.rend831 -logic.rend831: - br label %logic.end830 -logic.end830: - %t79 = phi i1 [ true, %logic.from828 ], [ %t78, %logic.rend831 ] - br label %logic.from832 -logic.from832: - br i1 %t79, label %logic.end834, label %logic.rhs833 -logic.rhs833: + br label %logic.rend888 +logic.rend888: + br label %logic.end887 +logic.end887: + %t79 = phi i1 [ true, %logic.from885 ], [ %t78, %logic.rend888 ] + br label %logic.from889 +logic.from889: + br i1 %t79, label %logic.end891, label %logic.rhs890 +logic.rhs890: %t80 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t81 = load { ptr, i64, i64 }, ptr %t80 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.481, i64 5, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.501, i64 5, i64 0 }, ptr %a83 %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) %t85 = icmp ne i32 %t84, 0 - br label %logic.rend835 -logic.rend835: - br label %logic.end834 -logic.end834: - %t86 = phi i1 [ true, %logic.from832 ], [ %t85, %logic.rend835 ] - br i1 %t86, label %then836, label %endif838 -then836: + br label %logic.rend892 +logic.rend892: + br label %logic.end891 +logic.end891: + %t86 = phi i1 [ true, %logic.from889 ], [ %t85, %logic.rend892 ] + br i1 %t86, label %then893, label %endif895 +then893: %t87 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 %t89 = load i64, ptr %t88 @@ -11633,30 +13064,30 @@ then836: %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i32 0, i32 1 %t92 = load i64, ptr %t91 %t93 = icmp ne i64 %t89, %t92 - br i1 %t93, label %then839, label %endif841 -then839: + br i1 %t93, label %then896, label %endif898 +then896: ret i1 false -endif841: +endif898: %t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 %t96 = load i64, ptr %t95 store i64 0, ptr %a97 - br label %for.cond842 -for.cond842: + br label %for.cond899 +for.cond899: %t98 = load i64, ptr %a97 %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body843, label %for.end845 -for.body843: + br i1 %t99, label %for.body900, label %for.end902 +for.body900: %t100 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t101 = load i64, ptr %a97 %t102 = load { ptr, i64, i64 }, ptr %t100 %t103 = extractvalue { ptr, i64, i64 } %t102, 1 %t104 = icmp uge i64 %t101, %t103 - br i1 %t104, label %range846, label %inrange847 -range846: - call void @finch_panic_index(ptr @.str.482, i64 54, i64 %t101, i64 %t103) + br i1 %t104, label %range903, label %inrange904 +range903: + call void @finch_panic_index(ptr @.str.502, i64 54, i64 %t101, i64 %t103) unreachable -inrange847: +inrange904: %t105 = extractvalue { ptr, i64, i64 } %t102, 0 %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t101 %t107 = load %S.ast.Type, ptr %t106 @@ -11665,29 +13096,29 @@ inrange847: %t110 = load { ptr, i64, i64 }, ptr %t108 %t111 = extractvalue { ptr, i64, i64 } %t110, 1 %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range848, label %inrange849 -range848: - call void @finch_panic_index(ptr @.str.483, i64 54, i64 %t109, i64 %t111) + br i1 %t112, label %range905, label %inrange906 +range905: + call void @finch_panic_index(ptr @.str.503, i64 54, i64 %t109, i64 %t111) unreachable -inrange849: +inrange906: %t113 = extractvalue { ptr, i64, i64 } %t110, 0 %t114 = getelementptr inbounds %S.ast.Type, ptr %t113, i64 %t109 %t115 = load %S.ast.Type, ptr %t114 %t116 = call i1 @finch.ast.same(%S.ast.Type %t107, %S.ast.Type %t115) %t117 = xor i1 %t116, true - br i1 %t117, label %then850, label %endif852 -then850: + br i1 %t117, label %then907, label %endif909 +then907: ret i1 false -endif852: - br label %for.step844 -for.step844: +endif909: + br label %for.step901 +for.step901: %t118 = load i64, ptr %a97 %t119 = add i64 %t118, 1 store i64 %t119, ptr %a97 - br label %for.cond842 -for.end845: + br label %for.cond899 +for.end902: ret i1 true -endif838: +endif895: ret i1 true } @@ -11752,59 +13183,59 @@ entry: %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.484, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.504, i64 5, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then853, label %endif855 -then853: + br i1 %t7, label %then910, label %endif912 +then910: %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t9 = load { ptr, i64, i64 }, ptr %t8 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 0, %t10 - br i1 %t11, label %range856, label %inrange857 -range856: - call void @finch_panic_index(ptr @.str.486, i64 65, i64 0, i64 %t10) + br i1 %t11, label %range913, label %inrange914 +range913: + call void @finch_panic_index(ptr @.str.506, i64 65, i64 0, i64 %t10) unreachable -inrange857: +inrange914: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0 %t14 = load %S.ast.Type, ptr %t13 %t15 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t14) - store { ptr, i64, i64 } { ptr @.str.485, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.505, i64 2, i64 0 }, ptr %a17 store { ptr, i64, i64 } %t15, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 ret { ptr, i64, i64 } %t19 -endif855: +endif912: %t20 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.487, i64 5, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.507, i64 5, i64 0 }, ptr %a23 %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) %t25 = icmp ne i32 %t24, 0 - br i1 %t25, label %then858, label %endif860 -then858: + br i1 %t25, label %then915, label %endif917 +then915: %t26 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 %t27 = load i64, ptr %t26 call void @finch_str_from_int(ptr %a28, i64 %t27) %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.488, i64 1, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.508, i64 1, i64 0 }, ptr %a31 store { ptr, i64, i64 } %t29, ptr %a32 call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) %t33 = load { ptr, i64, i64 }, ptr %a30 store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.489, i64 1, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.509, i64 1, i64 0 }, ptr %a36 call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 %t38 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t39 = load { ptr, i64, i64 }, ptr %t38 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 0, %t40 - br i1 %t41, label %range861, label %inrange862 -range861: - call void @finch_panic_index(ptr @.str.490, i64 68, i64 0, i64 %t40) + br i1 %t41, label %range918, label %inrange919 +range918: + call void @finch_panic_index(ptr @.str.510, i64 68, i64 0, i64 %t40) unreachable -inrange862: +inrange919: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 0 %t44 = load %S.ast.Type, ptr %t43 @@ -11814,45 +13245,45 @@ inrange862: call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) %t49 = load { ptr, i64, i64 }, ptr %a46 ret { ptr, i64, i64 } %t49 -endif860: +endif917: %t50 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t51 = load { ptr, i64, i64 }, ptr %t50 store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.491, i64 3, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.511, i64 3, i64 0 }, ptr %a53 %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then863, label %endif865 -then863: + br i1 %t55, label %then920, label %endif922 +then920: %t56 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t57 = load { ptr, i64, i64 }, ptr %t56 %t58 = extractvalue { ptr, i64, i64 } %t57, 1 %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range866, label %inrange867 -range866: - call void @finch_panic_index(ptr @.str.493, i64 71, i64 0, i64 %t58) + br i1 %t59, label %range923, label %inrange924 +range923: + call void @finch_panic_index(ptr @.str.513, i64 71, i64 0, i64 %t58) unreachable -inrange867: +inrange924: %t60 = extractvalue { ptr, i64, i64 } %t57, 0 %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 %t62 = load %S.ast.Type, ptr %t61 %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.492, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.512, i64 4, i64 0 }, ptr %a65 store { ptr, i64, i64 } %t63, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.494, i64 1, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.514, i64 1, i64 0 }, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 %t72 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t73 = load { ptr, i64, i64 }, ptr %t72 %t74 = extractvalue { ptr, i64, i64 } %t73, 1 %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range868, label %inrange869 -range868: - call void @finch_panic_index(ptr @.str.495, i64 71, i64 1, i64 %t74) + br i1 %t75, label %range925, label %inrange926 +range925: + call void @finch_panic_index(ptr @.str.515, i64 71, i64 1, i64 %t74) unreachable -inrange869: +inrange926: %t76 = extractvalue { ptr, i64, i64 } %t73, 0 %t77 = getelementptr inbounds %S.ast.Type, ptr %t76, i64 1 %t78 = load %S.ast.Type, ptr %t77 @@ -11862,94 +13293,94 @@ inrange869: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 ret { ptr, i64, i64 } %t83 -endif865: +endif922: %t84 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t85 = load { ptr, i64, i64 }, ptr %t84 store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.496, i64 3, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.516, i64 3, i64 0 }, ptr %a87 %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) %t89 = icmp ne i32 %t88, 0 - br i1 %t89, label %then870, label %endif872 -then870: + br i1 %t89, label %then927, label %endif929 +then927: %t90 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i32 0, i32 1 %t92 = load i64, ptr %t91 %t93 = icmp eq i64 %t92, 0 - br i1 %t93, label %then873, label %endif875 -then873: - ret { ptr, i64, i64 } { ptr @.str.497, i64 3, i64 0 } -endif875: + br i1 %t93, label %then930, label %endif932 +then930: + ret { ptr, i64, i64 } { ptr @.str.517, i64 3, i64 0 } +endif932: %t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t95 = load { ptr, i64, i64 }, ptr %t94 %t96 = extractvalue { ptr, i64, i64 } %t95, 1 %t97 = icmp uge i64 0, %t96 - br i1 %t97, label %range876, label %inrange877 -range876: - call void @finch_panic_index(ptr @.str.499, i64 77, i64 0, i64 %t96) + br i1 %t97, label %range933, label %inrange934 +range933: + call void @finch_panic_index(ptr @.str.519, i64 77, i64 0, i64 %t96) unreachable -inrange877: +inrange934: %t98 = extractvalue { ptr, i64, i64 } %t95, 0 %t99 = getelementptr inbounds %S.ast.Type, ptr %t98, i64 0 %t100 = load %S.ast.Type, ptr %t99 %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.498, i64 4, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.518, i64 4, i64 0 }, ptr %a103 store { ptr, i64, i64 } %t101, ptr %a104 call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) %t105 = load { ptr, i64, i64 }, ptr %a102 store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.500, i64 1, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.520, i64 1, i64 0 }, ptr %a108 call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) %t109 = load { ptr, i64, i64 }, ptr %a106 ret { ptr, i64, i64 } %t109 -endif872: +endif929: %t110 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t111 = load { ptr, i64, i64 }, ptr %t110 store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.501, i64 6, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.521, i64 6, i64 0 }, ptr %a113 %t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113) %t115 = icmp ne i32 %t114, 0 - br label %logic.from878 -logic.from878: - br i1 %t115, label %logic.end880, label %logic.rhs879 -logic.rhs879: + br label %logic.from935 +logic.from935: + br i1 %t115, label %logic.end937, label %logic.rhs936 +logic.rhs936: %t116 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t117 = load { ptr, i64, i64 }, ptr %t116 store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.502, i64 5, i64 0 }, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.522, i64 5, i64 0 }, ptr %a119 %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) %t121 = icmp ne i32 %t120, 0 - br label %logic.rend881 -logic.rend881: - br label %logic.end880 -logic.end880: - %t122 = phi i1 [ true, %logic.from878 ], [ %t121, %logic.rend881 ] - br label %logic.from882 -logic.from882: - br i1 %t122, label %logic.end884, label %logic.rhs883 -logic.rhs883: + br label %logic.rend938 +logic.rend938: + br label %logic.end937 +logic.end937: + %t122 = phi i1 [ true, %logic.from935 ], [ %t121, %logic.rend938 ] + br label %logic.from939 +logic.from939: + br i1 %t122, label %logic.end941, label %logic.rhs940 +logic.rhs940: %t123 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t124 = load { ptr, i64, i64 }, ptr %t123 store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.503, i64 4, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.523, i64 4, i64 0 }, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br label %logic.rend885 -logic.rend885: - br label %logic.end884 -logic.end884: - %t129 = phi i1 [ true, %logic.from882 ], [ %t128, %logic.rend885 ] - br i1 %t129, label %then886, label %endif888 -then886: + br label %logic.rend942 +logic.rend942: + br label %logic.end941 +logic.end941: + %t129 = phi i1 [ true, %logic.from939 ], [ %t128, %logic.rend942 ] + br i1 %t129, label %then943, label %endif945 +then943: %t130 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 %t132 = load i64, ptr %t131 %t133 = icmp sgt i64 %t132, 0 - br i1 %t133, label %then889, label %endif891 -then889: + br i1 %t133, label %then946, label %endif948 +then946: %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t135 = load { ptr, i64, i64 }, ptr %t134 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.504, i64 1, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.524, i64 1, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 @@ -11959,24 +13390,24 @@ then889: call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) %t145 = load { ptr, i64, i64 }, ptr %a142 ret { ptr, i64, i64 } %t145 -endif891: +endif948: %t146 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 %t147 = load { ptr, i64, i64 }, ptr %t146 store { ptr, i64, i64 } %t147, ptr %a148 call void @finch_str_copy(ptr %a149, ptr %a148) %t150 = load { ptr, i64, i64 }, ptr %a149 ret { ptr, i64, i64 } %t150 -endif888: +endif945: %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t152 = load { ptr, i64, i64 }, ptr %t151 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.505, i64 4, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.525, i64 4, i64 0 }, ptr %a154 %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) %t156 = icmp ne i32 %t155, 0 - br i1 %t156, label %then892, label %endif894 -then892: - ret { ptr, i64, i64 } { ptr @.str.506, i64 7, i64 0 } -endif894: + br i1 %t156, label %then949, label %endif951 +then949: + ret { ptr, i64, i64 } { ptr @.str.526, i64 7, i64 0 } +endif951: %t157 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t158 = load { ptr, i64, i64 }, ptr %t157 store { ptr, i64, i64 } %t158, ptr %a159 @@ -12015,15 +13446,15 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic895, label %ok896 -panic895: - call void @finch_panic(ptr @.str.507, i64 14, ptr @.str.508) + br i1 %t5, label %panic952, label %ok953 +panic952: + call void @finch_panic(ptr @.str.527, i64 14, ptr @.str.528) unreachable -ok896: +ok953: %t6 = getelementptr inbounds %S.parser.Parser, ptr %t4, i32 0, i32 4 %t7 = load { ptr, i64, i64 }, ptr %t6 store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.509, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 @@ -12035,7 +13466,7 @@ ok896: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.510, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.530, i64 1, i64 0 }, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 %t24 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 @@ -12047,7 +13478,7 @@ ok896: call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t31, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.511, i64 9, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.531, i64 9, i64 0 }, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 %t36 = load { ptr, i64, i64 }, ptr %a3 @@ -12059,9 +13490,9 @@ ok896: %t42 = trunc i64 %t41 to i32 %t43 = extractvalue { ptr, i64, i64 } %t40, 0 %t44 = icmp eq ptr %t43, null - %t45 = select i1 %t44, ptr @.str.512, ptr %t43 - %t46 = call i32 (ptr, ...) @printf(ptr @.str.513, i32 %t42, ptr %t45) - %t47 = call i32 (ptr, ...) @printf(ptr @.str.514) + %t45 = select i1 %t44, ptr @.str.532, ptr %t43 + %t46 = call i32 (ptr, ...) @printf(ptr @.str.533, i32 %t42, ptr %t45) + %t47 = call i32 (ptr, ...) @printf(ptr @.str.534) %t48 = trunc i64 1 to i32 %t49 = call i32 @fflush(ptr null) call void @exit(i32 %t48) @@ -12076,29 +13507,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic897, label %ok898 -panic897: - call void @finch_panic(ptr @.str.515, i64 19, ptr @.str.516) + br i1 %t3, label %panic954, label %ok955 +panic954: + call void @finch_panic(ptr @.str.535, i64 19, ptr @.str.536) unreachable -ok898: +ok955: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic899, label %ok900 -panic899: - call void @finch_panic(ptr @.str.517, i64 19, ptr @.str.518) + br i1 %t6, label %panic956, label %ok957 +panic956: + call void @finch_panic(ptr @.str.537, i64 19, ptr @.str.538) unreachable -ok900: +ok957: %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 %t8 = load i64, ptr %t7 %t9 = load { ptr, i64, i64 }, ptr %t4 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range901, label %inrange902 -range901: - call void @finch_panic_index(ptr @.str.519, i64 19, i64 %t8, i64 %t10) + br i1 %t11, label %range958, label %inrange959 +range958: + call void @finch_panic_index(ptr @.str.539, i64 19, i64 %t8, i64 %t10) unreachable -inrange902: +inrange959: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -12116,29 +13547,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic903, label %ok904 -panic903: - call void @finch_panic(ptr @.str.520, i64 23, ptr @.str.521) + br i1 %t3, label %panic960, label %ok961 +panic960: + call void @finch_panic(ptr @.str.540, i64 23, ptr @.str.541) unreachable -ok904: +ok961: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic905, label %ok906 -panic905: - call void @finch_panic(ptr @.str.522, i64 23, ptr @.str.523) + br i1 %t6, label %panic962, label %ok963 +panic962: + call void @finch_panic(ptr @.str.542, i64 23, ptr @.str.543) unreachable -ok906: +ok963: %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 %t8 = load i64, ptr %t7 %t9 = load { ptr, i64, i64 }, ptr %t4 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range907, label %inrange908 -range907: - call void @finch_panic_index(ptr @.str.524, i64 23, i64 %t8, i64 %t10) + br i1 %t11, label %range964, label %inrange965 +range964: + call void @finch_panic_index(ptr @.str.544, i64 23, i64 %t8, i64 %t10) unreachable -inrange908: +inrange965: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i32 0, i32 0 @@ -12160,11 +13591,11 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.525, i64 27, ptr @.str.526) + br i1 %t4, label %panic966, label %ok967 +panic966: + call void @finch_panic(ptr @.str.545, i64 27, ptr @.str.546) unreachable -ok910: +ok967: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = load i64, ptr %a2 @@ -12173,48 +13604,48 @@ ok910: %t10 = load i64, ptr %a9 %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.527, i64 28, ptr @.str.528) + br i1 %t12, label %panic968, label %ok969 +panic968: + call void @finch_panic(ptr @.str.547, i64 28, ptr @.str.548) unreachable -ok912: +ok969: %t13 = getelementptr inbounds %S.parser.Parser, ptr %t11, i32 0, i32 0 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = icmp sge i64 %t10, %t15 - br i1 %t16, label %then913, label %endif915 -then913: + br i1 %t16, label %then970, label %endif972 +then970: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic916, label %ok917 -panic916: - call void @finch_panic(ptr @.str.529, i64 29, ptr @.str.530) + br i1 %t18, label %panic973, label %ok974 +panic973: + call void @finch_panic(ptr @.str.549, i64 29, ptr @.str.550) unreachable -ok917: +ok974: %t19 = getelementptr inbounds %S.parser.Parser, ptr %t17, i32 0, i32 0 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 %t21 = load i64, ptr %t20 %t22 = sub i64 %t21, 1 store i64 %t22, ptr %a9 - br label %endif915 -endif915: + br label %endif972 +endif972: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic918, label %ok919 -panic918: - call void @finch_panic(ptr @.str.531, i64 31, ptr @.str.532) + br i1 %t24, label %panic975, label %ok976 +panic975: + call void @finch_panic(ptr @.str.551, i64 31, ptr @.str.552) unreachable -ok919: +ok976: %t25 = getelementptr inbounds %S.parser.Parser, ptr %t23, i32 0, i32 0 %t26 = load i64, ptr %a9 %t27 = load { ptr, i64, i64 }, ptr %t25 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range920, label %inrange921 -range920: - call void @finch_panic_index(ptr @.str.533, i64 31, i64 %t26, i64 %t28) + br i1 %t29, label %range977, label %inrange978 +range977: + call void @finch_panic_index(ptr @.str.553, i64 31, i64 %t26, i64 %t28) unreachable -inrange921: +inrange978: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.lexer.Token, ptr %t30, i64 %t26 %t32 = getelementptr inbounds %S.lexer.Token, ptr %t31, i32 0, i32 0 @@ -12235,29 +13666,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic922, label %ok923 -panic922: - call void @finch_panic(ptr @.str.534, i64 35, ptr @.str.535) + br i1 %t4, label %panic979, label %ok980 +panic979: + call void @finch_panic(ptr @.str.554, i64 35, ptr @.str.555) unreachable -ok923: +ok980: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic924, label %ok925 -panic924: - call void @finch_panic(ptr @.str.536, i64 35, ptr @.str.537) + br i1 %t7, label %panic981, label %ok982 +panic981: + call void @finch_panic(ptr @.str.556, i64 35, ptr @.str.557) unreachable -ok925: +ok982: %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 %t9 = load i64, ptr %t8 %t10 = load { ptr, i64, i64 }, ptr %t5 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range926, label %inrange927 -range926: - call void @finch_panic_index(ptr @.str.538, i64 35, i64 %t9, i64 %t11) + br i1 %t12, label %range983, label %inrange984 +range983: + call void @finch_panic_index(ptr @.str.558, i64 35, i64 %t9, i64 %t11) unreachable -inrange927: +inrange984: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 %t15 = getelementptr inbounds %S.lexer.Token, ptr %t14, i32 0, i32 0 @@ -12281,29 +13712,29 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic928, label %ok929 -panic928: - call void @finch_panic(ptr @.str.539, i64 39, ptr @.str.540) + br i1 %t3, label %panic985, label %ok986 +panic985: + call void @finch_panic(ptr @.str.559, i64 39, ptr @.str.560) unreachable -ok929: +ok986: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 0 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic930, label %ok931 -panic930: - call void @finch_panic(ptr @.str.541, i64 39, ptr @.str.542) + br i1 %t6, label %panic987, label %ok988 +panic987: + call void @finch_panic(ptr @.str.561, i64 39, ptr @.str.562) unreachable -ok931: +ok988: %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 1 %t8 = load i64, ptr %t7 %t9 = load { ptr, i64, i64 }, ptr %t4 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range932, label %inrange933 -range932: - call void @finch_panic_index(ptr @.str.543, i64 39, i64 %t8, i64 %t10) + br i1 %t11, label %range989, label %inrange990 +range989: + call void @finch_panic_index(ptr @.str.563, i64 39, i64 %t8, i64 %t10) unreachable -inrange933: +inrange990: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.lexer.Token, ptr %t12, i64 %t8 %t14 = load %S.lexer.Token, ptr %t13 @@ -12313,11 +13744,11 @@ inrange933: store %S.lexer.Token %t17, ptr %a18 %t19 = load ptr, ptr %a1 %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic934, label %ok935 -panic934: - call void @finch_panic(ptr @.str.544, i64 40, ptr @.str.545) + br i1 %t20, label %panic991, label %ok992 +panic991: + call void @finch_panic(ptr @.str.564, i64 40, ptr @.str.565) unreachable -ok935: +ok992: %t21 = getelementptr inbounds %S.parser.Parser, ptr %t19, i32 0, i32 1 %t22 = load i64, ptr %t21 %t23 = add i64 %t22, 1 @@ -12338,21 +13769,21 @@ entry: %t3 = load ptr, ptr %a1 %t4 = load { ptr, i64, i64 }, ptr %a2 %t5 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } %t4) - br i1 %t5, label %then936, label %endif938 -then936: + br i1 %t5, label %then993, label %endif995 +then993: %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic939, label %ok940 -panic939: - call void @finch_panic(ptr @.str.546, i64 46, ptr @.str.547) + br i1 %t7, label %panic996, label %ok997 +panic996: + call void @finch_panic(ptr @.str.566, i64 46, ptr @.str.567) unreachable -ok940: +ok997: %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 %t9 = load i64, ptr %t8 %t10 = add i64 %t9, 1 store i64 %t10, ptr %t8 ret i1 true -endif938: +endif995: ret i1 false } @@ -12387,86 +13818,86 @@ entry: %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.548, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.568, i64 5, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then941, label %endif943 -then941: + br i1 %t7, label %then998, label %endif1000 +then998: %t8 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 1 %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } { ptr @.str.549, i64 1, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.569, i64 1, i64 0 }, ptr %a11 store { ptr, i64, i64 } %t9, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.550, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.570, i64 1, i64 0 }, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 ret { ptr, i64, i64 } %t17 -endif943: +endif1000: %t18 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t19 = load { ptr, i64, i64 }, ptr %t18 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.551, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.571, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then944, label %endif946 -then944: - ret { ptr, i64, i64 } { ptr @.str.552, i64 11, i64 0 } -endif946: + br i1 %t23, label %then1001, label %endif1003 +then1001: + ret { ptr, i64, i64 } { ptr @.str.572, i64 11, i64 0 } +endif1003: %t24 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t25 = load { ptr, i64, i64 }, ptr %t24 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.553, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.573, i64 3, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.from947 -logic.from947: - br i1 %t29, label %logic.end949, label %logic.rhs948 -logic.rhs948: + br label %logic.from1004 +logic.from1004: + br i1 %t29, label %logic.end1006, label %logic.rhs1005 +logic.rhs1005: %t30 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t31 = load { ptr, i64, i64 }, ptr %t30 store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.554, i64 5, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.574, i64 5, i64 0 }, ptr %a33 %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) %t35 = icmp ne i32 %t34, 0 - br label %logic.rend950 -logic.rend950: - br label %logic.end949 -logic.end949: - %t36 = phi i1 [ true, %logic.from947 ], [ %t35, %logic.rend950 ] - br i1 %t36, label %then951, label %endif953 -then951: - ret { ptr, i64, i64 } { ptr @.str.555, i64 8, i64 0 } -endif953: + br label %logic.rend1007 +logic.rend1007: + br label %logic.end1006 +logic.end1006: + %t36 = phi i1 [ true, %logic.from1004 ], [ %t35, %logic.rend1007 ] + br i1 %t36, label %then1008, label %endif1010 +then1008: + ret { ptr, i64, i64 } { ptr @.str.575, i64 8, i64 0 } +endif1010: %t37 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t38 = load { ptr, i64, i64 }, ptr %t37 store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.556, i64 6, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.576, i64 6, i64 0 }, ptr %a40 %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) %t42 = icmp ne i32 %t41, 0 - br i1 %t42, label %then954, label %endif956 -then954: - ret { ptr, i64, i64 } { ptr @.str.557, i64 8, i64 0 } -endif956: + br i1 %t42, label %then1011, label %endif1013 +then1011: + ret { ptr, i64, i64 } { ptr @.str.577, i64 8, i64 0 } +endif1013: %t43 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t44 = load { ptr, i64, i64 }, ptr %t43 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.558, i64 4, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.578, i64 4, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br i1 %t48, label %then957, label %endif959 -then957: - ret { ptr, i64, i64 } { ptr @.str.559, i64 6, i64 0 } -endif959: + br i1 %t48, label %then1014, label %endif1016 +then1014: + ret { ptr, i64, i64 } { ptr @.str.579, i64 6, i64 0 } +endif1016: %t49 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } { ptr @.str.560, i64 1, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.580, i64 1, i64 0 }, ptr %a52 store { ptr, i64, i64 } %t50, ptr %a53 call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) %t54 = load { ptr, i64, i64 }, ptr %a51 store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.561, i64 1, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.581, i64 1, i64 0 }, ptr %a57 call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) %t58 = load { ptr, i64, i64 }, ptr %a55 ret { ptr, i64, i64 } %t58 @@ -12493,18 +13924,18 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %a2 %t6 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } %t5) %t7 = xor i1 %t6, true - br i1 %t7, label %then960, label %endif962 -then960: + br i1 %t7, label %then1017, label %endif1019 +then1017: %t8 = load ptr, ptr %a1 %t9 = load ptr, ptr %a1 %t10 = call %S.lexer.Token @finch.parser.cur(ptr %t9) %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.562, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.582, i64 9, i64 0 }, ptr %a13 store { ptr, i64, i64 } %t11, ptr %a14 call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.563, i64 8, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.583, i64 8, i64 0 }, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 %t20 = load ptr, ptr %a1 @@ -12515,8 +13946,8 @@ then960: call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) %t26 = load { ptr, i64, i64 }, ptr %a23 call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t26) - br label %endif962 -endif962: + br label %endif1019 +endif1019: %t27 = load ptr, ptr %a1 %t28 = call %S.lexer.Token @finch.parser.next(ptr %t27) ret %S.lexer.Token %t28 @@ -12528,53 +13959,53 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic963, label %ok964 -panic963: - call void @finch_panic(ptr @.str.564, i64 79, ptr @.str.565) + br i1 %t3, label %panic1020, label %ok1021 +panic1020: + call void @finch_panic(ptr @.str.584, i64 79, ptr @.str.585) unreachable -ok964: +ok1021: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 2 %t5 = load i64, ptr %t4 %t6 = icmp sgt i64 %t5, 0 - br label %logic.from965 -logic.from965: - br i1 %t6, label %logic.end967, label %logic.rhs966 -logic.rhs966: + br label %logic.from1022 +logic.from1022: + br i1 %t6, label %logic.end1024, label %logic.rhs1023 +logic.rhs1023: %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic968, label %ok969 -panic968: - call void @finch_panic(ptr @.str.566, i64 79, ptr @.str.567) + br i1 %t8, label %panic1025, label %ok1026 +panic1025: + call void @finch_panic(ptr @.str.586, i64 79, ptr @.str.587) unreachable -ok969: +ok1026: %t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 0 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic970, label %ok971 -panic970: - call void @finch_panic(ptr @.str.568, i64 79, ptr @.str.569) + br i1 %t11, label %panic1027, label %ok1028 +panic1027: + call void @finch_panic(ptr @.str.588, i64 79, ptr @.str.589) unreachable -ok971: +ok1028: %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = load { ptr, i64, i64 }, ptr %t9 %t15 = extractvalue { ptr, i64, i64 } %t14, 1 %t16 = icmp uge i64 %t13, %t15 - br i1 %t16, label %range972, label %inrange973 -range972: - call void @finch_panic_index(ptr @.str.570, i64 79, i64 %t13, i64 %t15) + br i1 %t16, label %range1029, label %inrange1030 +range1029: + call void @finch_panic_index(ptr @.str.590, i64 79, i64 %t13, i64 %t15) unreachable -inrange973: +inrange1030: %t17 = extractvalue { ptr, i64, i64 } %t14, 0 %t18 = getelementptr inbounds %S.lexer.Token, ptr %t17, i64 %t13 %t19 = getelementptr inbounds %S.lexer.Token, ptr %t18, i32 0, i32 4 %t20 = load i1, ptr %t19 %t21 = xor i1 %t20, true - br label %logic.rend974 -logic.rend974: - br label %logic.end967 -logic.end967: - %t22 = phi i1 [ true, %logic.from965 ], [ %t21, %logic.rend974 ] + br label %logic.rend1031 +logic.rend1031: + br label %logic.end1024 +logic.end1024: + %t22 = phi i1 [ true, %logic.from1022 ], [ %t21, %logic.rend1031 ] ret i1 %t22 } @@ -12591,29 +14022,29 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic975, label %ok976 -panic975: - call void @finch_panic(ptr @.str.571, i64 83, ptr @.str.572) + br i1 %t4, label %panic1032, label %ok1033 +panic1032: + call void @finch_panic(ptr @.str.591, i64 83, ptr @.str.592) unreachable -ok976: +ok1033: %t5 = getelementptr inbounds %S.parser.Parser, ptr %t3, i32 0, i32 0 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic977, label %ok978 -panic977: - call void @finch_panic(ptr @.str.573, i64 83, ptr @.str.574) + br i1 %t7, label %panic1034, label %ok1035 +panic1034: + call void @finch_panic(ptr @.str.593, i64 83, ptr @.str.594) unreachable -ok978: +ok1035: %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 1 %t9 = load i64, ptr %t8 %t10 = load { ptr, i64, i64 }, ptr %t5 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range979, label %inrange980 -range979: - call void @finch_panic_index(ptr @.str.575, i64 83, i64 %t9, i64 %t11) + br i1 %t12, label %range1036, label %inrange1037 +range1036: + call void @finch_panic_index(ptr @.str.595, i64 83, i64 %t9, i64 %t11) unreachable -inrange980: +inrange1037: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.lexer.Token, ptr %t13, i64 %t9 %t15 = load %S.lexer.Token, ptr %t14 @@ -12634,11 +14065,11 @@ inrange980: %t30 = insertvalue %S.ast.Node %t27, i64 %t29, 12 %t31 = load ptr, ptr %a1 %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic981, label %ok982 -panic981: - call void @finch_panic(ptr @.str.576, i64 84, ptr @.str.577) + br i1 %t32, label %panic1038, label %ok1039 +panic1038: + call void @finch_panic(ptr @.str.596, i64 84, ptr @.str.597) unreachable -ok982: +ok1039: %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 %t34 = load i64, ptr %t33 %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 @@ -12657,37 +14088,37 @@ entry: %t2 = mul i64 16, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.578, i64 3, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.598, i64 3, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.579, i64 5, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.599, i64 5, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.580, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.600, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.581, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.601, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.602, i64 3, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.583, i64 3, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.603, i64 3, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.584, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.604, i64 2, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.585, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.605, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.586, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.606, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.587, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.588, i64 2, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.608, i64 2, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.589, i64 3, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.590, i64 3, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.610, i64 3, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.591, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.592, i64 3, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.593, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.613, i64 3, i64 0 }, ptr %t19 %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 @@ -12698,27 +14129,27 @@ entry: %t27 = load i64, ptr %t24 %t28 = load ptr, ptr %a23 store i64 0, ptr %a29 - br label %find.cond983 -find.cond983: + br label %find.cond1040 +find.cond1040: %t30 = load i64, ptr %a29 %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body984, label %find.end987 -find.body984: + br i1 %t31, label %find.body1041, label %find.end1044 +find.body1041: %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t30 %t33 = load { ptr, i64, i64 }, ptr %t32 store { ptr, i64, i64 } %t33, ptr %a34 store { ptr, i64, i64 } %t25, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %find.hit985, label %find.next986 -find.hit985: + br i1 %t37, label %find.hit1042, label %find.next1043 +find.hit1042: store i64 %t30, ptr %a26 - br label %find.end987 -find.next986: + br label %find.end1044 +find.next1043: %t38 = add i64 %t30, 1 store i64 %t38, ptr %a29 - br label %find.cond983 -find.end987: + br label %find.cond1040 +find.end1044: %t39 = load i64, ptr %a26 %t40 = icmp sge i64 %t39, 0 ret i1 %t40 @@ -12761,38 +14192,38 @@ entry: %a144 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.594, i64 1, i64 0 }) - br i1 %t3, label %then988, label %endif990 -then988: + %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.614, i64 1, i64 0 }) + br i1 %t3, label %then1045, label %endif1047 +then1045: %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.595, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.596, i64 36, i64 0 }) + %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.615, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.616, i64 36, i64 0 }) %t6 = load ptr, ptr %a1 %t7 = call %S.ast.Type @finch.parser.parseType(ptr %t6) %t8 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t7) ret %S.ast.Type %t8 -endif990: +endif1047: %t9 = load ptr, ptr %a1 - %t10 = call i1 @finch.parser.at(ptr %t9, { ptr, i64, i64 } { ptr @.str.597, i64 5, i64 0 }) + %t10 = call i1 @finch.parser.at(ptr %t9, { ptr, i64, i64 } { ptr @.str.617, i64 5, i64 0 }) %t11 = xor i1 %t10, true - br i1 %t11, label %then991, label %endif993 -then991: + br i1 %t11, label %then1048, label %endif1050 +then1048: %t12 = load ptr, ptr %a1 %t13 = load ptr, ptr %a1 %t14 = call %S.lexer.Token @finch.parser.cur(ptr %t13) %t15 = load ptr, ptr %a1 %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) %t17 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t16) - store { ptr, i64, i64 } { ptr @.str.598, i64 11, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.618, i64 11, i64 0 }, ptr %a19 store { ptr, i64, i64 } %t17, ptr %a20 call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.599, i64 56, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.619, i64 56, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t25) - br label %endif993 -endif993: + br label %endif1050 +endif1050: %t26 = load ptr, ptr %a1 %t27 = call %S.lexer.Token @finch.parser.next(ptr %t26) %t28 = extractvalue %S.lexer.Token %t27, 1 @@ -12802,91 +14233,91 @@ endif993: store { ptr, i64, i64 } %t31, ptr %a32 %t33 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.600, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br label %logic.from994 -logic.from994: - br i1 %t37, label %logic.rhs995, label %logic.end996 -logic.rhs995: + br label %logic.from1051 +logic.from1051: + br i1 %t37, label %logic.rhs1052, label %logic.end1053 +logic.rhs1052: %t38 = load ptr, ptr %a1 - %t39 = call i1 @finch.parser.at(ptr %t38, { ptr, i64, i64 } { ptr @.str.601, i64 1, i64 0 }) - br label %logic.rend997 -logic.rend997: - br label %logic.end996 -logic.end996: - %t40 = phi i1 [ false, %logic.from994 ], [ %t39, %logic.rend997 ] - br i1 %t40, label %then998, label %endif1000 -then998: + %t39 = call i1 @finch.parser.at(ptr %t38, { ptr, i64, i64 } { ptr @.str.621, i64 1, i64 0 }) + br label %logic.rend1054 +logic.rend1054: + br label %logic.end1053 +logic.end1053: + %t40 = phi i1 [ false, %logic.from1051 ], [ %t39, %logic.rend1054 ] + br i1 %t40, label %then1055, label %endif1057 +then1055: %t41 = load ptr, ptr %a1 %t42 = call %S.lexer.Token @finch.parser.next(ptr %t41) %t43 = load ptr, ptr %a1 %t44 = call %S.ast.Type @finch.parser.parseType(ptr %t43) store %S.ast.Type %t44, ptr %a45 %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.expect(ptr %t46, { ptr, i64, i64 } { ptr @.str.602, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.603, i64 39, i64 0 }) + %t47 = call %S.lexer.Token @finch.parser.expect(ptr %t46, { ptr, i64, i64 } { ptr @.str.622, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.623, i64 39, i64 0 }) %t48 = load %S.ast.Type, ptr %a45 %t49 = load ptr, ptr %a1 %t50 = call %S.ast.Type @finch.parser.parseType(ptr %t49) %t51 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t48, %S.ast.Type %t50) ret %S.ast.Type %t51 -endif1000: +endif1057: %t52 = load { ptr, i64, i64 }, ptr %a32 %t53 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t52) - br i1 %t53, label %then1001, label %endif1003 -then1001: + br i1 %t53, label %then1058, label %endif1060 +then1058: %t54 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.604, i64 3, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.624, i64 3, i64 0 }, ptr %a56 %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) %t58 = icmp ne i32 %t57, 0 - br label %logic.from1004 -logic.from1004: - br i1 %t58, label %logic.rhs1005, label %logic.end1006 -logic.rhs1005: + br label %logic.from1061 +logic.from1061: + br i1 %t58, label %logic.rhs1062, label %logic.end1063 +logic.rhs1062: %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.605, i64 1, i64 0 }) - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t61 = phi i1 [ false, %logic.from1004 ], [ %t60, %logic.rend1007 ] - br i1 %t61, label %then1008, label %endif1010 -then1008: + %t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.625, i64 1, i64 0 }) + br label %logic.rend1064 +logic.rend1064: + br label %logic.end1063 +logic.end1063: + %t61 = phi i1 [ false, %logic.from1061 ], [ %t60, %logic.rend1064 ] + br i1 %t61, label %then1065, label %endif1067 +then1065: %t62 = load ptr, ptr %a1 %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) %t64 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t63) store %S.ast.Type %t64, ptr %a65 %t66 = load ptr, ptr %a1 - %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.606, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.607, i64 3, i64 0 }) + %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.626, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.627, i64 3, i64 0 }) %t68 = load %S.ast.Type, ptr %a65 ret %S.ast.Type %t68 -endif1010: +endif1067: %t69 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.608, i64 3, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.628, i64 3, i64 0 }, ptr %a71 %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1011, label %endif1013 -then1011: - %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.609, i64 3, i64 0 }) + br i1 %t73, label %then1068, label %endif1070 +then1068: + %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }) ret %S.ast.Type %t74 -endif1013: +endif1070: %t75 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.610, i64 3, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.630, i64 3, i64 0 }, ptr %a77 %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) %t79 = icmp ne i32 %t78, 0 - br i1 %t79, label %then1014, label %endif1016 -then1014: - %t80 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.611, i64 5, i64 0 }) + br i1 %t79, label %then1071, label %endif1073 +then1071: + %t80 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.631, i64 5, i64 0 }) ret %S.ast.Type %t80 -endif1016: +endif1073: %t81 = load { ptr, i64, i64 }, ptr %a32 %t82 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t81) ret %S.ast.Type %t82 -endif1003: - %t83 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.612, i64 5, i64 0 }, 0 +endif1060: + %t83 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.632, i64 5, i64 0 }, 0 %t84 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t84, ptr %a85 call void @finch_str_copy(ptr %a86, ptr %a85) @@ -12894,24 +14325,24 @@ endif1003: %t88 = insertvalue %S.ast.Type %t83, { ptr, i64, i64 } %t87, 2 store %S.ast.Type %t88, ptr %a89 %t90 = load ptr, ptr %a1 - %t91 = call i1 @finch.parser.at(ptr %t90, { ptr, i64, i64 } { ptr @.str.613, i64 1, i64 0 }) - br label %logic.from1017 -logic.from1017: - br i1 %t91, label %logic.rhs1018, label %logic.end1019 -logic.rhs1018: + %t91 = call i1 @finch.parser.at(ptr %t90, { ptr, i64, i64 } { ptr @.str.633, i64 1, i64 0 }) + br label %logic.from1074 +logic.from1074: + br i1 %t91, label %logic.rhs1075, label %logic.end1076 +logic.rhs1075: %t92 = load ptr, ptr %a1 %t93 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t92, i64 1) store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.614, i64 5, i64 0 }, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.634, i64 5, i64 0 }, ptr %a95 %t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95) %t97 = icmp ne i32 %t96, 0 - br label %logic.rend1020 -logic.rend1020: - br label %logic.end1019 -logic.end1019: - %t98 = phi i1 [ false, %logic.from1017 ], [ %t97, %logic.rend1020 ] - br i1 %t98, label %then1021, label %endif1023 -then1021: + br label %logic.rend1077 +logic.rend1077: + br label %logic.end1076 +logic.end1076: + %t98 = phi i1 [ false, %logic.from1074 ], [ %t97, %logic.rend1077 ] + br i1 %t98, label %then1078, label %endif1080 +then1078: %t99 = load ptr, ptr %a1 %t100 = call %S.lexer.Token @finch.parser.next(ptr %t99) %t101 = load { ptr, i64, i64 }, ptr %a32 @@ -12928,46 +14359,46 @@ then1021: %t111 = load { ptr, i64, i64 }, ptr %a110 %t112 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 2 store { ptr, i64, i64 } %t111, ptr %t112 - br label %endif1023 -endif1023: + br label %endif1080 +endif1080: %t113 = load ptr, ptr %a1 - %t114 = call i1 @finch.parser.at(ptr %t113, { ptr, i64, i64 } { ptr @.str.615, i64 1, i64 0 }) - br label %logic.from1024 -logic.from1024: - br i1 %t114, label %logic.rhs1025, label %logic.end1026 -logic.rhs1025: + %t114 = call i1 @finch.parser.at(ptr %t113, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }) + br label %logic.from1081 +logic.from1081: + br i1 %t114, label %logic.rhs1082, label %logic.end1083 +logic.rhs1082: %t115 = load ptr, ptr %a1 %t116 = call %S.lexer.Token @finch.parser.cur(ptr %t115) %t117 = extractvalue %S.lexer.Token %t116, 4 %t118 = xor i1 %t117, true - br label %logic.rend1027 -logic.rend1027: - br label %logic.end1026 -logic.end1026: - %t119 = phi i1 [ false, %logic.from1024 ], [ %t118, %logic.rend1027 ] - br label %logic.from1028 -logic.from1028: - br i1 %t119, label %logic.rhs1029, label %logic.end1030 -logic.rhs1029: + br label %logic.rend1084 +logic.rend1084: + br label %logic.end1083 +logic.end1083: + %t119 = phi i1 [ false, %logic.from1081 ], [ %t118, %logic.rend1084 ] + br label %logic.from1085 +logic.from1085: + br i1 %t119, label %logic.rhs1086, label %logic.end1087 +logic.rhs1086: %t120 = load ptr, ptr %a1 %t121 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t120, i64 1) store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.616, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.636, i64 1, i64 0 }, ptr %a123 %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) %t125 = icmp eq i32 %t124, 0 - br label %logic.rend1031 -logic.rend1031: - br label %logic.end1030 -logic.end1030: - %t126 = phi i1 [ false, %logic.from1028 ], [ %t125, %logic.rend1031 ] - br i1 %t126, label %then1032, label %endif1034 -then1032: + br label %logic.rend1088 +logic.rend1088: + br label %logic.end1087 +logic.end1087: + %t126 = phi i1 [ false, %logic.from1085 ], [ %t125, %logic.rend1088 ] + br i1 %t126, label %then1089, label %endif1091 +then1089: %t127 = load ptr, ptr %a1 %t128 = call %S.lexer.Token @finch.parser.next(ptr %t127) - br label %while.cond1035 -while.cond1035: - br label %while.body1036 -while.body1036: + br label %while.cond1092 +while.cond1092: + br label %while.body1093 +while.body1093: %t129 = getelementptr inbounds %S.ast.Type, ptr %a89, i32 0, i32 1 %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 %t131 = load ptr, ptr %a1 @@ -12980,18 +14411,18 @@ while.body1036: store %S.ast.Type %t132, ptr %t136 store i64 %t134, ptr %t130 %t137 = load ptr, ptr %a1 - %t138 = call i1 @finch.parser.accept(ptr %t137, { ptr, i64, i64 } { ptr @.str.617, i64 1, i64 0 }) + %t138 = call i1 @finch.parser.accept(ptr %t137, { ptr, i64, i64 } { ptr @.str.637, i64 1, i64 0 }) %t139 = xor i1 %t138, true - br i1 %t139, label %then1038, label %endif1040 -then1038: - br label %while.end1037 -endif1040: - br label %while.cond1035 -while.end1037: + br i1 %t139, label %then1095, label %endif1097 +then1095: + br label %while.end1094 +endif1097: + br label %while.cond1092 +while.end1094: %t140 = load ptr, ptr %a1 - %t141 = call %S.lexer.Token @finch.parser.expect(ptr %t140, { ptr, i64, i64 } { ptr @.str.618, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.619, i64 28, i64 0 }) - br label %endif1034 -endif1034: + %t141 = call %S.lexer.Token @finch.parser.expect(ptr %t140, { ptr, i64, i64 } { ptr @.str.638, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.639, i64 28, i64 0 }) + br label %endif1091 +endif1091: %t142 = load %S.ast.Type, ptr %a89 store %S.ast.Type %t142, ptr %a143 call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) @@ -13021,87 +14452,87 @@ entry: %a105 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.620, i64 5, i64 0 }) + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) %t4 = xor i1 %t3, true - br label %logic.from1041 -logic.from1041: - br i1 %t4, label %logic.end1043, label %logic.rhs1042 -logic.rhs1042: + br label %logic.from1098 +logic.from1098: + br i1 %t4, label %logic.end1100, label %logic.rhs1099 +logic.rhs1099: %t5 = load ptr, ptr %a1 %t6 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t5, i64 1) store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.621, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.641, i64 1, i64 0 }, ptr %a8 %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) %t10 = icmp eq i32 %t9, 0 - br label %logic.rend1044 -logic.rend1044: - br label %logic.end1043 -logic.end1043: - %t11 = phi i1 [ true, %logic.from1041 ], [ %t10, %logic.rend1044 ] - br label %logic.from1045 -logic.from1045: - br i1 %t11, label %logic.end1047, label %logic.rhs1046 -logic.rhs1046: + br label %logic.rend1101 +logic.rend1101: + br label %logic.end1100 +logic.end1100: + %t11 = phi i1 [ true, %logic.from1098 ], [ %t10, %logic.rend1101 ] + br label %logic.from1102 +logic.from1102: + br i1 %t11, label %logic.end1104, label %logic.rhs1103 +logic.rhs1103: %t12 = load ptr, ptr %a1 %t13 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t12, i64 2) store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.622, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp ne i32 %t16, 0 - br label %logic.rend1048 -logic.rend1048: - br label %logic.end1047 -logic.end1047: - %t18 = phi i1 [ true, %logic.from1045 ], [ %t17, %logic.rend1048 ] - br i1 %t18, label %then1049, label %endif1051 -then1049: + br label %logic.rend1105 +logic.rend1105: + br label %logic.end1104 +logic.end1104: + %t18 = phi i1 [ true, %logic.from1102 ], [ %t17, %logic.rend1105 ] + br i1 %t18, label %then1106, label %endif1108 +then1106: ret i1 false -endif1051: +endif1108: store i64 0, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.623, i64 148, ptr @.str.624) + br i1 %t21, label %panic1109, label %ok1110 +panic1109: + call void @finch_panic(ptr @.str.643, i64 148, ptr @.str.644) unreachable -ok1053: +ok1110: %t22 = getelementptr inbounds %S.parser.Parser, ptr %t20, i32 0, i32 1 %t23 = load i64, ptr %t22 %t24 = add i64 %t23, 1 store i64 %t24, ptr %a25 - br label %while.cond1054 -while.cond1054: + br label %while.cond1111 +while.cond1111: %t26 = load i64, ptr %a25 %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1057, label %ok1058 -panic1057: - call void @finch_panic(ptr @.str.625, i64 149, ptr @.str.626) + br i1 %t28, label %panic1114, label %ok1115 +panic1114: + call void @finch_panic(ptr @.str.645, i64 149, ptr @.str.646) unreachable -ok1058: +ok1115: %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 0 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 %t31 = load i64, ptr %t30 %t32 = icmp slt i64 %t26, %t31 - br i1 %t32, label %while.body1055, label %while.end1056 -while.body1055: + br i1 %t32, label %while.body1112, label %while.end1113 +while.body1112: %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1059, label %ok1060 -panic1059: - call void @finch_panic(ptr @.str.627, i64 150, ptr @.str.628) + br i1 %t34, label %panic1116, label %ok1117 +panic1116: + call void @finch_panic(ptr @.str.647, i64 150, ptr @.str.648) unreachable -ok1060: +ok1117: %t35 = getelementptr inbounds %S.parser.Parser, ptr %t33, i32 0, i32 0 %t36 = load i64, ptr %a25 %t37 = load { ptr, i64, i64 }, ptr %t35 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range1061, label %inrange1062 -range1061: - call void @finch_panic_index(ptr @.str.629, i64 150, i64 %t36, i64 %t38) + br i1 %t39, label %range1118, label %inrange1119 +range1118: + call void @finch_panic_index(ptr @.str.649, i64 150, i64 %t36, i64 %t38) unreachable -inrange1062: +inrange1119: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.lexer.Token, ptr %t40, i64 %t36 %t42 = getelementptr inbounds %S.lexer.Token, ptr %t41, i32 0, i32 0 @@ -13112,173 +14543,173 @@ inrange1062: store { ptr, i64, i64 } %t46, ptr %a47 %t48 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.650, i64 1, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br i1 %t52, label %then1063, label %else1064 -then1063: + br i1 %t52, label %then1120, label %else1121 +then1120: %t53 = load i64, ptr %a19 %t54 = add i64 %t53, 1 store i64 %t54, ptr %a19 - br label %endif1065 -else1064: + br label %endif1122 +else1121: %t55 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a57 %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %then1066, label %else1067 -then1066: + br i1 %t59, label %then1123, label %else1124 +then1123: %t60 = load i64, ptr %a19 %t61 = sub i64 %t60, 1 store i64 %t61, ptr %a19 %t62 = load i64, ptr %a19 %t63 = icmp eq i64 %t62, 0 - br i1 %t63, label %then1069, label %endif1071 -then1069: + br i1 %t63, label %then1126, label %endif1128 +then1126: %t64 = load i64, ptr %a25 %t65 = add i64 %t64, 1 %t66 = load ptr, ptr %a1 %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic1072, label %ok1073 -panic1072: - call void @finch_panic(ptr @.str.632, i64 156, ptr @.str.633) + br i1 %t67, label %panic1129, label %ok1130 +panic1129: + call void @finch_panic(ptr @.str.652, i64 156, ptr @.str.653) unreachable -ok1073: +ok1130: %t68 = getelementptr inbounds %S.parser.Parser, ptr %t66, i32 0, i32 0 %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 %t70 = load i64, ptr %t69 %t71 = icmp slt i64 %t65, %t70 - br label %logic.from1074 -logic.from1074: - br i1 %t71, label %logic.rhs1075, label %logic.end1076 -logic.rhs1075: + br label %logic.from1131 +logic.from1131: + br i1 %t71, label %logic.rhs1132, label %logic.end1133 +logic.rhs1132: %t72 = load ptr, ptr %a1 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic1077, label %ok1078 -panic1077: - call void @finch_panic(ptr @.str.634, i64 156, ptr @.str.635) + br i1 %t73, label %panic1134, label %ok1135 +panic1134: + call void @finch_panic(ptr @.str.654, i64 156, ptr @.str.655) unreachable -ok1078: +ok1135: %t74 = getelementptr inbounds %S.parser.Parser, ptr %t72, i32 0, i32 0 %t75 = load i64, ptr %a25 %t76 = add i64 %t75, 1 %t77 = load { ptr, i64, i64 }, ptr %t74 %t78 = extractvalue { ptr, i64, i64 } %t77, 1 %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range1079, label %inrange1080 -range1079: - call void @finch_panic_index(ptr @.str.636, i64 156, i64 %t76, i64 %t78) + br i1 %t79, label %range1136, label %inrange1137 +range1136: + call void @finch_panic_index(ptr @.str.656, i64 156, i64 %t76, i64 %t78) unreachable -inrange1080: +inrange1137: %t80 = extractvalue { ptr, i64, i64 } %t77, 0 %t81 = getelementptr inbounds %S.lexer.Token, ptr %t80, i64 %t76 %t82 = getelementptr inbounds %S.lexer.Token, ptr %t81, i32 0, i32 0 %t83 = load { ptr, i64, i64 }, ptr %t82 store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.637, i64 5, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.657, i64 5, i64 0 }, ptr %a85 %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) %t87 = icmp ne i32 %t86, 0 - br label %logic.rend1081 -logic.rend1081: - br label %logic.end1076 -logic.end1076: - %t88 = phi i1 [ false, %logic.from1074 ], [ %t87, %logic.rend1081 ] - br label %logic.from1082 -logic.from1082: - br i1 %t88, label %logic.rhs1083, label %logic.end1084 -logic.rhs1083: + br label %logic.rend1138 +logic.rend1138: + br label %logic.end1133 +logic.end1133: + %t88 = phi i1 [ false, %logic.from1131 ], [ %t87, %logic.rend1138 ] + br label %logic.from1139 +logic.from1139: + br i1 %t88, label %logic.rhs1140, label %logic.end1141 +logic.rhs1140: %t89 = load ptr, ptr %a1 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.638, i64 156, ptr @.str.639) + br i1 %t90, label %panic1142, label %ok1143 +panic1142: + call void @finch_panic(ptr @.str.658, i64 156, ptr @.str.659) unreachable -ok1086: +ok1143: %t91 = getelementptr inbounds %S.parser.Parser, ptr %t89, i32 0, i32 0 %t92 = load i64, ptr %a25 %t93 = add i64 %t92, 1 %t94 = load { ptr, i64, i64 }, ptr %t91 %t95 = extractvalue { ptr, i64, i64 } %t94, 1 %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range1087, label %inrange1088 -range1087: - call void @finch_panic_index(ptr @.str.640, i64 156, i64 %t93, i64 %t95) + br i1 %t96, label %range1144, label %inrange1145 +range1144: + call void @finch_panic_index(ptr @.str.660, i64 156, i64 %t93, i64 %t95) unreachable -inrange1088: +inrange1145: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 %t98 = getelementptr inbounds %S.lexer.Token, ptr %t97, i64 %t93 %t99 = getelementptr inbounds %S.lexer.Token, ptr %t98, i32 0, i32 4 %t100 = load i1, ptr %t99 %t101 = xor i1 %t100, true - br label %logic.rend1089 -logic.rend1089: - br label %logic.end1084 -logic.end1084: - %t102 = phi i1 [ false, %logic.from1082 ], [ %t101, %logic.rend1089 ] + br label %logic.rend1146 +logic.rend1146: + br label %logic.end1141 +logic.end1141: + %t102 = phi i1 [ false, %logic.from1139 ], [ %t101, %logic.rend1146 ] ret i1 %t102 -endif1071: - br label %endif1068 -else1067: +endif1128: + br label %endif1125 +else1124: %t103 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.641, i64 3, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.661, i64 3, i64 0 }, ptr %a105 %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) %t107 = icmp ne i32 %t106, 0 - br label %logic.from1090 -logic.from1090: - br i1 %t107, label %logic.end1092, label %logic.rhs1091 -logic.rhs1091: + br label %logic.from1147 +logic.from1147: + br i1 %t107, label %logic.end1149, label %logic.rhs1148 +logic.rhs1148: %t108 = load ptr, ptr %a1 %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic1093, label %ok1094 -panic1093: - call void @finch_panic(ptr @.str.642, i64 158, ptr @.str.643) + br i1 %t109, label %panic1150, label %ok1151 +panic1150: + call void @finch_panic(ptr @.str.662, i64 158, ptr @.str.663) unreachable -ok1094: +ok1151: %t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 0 %t111 = load i64, ptr %a25 %t112 = load { ptr, i64, i64 }, ptr %t110 %t113 = extractvalue { ptr, i64, i64 } %t112, 1 %t114 = icmp uge i64 %t111, %t113 - br i1 %t114, label %range1095, label %inrange1096 -range1095: - call void @finch_panic_index(ptr @.str.644, i64 158, i64 %t111, i64 %t113) + br i1 %t114, label %range1152, label %inrange1153 +range1152: + call void @finch_panic_index(ptr @.str.664, i64 158, i64 %t111, i64 %t113) unreachable -inrange1096: +inrange1153: %t115 = extractvalue { ptr, i64, i64 } %t112, 0 %t116 = getelementptr inbounds %S.lexer.Token, ptr %t115, i64 %t111 %t117 = getelementptr inbounds %S.lexer.Token, ptr %t116, i32 0, i32 4 %t118 = load i1, ptr %t117 - br label %logic.from1097 -logic.from1097: - br i1 %t118, label %logic.rhs1098, label %logic.end1099 -logic.rhs1098: + br label %logic.from1154 +logic.from1154: + br i1 %t118, label %logic.rhs1155, label %logic.end1156 +logic.rhs1155: %t119 = load i64, ptr %a19 %t120 = icmp eq i64 %t119, 0 - br label %logic.rend1100 -logic.rend1100: - br label %logic.end1099 -logic.end1099: - %t121 = phi i1 [ false, %logic.from1097 ], [ %t120, %logic.rend1100 ] - br label %logic.rend1101 -logic.rend1101: - br label %logic.end1092 -logic.end1092: - %t122 = phi i1 [ true, %logic.from1090 ], [ %t121, %logic.rend1101 ] - br i1 %t122, label %then1102, label %endif1104 -then1102: + br label %logic.rend1157 +logic.rend1157: + br label %logic.end1156 +logic.end1156: + %t121 = phi i1 [ false, %logic.from1154 ], [ %t120, %logic.rend1157 ] + br label %logic.rend1158 +logic.rend1158: + br label %logic.end1149 +logic.end1149: + %t122 = phi i1 [ true, %logic.from1147 ], [ %t121, %logic.rend1158 ] + br i1 %t122, label %then1159, label %endif1161 +then1159: ret i1 false -endif1104: - br label %endif1068 -endif1068: - br label %endif1065 -endif1065: +endif1161: + br label %endif1125 +endif1125: + br label %endif1122 +endif1122: %t123 = load i64, ptr %a25 %t124 = add i64 %t123, 1 store i64 %t124, ptr %a25 - br label %while.cond1054 -while.end1056: + br label %while.cond1111 +while.end1113: ret i1 false } @@ -13289,11 +14720,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1105, label %ok1106 -panic1105: - call void @finch_panic(ptr @.str.645, i64 168, ptr @.str.646) + br i1 %t3, label %panic1162, label %ok1163 +panic1162: + call void @finch_panic(ptr @.str.665, i64 168, ptr @.str.666) unreachable -ok1106: +ok1163: %t4 = getelementptr inbounds %S.parser.Parser, ptr %t2, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = sub i64 %t5, 1 @@ -13303,11 +14734,11 @@ ok1106: store i1 %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic1107, label %ok1108 -panic1107: - call void @finch_panic(ptr @.str.647, i64 170, ptr @.str.648) + br i1 %t11, label %panic1164, label %ok1165 +panic1164: + call void @finch_panic(ptr @.str.667, i64 170, ptr @.str.668) unreachable -ok1108: +ok1165: %t12 = getelementptr inbounds %S.parser.Parser, ptr %t10, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = add i64 %t13, 1 @@ -13340,112 +14771,112 @@ entry: %t2 = load ptr, ptr %a1 %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.649, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.669, i64 1, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp eq i32 %t6, 0 - br label %logic.from1109 -logic.from1109: - br i1 %t7, label %logic.end1111, label %logic.rhs1110 -logic.rhs1110: + br label %logic.from1166 +logic.from1166: + br i1 %t7, label %logic.end1168, label %logic.rhs1167 +logic.rhs1167: %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1112, label %ok1113 -panic1112: - call void @finch_panic(ptr @.str.650, i64 176, ptr @.str.651) + br i1 %t9, label %panic1169, label %ok1170 +panic1169: + call void @finch_panic(ptr @.str.670, i64 176, ptr @.str.671) unreachable -ok1113: +ok1170: %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 0 %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic1114, label %ok1115 -panic1114: - call void @finch_panic(ptr @.str.652, i64 176, ptr @.str.653) + br i1 %t12, label %panic1171, label %ok1172 +panic1171: + call void @finch_panic(ptr @.str.672, i64 176, ptr @.str.673) unreachable -ok1115: +ok1172: %t13 = getelementptr inbounds %S.parser.Parser, ptr %t11, i32 0, i32 1 %t14 = load i64, ptr %t13 %t15 = add i64 %t14, 1 %t16 = load { ptr, i64, i64 }, ptr %t10 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range1116, label %inrange1117 -range1116: - call void @finch_panic_index(ptr @.str.654, i64 176, i64 %t15, i64 %t17) + br i1 %t18, label %range1173, label %inrange1174 +range1173: + call void @finch_panic_index(ptr @.str.674, i64 176, i64 %t15, i64 %t17) unreachable -inrange1117: +inrange1174: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.lexer.Token, ptr %t19, i64 %t15 %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i32 0, i32 4 %t22 = load i1, ptr %t21 - br label %logic.rend1118 -logic.rend1118: - br label %logic.end1111 -logic.end1111: - %t23 = phi i1 [ true, %logic.from1109 ], [ %t22, %logic.rend1118 ] - br label %logic.from1119 -logic.from1119: - br i1 %t23, label %logic.end1121, label %logic.rhs1120 -logic.rhs1120: + br label %logic.rend1175 +logic.rend1175: + br label %logic.end1168 +logic.end1168: + %t23 = phi i1 [ true, %logic.from1166 ], [ %t22, %logic.rend1175 ] + br label %logic.from1176 +logic.from1176: + br i1 %t23, label %logic.end1178, label %logic.rhs1177 +logic.rhs1177: %t24 = load ptr, ptr %a1 %t25 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t24, i64 2) store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.655, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.675, i64 1, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend1122 -logic.rend1122: - br label %logic.end1121 -logic.end1121: - %t30 = phi i1 [ true, %logic.from1119 ], [ %t29, %logic.rend1122 ] - br i1 %t30, label %then1123, label %endif1125 -then1123: + br label %logic.rend1179 +logic.rend1179: + br label %logic.end1178 +logic.end1178: + %t30 = phi i1 [ true, %logic.from1176 ], [ %t29, %logic.rend1179 ] + br i1 %t30, label %then1180, label %endif1182 +then1180: ret i1 false -endif1125: +endif1182: store i64 0, ptr %a31 %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic1126, label %ok1127 -panic1126: - call void @finch_panic(ptr @.str.656, i64 180, ptr @.str.657) + br i1 %t33, label %panic1183, label %ok1184 +panic1183: + call void @finch_panic(ptr @.str.676, i64 180, ptr @.str.677) unreachable -ok1127: +ok1184: %t34 = getelementptr inbounds %S.parser.Parser, ptr %t32, i32 0, i32 1 %t35 = load i64, ptr %t34 %t36 = add i64 %t35, 1 store i64 %t36, ptr %a37 - br label %while.cond1128 -while.cond1128: + br label %while.cond1185 +while.cond1185: %t38 = load i64, ptr %a37 %t39 = load ptr, ptr %a1 %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic1131, label %ok1132 -panic1131: - call void @finch_panic(ptr @.str.658, i64 181, ptr @.str.659) + br i1 %t40, label %panic1188, label %ok1189 +panic1188: + call void @finch_panic(ptr @.str.678, i64 181, ptr @.str.679) unreachable -ok1132: +ok1189: %t41 = getelementptr inbounds %S.parser.Parser, ptr %t39, i32 0, i32 0 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 %t43 = load i64, ptr %t42 %t44 = icmp slt i64 %t38, %t43 - br i1 %t44, label %while.body1129, label %while.end1130 -while.body1129: + br i1 %t44, label %while.body1186, label %while.end1187 +while.body1186: %t45 = load ptr, ptr %a1 %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic1133, label %ok1134 -panic1133: - call void @finch_panic(ptr @.str.660, i64 182, ptr @.str.661) + br i1 %t46, label %panic1190, label %ok1191 +panic1190: + call void @finch_panic(ptr @.str.680, i64 182, ptr @.str.681) unreachable -ok1134: +ok1191: %t47 = getelementptr inbounds %S.parser.Parser, ptr %t45, i32 0, i32 0 %t48 = load i64, ptr %a37 %t49 = load { ptr, i64, i64 }, ptr %t47 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range1135, label %inrange1136 -range1135: - call void @finch_panic_index(ptr @.str.662, i64 182, i64 %t48, i64 %t50) + br i1 %t51, label %range1192, label %inrange1193 +range1192: + call void @finch_panic_index(ptr @.str.682, i64 182, i64 %t48, i64 %t50) unreachable -inrange1136: +inrange1193: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds %S.lexer.Token, ptr %t52, i64 %t48 %t54 = getelementptr inbounds %S.lexer.Token, ptr %t53, i32 0, i32 0 @@ -13456,162 +14887,162 @@ inrange1136: store { ptr, i64, i64 } %t58, ptr %a59 %t60 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.663, i64 1, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.683, i64 1, i64 0 }, ptr %a62 %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then1137, label %else1138 -then1137: + br i1 %t64, label %then1194, label %else1195 +then1194: %t65 = load i64, ptr %a31 %t66 = add i64 %t65, 1 store i64 %t66, ptr %a31 - br label %endif1139 -else1138: + br label %endif1196 +else1195: %t67 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.664, i64 1, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a69 %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then1140, label %else1141 -then1140: + br i1 %t71, label %then1197, label %else1198 +then1197: %t72 = load i64, ptr %a31 %t73 = sub i64 %t72, 1 store i64 %t73, ptr %a31 %t74 = load i64, ptr %a31 %t75 = icmp eq i64 %t74, 0 - br i1 %t75, label %then1143, label %endif1145 -then1143: + br i1 %t75, label %then1200, label %endif1202 +then1200: %t76 = load i64, ptr %a37 %t77 = add i64 %t76, 1 %t78 = load ptr, ptr %a1 %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic1146, label %ok1147 -panic1146: - call void @finch_panic(ptr @.str.665, i64 188, ptr @.str.666) + br i1 %t79, label %panic1203, label %ok1204 +panic1203: + call void @finch_panic(ptr @.str.685, i64 188, ptr @.str.686) unreachable -ok1147: +ok1204: %t80 = getelementptr inbounds %S.parser.Parser, ptr %t78, i32 0, i32 0 %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 %t82 = load i64, ptr %t81 %t83 = icmp slt i64 %t77, %t82 - br label %logic.from1148 -logic.from1148: - br i1 %t83, label %logic.rhs1149, label %logic.end1150 -logic.rhs1149: + br label %logic.from1205 +logic.from1205: + br i1 %t83, label %logic.rhs1206, label %logic.end1207 +logic.rhs1206: %t84 = load ptr, ptr %a1 %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1151, label %ok1152 -panic1151: - call void @finch_panic(ptr @.str.667, i64 188, ptr @.str.668) + br i1 %t85, label %panic1208, label %ok1209 +panic1208: + call void @finch_panic(ptr @.str.687, i64 188, ptr @.str.688) unreachable -ok1152: +ok1209: %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 0 %t87 = load i64, ptr %a37 %t88 = add i64 %t87, 1 %t89 = load { ptr, i64, i64 }, ptr %t86 %t90 = extractvalue { ptr, i64, i64 } %t89, 1 %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range1153, label %inrange1154 -range1153: - call void @finch_panic_index(ptr @.str.669, i64 188, i64 %t88, i64 %t90) + br i1 %t91, label %range1210, label %inrange1211 +range1210: + call void @finch_panic_index(ptr @.str.689, i64 188, i64 %t88, i64 %t90) unreachable -inrange1154: +inrange1211: %t92 = extractvalue { ptr, i64, i64 } %t89, 0 %t93 = getelementptr inbounds %S.lexer.Token, ptr %t92, i64 %t88 %t94 = getelementptr inbounds %S.lexer.Token, ptr %t93, i32 0, i32 0 %t95 = load { ptr, i64, i64 }, ptr %t94 store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.670, i64 1, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.690, i64 1, i64 0 }, ptr %a97 %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) %t99 = icmp ne i32 %t98, 0 - br label %logic.rend1155 -logic.rend1155: - br label %logic.end1150 -logic.end1150: - %t100 = phi i1 [ false, %logic.from1148 ], [ %t99, %logic.rend1155 ] - br label %logic.from1156 -logic.from1156: - br i1 %t100, label %logic.rhs1157, label %logic.end1158 -logic.rhs1157: + br label %logic.rend1212 +logic.rend1212: + br label %logic.end1207 +logic.end1207: + %t100 = phi i1 [ false, %logic.from1205 ], [ %t99, %logic.rend1212 ] + br label %logic.from1213 +logic.from1213: + br i1 %t100, label %logic.rhs1214, label %logic.end1215 +logic.rhs1214: %t101 = load ptr, ptr %a1 %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic1159, label %ok1160 -panic1159: - call void @finch_panic(ptr @.str.671, i64 188, ptr @.str.672) + br i1 %t102, label %panic1216, label %ok1217 +panic1216: + call void @finch_panic(ptr @.str.691, i64 188, ptr @.str.692) unreachable -ok1160: +ok1217: %t103 = getelementptr inbounds %S.parser.Parser, ptr %t101, i32 0, i32 0 %t104 = load i64, ptr %a37 %t105 = add i64 %t104, 1 %t106 = load { ptr, i64, i64 }, ptr %t103 %t107 = extractvalue { ptr, i64, i64 } %t106, 1 %t108 = icmp uge i64 %t105, %t107 - br i1 %t108, label %range1161, label %inrange1162 -range1161: - call void @finch_panic_index(ptr @.str.673, i64 188, i64 %t105, i64 %t107) + br i1 %t108, label %range1218, label %inrange1219 +range1218: + call void @finch_panic_index(ptr @.str.693, i64 188, i64 %t105, i64 %t107) unreachable -inrange1162: +inrange1219: %t109 = extractvalue { ptr, i64, i64 } %t106, 0 %t110 = getelementptr inbounds %S.lexer.Token, ptr %t109, i64 %t105 %t111 = getelementptr inbounds %S.lexer.Token, ptr %t110, i32 0, i32 4 %t112 = load i1, ptr %t111 %t113 = xor i1 %t112, true - br label %logic.rend1163 -logic.rend1163: - br label %logic.end1158 -logic.end1158: - %t114 = phi i1 [ false, %logic.from1156 ], [ %t113, %logic.rend1163 ] + br label %logic.rend1220 +logic.rend1220: + br label %logic.end1215 +logic.end1215: + %t114 = phi i1 [ false, %logic.from1213 ], [ %t113, %logic.rend1220 ] ret i1 %t114 -endif1145: - br label %endif1142 -else1141: +endif1202: + br label %endif1199 +else1198: %t115 = load { ptr, i64, i64 }, ptr %a59 store { ptr, i64, i64 } %t115, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.674, i64 3, i64 0 }, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.694, i64 3, i64 0 }, ptr %a117 %t118 = call i32 @finch_str_eq(ptr %a116, ptr %a117) %t119 = icmp ne i32 %t118, 0 - br label %logic.from1164 -logic.from1164: - br i1 %t119, label %logic.end1166, label %logic.rhs1165 -logic.rhs1165: + br label %logic.from1221 +logic.from1221: + br i1 %t119, label %logic.end1223, label %logic.rhs1222 +logic.rhs1222: %t120 = load ptr, ptr %a1 %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic1167, label %ok1168 -panic1167: - call void @finch_panic(ptr @.str.675, i64 190, ptr @.str.676) + br i1 %t121, label %panic1224, label %ok1225 +panic1224: + call void @finch_panic(ptr @.str.695, i64 190, ptr @.str.696) unreachable -ok1168: +ok1225: %t122 = getelementptr inbounds %S.parser.Parser, ptr %t120, i32 0, i32 0 %t123 = load i64, ptr %a37 %t124 = load { ptr, i64, i64 }, ptr %t122 %t125 = extractvalue { ptr, i64, i64 } %t124, 1 %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range1169, label %inrange1170 -range1169: - call void @finch_panic_index(ptr @.str.677, i64 190, i64 %t123, i64 %t125) + br i1 %t126, label %range1226, label %inrange1227 +range1226: + call void @finch_panic_index(ptr @.str.697, i64 190, i64 %t123, i64 %t125) unreachable -inrange1170: +inrange1227: %t127 = extractvalue { ptr, i64, i64 } %t124, 0 %t128 = getelementptr inbounds %S.lexer.Token, ptr %t127, i64 %t123 %t129 = getelementptr inbounds %S.lexer.Token, ptr %t128, i32 0, i32 4 %t130 = load i1, ptr %t129 - br label %logic.rend1171 -logic.rend1171: - br label %logic.end1166 -logic.end1166: - %t131 = phi i1 [ true, %logic.from1164 ], [ %t130, %logic.rend1171 ] - br i1 %t131, label %then1172, label %endif1174 -then1172: + br label %logic.rend1228 +logic.rend1228: + br label %logic.end1223 +logic.end1223: + %t131 = phi i1 [ true, %logic.from1221 ], [ %t130, %logic.rend1228 ] + br i1 %t131, label %then1229, label %endif1231 +then1229: ret i1 false -endif1174: - br label %endif1142 -endif1142: - br label %endif1139 -endif1139: +endif1231: + br label %endif1199 +endif1199: + br label %endif1196 +endif1196: %t132 = load i64, ptr %a37 %t133 = add i64 %t132, 1 store i64 %t133, ptr %a37 - br label %while.cond1128 -while.end1130: + br label %while.cond1185 +while.end1187: ret i1 false } @@ -13642,72 +15073,72 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1175, label %endif1177 -then1175: + br i1 %t3, label %then1232, label %endif1234 +then1232: ret i1 true -endif1177: +endif1234: %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }) - br i1 %t5, label %then1178, label %endif1180 -then1178: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.698, i64 1, i64 0 }) + br i1 %t5, label %then1235, label %endif1237 +then1235: %t6 = load ptr, ptr %a1 %t7 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t6, i64 1) store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.679, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 ret i1 %t11 -endif1180: +endif1237: %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.at(ptr %t12, { ptr, i64, i64 } { ptr @.str.680, i64 5, i64 0 }) + %t13 = call i1 @finch.parser.at(ptr %t12, { ptr, i64, i64 } { ptr @.str.700, i64 5, i64 0 }) %t14 = xor i1 %t13, true - br i1 %t14, label %then1181, label %endif1183 -then1181: + br i1 %t14, label %then1238, label %endif1240 +then1238: ret i1 false -endif1183: +endif1240: %t15 = load ptr, ptr %a1 %t16 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t15, i64 1) store { ptr, i64, i64 } %t16, ptr %a17 %t18 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.681, i64 5, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.701, i64 5, i64 0 }, ptr %a20 %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then1184, label %endif1186 -then1184: + br i1 %t22, label %then1241, label %endif1243 +then1241: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1187, label %ok1188 -panic1187: - call void @finch_panic(ptr @.str.682, i64 210, ptr @.str.683) + br i1 %t24, label %panic1244, label %ok1245 +panic1244: + call void @finch_panic(ptr @.str.702, i64 210, ptr @.str.703) unreachable -ok1188: +ok1245: %t25 = getelementptr inbounds %S.parser.Parser, ptr %t23, i32 0, i32 0 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic1189, label %ok1190 -panic1189: - call void @finch_panic(ptr @.str.684, i64 210, ptr @.str.685) + br i1 %t27, label %panic1246, label %ok1247 +panic1246: + call void @finch_panic(ptr @.str.704, i64 210, ptr @.str.705) unreachable -ok1190: +ok1247: %t28 = getelementptr inbounds %S.parser.Parser, ptr %t26, i32 0, i32 1 %t29 = load i64, ptr %t28 %t30 = add i64 %t29, 1 %t31 = load { ptr, i64, i64 }, ptr %t25 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range1191, label %inrange1192 -range1191: - call void @finch_panic_index(ptr @.str.686, i64 210, i64 %t30, i64 %t32) + br i1 %t33, label %range1248, label %inrange1249 +range1248: + call void @finch_panic_index(ptr @.str.706, i64 210, i64 %t30, i64 %t32) unreachable -inrange1192: +inrange1249: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.lexer.Token, ptr %t34, i64 %t30 %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i32 0, i32 4 %t37 = load i1, ptr %t36 %t38 = xor i1 %t37, true ret i1 %t38 -endif1186: +endif1243: %t39 = load ptr, ptr %a1 %t40 = call %S.lexer.Token @finch.parser.cur(ptr %t39) %t41 = extractvalue %S.lexer.Token %t40, 1 @@ -13715,13 +15146,13 @@ endif1186: call void @finch_str_copy(ptr %a43, ptr %a42) %t44 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.687, i64 3, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.707, i64 3, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br label %logic.from1193 -logic.from1193: - br i1 %t48, label %logic.end1195, label %logic.rhs1194 -logic.rhs1194: + br label %logic.from1250 +logic.from1250: + br i1 %t48, label %logic.end1252, label %logic.rhs1251 +logic.rhs1251: %t49 = load ptr, ptr %a1 %t50 = call %S.lexer.Token @finch.parser.cur(ptr %t49) %t51 = extractvalue %S.lexer.Token %t50, 1 @@ -13729,107 +15160,107 @@ logic.rhs1194: call void @finch_str_copy(ptr %a53, ptr %a52) %t54 = load { ptr, i64, i64 }, ptr %a53 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.688, i64 3, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.708, i64 3, i64 0 }, ptr %a56 %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) %t58 = icmp ne i32 %t57, 0 - br label %logic.rend1196 -logic.rend1196: - br label %logic.end1195 -logic.end1195: - %t59 = phi i1 [ true, %logic.from1193 ], [ %t58, %logic.rend1196 ] - br label %logic.from1197 -logic.from1197: - br i1 %t59, label %logic.rhs1198, label %logic.end1199 -logic.rhs1198: + br label %logic.rend1253 +logic.rend1253: + br label %logic.end1252 +logic.end1252: + %t59 = phi i1 [ true, %logic.from1250 ], [ %t58, %logic.rend1253 ] + br label %logic.from1254 +logic.from1254: + br i1 %t59, label %logic.rhs1255, label %logic.end1256 +logic.rhs1255: %t60 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.689, i64 1, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.709, i64 1, i64 0 }, ptr %a62 %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) %t64 = icmp ne i32 %t63, 0 - br label %logic.rend1200 -logic.rend1200: - br label %logic.end1199 -logic.end1199: - %t65 = phi i1 [ false, %logic.from1197 ], [ %t64, %logic.rend1200 ] - br i1 %t65, label %then1201, label %endif1203 -then1201: + br label %logic.rend1257 +logic.rend1257: + br label %logic.end1256 +logic.end1256: + %t65 = phi i1 [ false, %logic.from1254 ], [ %t64, %logic.rend1257 ] + br i1 %t65, label %then1258, label %endif1260 +then1258: ret i1 true -endif1203: +endif1260: %t66 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.690, i64 1, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.710, i64 1, i64 0 }, ptr %a68 %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) %t70 = icmp ne i32 %t69, 0 - br label %logic.from1204 -logic.from1204: - br i1 %t70, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: + br label %logic.from1261 +logic.from1261: + br i1 %t70, label %logic.rhs1262, label %logic.end1263 +logic.rhs1262: %t71 = load ptr, ptr %a1 %t72 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t71, i64 2) store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.691, i64 5, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.711, i64 5, i64 0 }, ptr %a74 %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) %t76 = icmp ne i32 %t75, 0 - br label %logic.rend1207 -logic.rend1207: - br label %logic.end1206 -logic.end1206: - %t77 = phi i1 [ false, %logic.from1204 ], [ %t76, %logic.rend1207 ] - br label %logic.from1208 -logic.from1208: - br i1 %t77, label %logic.rhs1209, label %logic.end1210 -logic.rhs1209: + br label %logic.rend1264 +logic.rend1264: + br label %logic.end1263 +logic.end1263: + %t77 = phi i1 [ false, %logic.from1261 ], [ %t76, %logic.rend1264 ] + br label %logic.from1265 +logic.from1265: + br i1 %t77, label %logic.rhs1266, label %logic.end1267 +logic.rhs1266: %t78 = load ptr, ptr %a1 %t79 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t78, i64 3) store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.692, i64 5, i64 0 }, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.712, i64 5, i64 0 }, ptr %a81 %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) %t83 = icmp ne i32 %t82, 0 - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1210 -logic.end1210: - %t84 = phi i1 [ false, %logic.from1208 ], [ %t83, %logic.rend1211 ] - br label %logic.from1212 -logic.from1212: - br i1 %t84, label %logic.rhs1213, label %logic.end1214 -logic.rhs1213: + br label %logic.rend1268 +logic.rend1268: + br label %logic.end1267 +logic.end1267: + %t84 = phi i1 [ false, %logic.from1265 ], [ %t83, %logic.rend1268 ] + br label %logic.from1269 +logic.from1269: + br i1 %t84, label %logic.rhs1270, label %logic.end1271 +logic.rhs1270: %t85 = load ptr, ptr %a1 %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.693, i64 215, ptr @.str.694) + br i1 %t86, label %panic1272, label %ok1273 +panic1272: + call void @finch_panic(ptr @.str.713, i64 215, ptr @.str.714) unreachable -ok1216: +ok1273: %t87 = getelementptr inbounds %S.parser.Parser, ptr %t85, i32 0, i32 0 %t88 = load ptr, ptr %a1 %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic1217, label %ok1218 -panic1217: - call void @finch_panic(ptr @.str.695, i64 215, ptr @.str.696) + br i1 %t89, label %panic1274, label %ok1275 +panic1274: + call void @finch_panic(ptr @.str.715, i64 215, ptr @.str.716) unreachable -ok1218: +ok1275: %t90 = getelementptr inbounds %S.parser.Parser, ptr %t88, i32 0, i32 1 %t91 = load i64, ptr %t90 %t92 = add i64 %t91, 3 %t93 = load { ptr, i64, i64 }, ptr %t87 %t94 = extractvalue { ptr, i64, i64 } %t93, 1 %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range1219, label %inrange1220 -range1219: - call void @finch_panic_index(ptr @.str.697, i64 215, i64 %t92, i64 %t94) + br i1 %t95, label %range1276, label %inrange1277 +range1276: + call void @finch_panic_index(ptr @.str.717, i64 215, i64 %t92, i64 %t94) unreachable -inrange1220: +inrange1277: %t96 = extractvalue { ptr, i64, i64 } %t93, 0 %t97 = getelementptr inbounds %S.lexer.Token, ptr %t96, i64 %t92 %t98 = getelementptr inbounds %S.lexer.Token, ptr %t97, i32 0, i32 4 %t99 = load i1, ptr %t98 %t100 = xor i1 %t99, true - br label %logic.rend1221 -logic.rend1221: - br label %logic.end1214 -logic.end1214: - %t101 = phi i1 [ false, %logic.from1212 ], [ %t100, %logic.rend1221 ] + br label %logic.rend1278 +logic.rend1278: + br label %logic.end1271 +logic.end1271: + %t101 = phi i1 [ false, %logic.from1269 ], [ %t100, %logic.rend1278 ] ret i1 %t101 } @@ -13844,46 +15275,46 @@ entry: %a23 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.698, i64 1, i64 0 }) - br label %logic.from1222 -logic.from1222: - br i1 %t3, label %logic.end1224, label %logic.rhs1223 -logic.rhs1223: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }) + br label %logic.from1279 +logic.from1279: + br i1 %t3, label %logic.end1281, label %logic.rhs1280 +logic.rhs1280: %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.699, i64 3, i64 0 }) - br label %logic.rend1225 -logic.rend1225: - br label %logic.end1224 -logic.end1224: - %t6 = phi i1 [ true, %logic.from1222 ], [ %t5, %logic.rend1225 ] - br label %logic.from1226 -logic.from1226: - br i1 %t6, label %logic.end1228, label %logic.rhs1227 -logic.rhs1227: + %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.719, i64 3, i64 0 }) + br label %logic.rend1282 +logic.rend1282: + br label %logic.end1281 +logic.end1281: + %t6 = phi i1 [ true, %logic.from1279 ], [ %t5, %logic.rend1282 ] + br label %logic.from1283 +logic.from1283: + br i1 %t6, label %logic.end1285, label %logic.rhs1284 +logic.rhs1284: %t7 = load ptr, ptr %a1 %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) %t9 = extractvalue %S.lexer.Token %t8, 4 - br label %logic.rend1229 -logic.rend1229: - br label %logic.end1228 -logic.end1228: - %t10 = phi i1 [ true, %logic.from1226 ], [ %t9, %logic.rend1229 ] - br i1 %t10, label %then1230, label %endif1232 -then1230: + br label %logic.rend1286 +logic.rend1286: + br label %logic.end1285 +logic.end1285: + %t10 = phi i1 [ true, %logic.from1283 ], [ %t9, %logic.rend1286 ] + br i1 %t10, label %then1287, label %endif1289 +then1287: ret void -endif1232: +endif1289: %t11 = load ptr, ptr %a1 %t12 = load ptr, ptr %a1 %t13 = call %S.lexer.Token @finch.parser.cur(ptr %t12) %t14 = load ptr, ptr %a1 %t15 = call %S.lexer.Token @finch.parser.cur(ptr %t14) %t16 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t15) - store { ptr, i64, i64 } { ptr @.str.700, i64 11, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.720, i64 11, i64 0 }, ptr %a18 store { ptr, i64, i64 } %t16, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t20, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.701, i64 37, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.721, i64 37, i64 0 }, ptr %a23 call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) %t24 = load { ptr, i64, i64 }, ptr %a21 call void @finch.parser.fail(ptr %t11, %S.lexer.Token %t13, { ptr, i64, i64 } %t24) @@ -13942,37 +15373,37 @@ entry: %a174 = alloca %S.ast.Program, align 16 store ptr %p0, ptr %a1 store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1233 -while.cond1233: + br label %while.cond1290 +while.cond1290: %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.702, i64 3, i64 0 }) + %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.722, i64 3, i64 0 }) %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1234, label %while.end1235 -while.body1234: + br i1 %t5, label %while.body1291, label %while.end1292 +while.body1291: %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.703, i64 6, i64 0 }) - br i1 %t7, label %then1236, label %else1237 -then1236: + %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.723, i64 6, i64 0 }) + br i1 %t7, label %then1293, label %else1294 +then1293: %t8 = load ptr, ptr %a1 %t9 = call %S.lexer.Token @finch.parser.next(ptr %t8) store %S.lexer.Token %t9, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.704, i64 6, i64 0 }) - br i1 %t12, label %then1239, label %else1240 -then1239: + %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.724, i64 6, i64 0 }) + br i1 %t12, label %then1296, label %else1297 +then1296: %t13 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 4 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic1242, label %ok1243 -panic1242: - call void @finch_panic(ptr @.str.705, i64 233, ptr @.str.706) + br i1 %t16, label %panic1299, label %ok1300 +panic1299: + call void @finch_panic(ptr @.str.725, i64 233, ptr @.str.726) unreachable -ok1243: +ok1300: %t17 = getelementptr inbounds %S.parser.Parser, ptr %t15, i32 0, i32 4 %t18 = load { ptr, i64, i64 }, ptr %t17 store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }, ptr %a21 call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 @@ -13984,7 +15415,7 @@ ok1243: call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.708, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.728, i64 1, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 @@ -14017,18 +15448,18 @@ ok1243: %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55 store { ptr, i64, i64 } %t54, ptr %t58 store i64 %t56, ptr %t48 - br label %endif1241 -else1240: + br label %endif1298 +else1297: %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.at(ptr %t59, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) + %t60 = call i1 @finch.parser.at(ptr %t59, { ptr, i64, i64 } { ptr @.str.729, i64 5, i64 0 }) %t61 = xor i1 %t60, true - br i1 %t61, label %then1244, label %endif1246 -then1244: + br i1 %t61, label %then1301, label %endif1303 +then1301: %t62 = load ptr, ptr %a1 %t63 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t62, %S.lexer.Token %t63, { ptr, i64, i64 } { ptr @.str.710, i64 51, i64 0 }) - br label %endif1246 -endif1246: + call void @finch.parser.fail(ptr %t62, %S.lexer.Token %t63, { ptr, i64, i64 } { ptr @.str.730, i64 51, i64 0 }) + br label %endif1303 +endif1303: %t64 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 %t66 = load ptr, ptr %a1 @@ -14044,19 +15475,19 @@ endif1246: %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 store { ptr, i64, i64 } %t71, ptr %t75 store i64 %t73, ptr %t65 - br label %endif1241 -endif1241: - br label %endif1238 -else1237: + br label %endif1298 +endif1298: + br label %endif1295 +else1294: %t76 = load ptr, ptr %a1 - %t77 = call i1 @finch.parser.at(ptr %t76, { ptr, i64, i64 } { ptr @.str.711, i64 4, i64 0 }) - br i1 %t77, label %then1247, label %else1248 -then1247: + %t77 = call i1 @finch.parser.at(ptr %t76, { ptr, i64, i64 } { ptr @.str.731, i64 4, i64 0 }) + br i1 %t77, label %then1304, label %else1305 +then1304: %t78 = load ptr, ptr %a1 %t79 = call %S.lexer.Token @finch.parser.next(ptr %t78) store %S.lexer.Token %t79, ptr %a80 %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.expect(ptr %t81, { ptr, i64, i64 } { ptr @.str.712, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.713, i64 42, i64 0 }) + %t82 = call %S.lexer.Token @finch.parser.expect(ptr %t81, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.733, i64 42, i64 0 }) %t83 = extractvalue %S.lexer.Token %t82, 1 store { ptr, i64, i64 } %t83, ptr %a84 call void @finch_str_copy(ptr %a85, ptr %a84) @@ -14064,89 +15495,89 @@ then1247: store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.715, i64 2, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.735, i64 2, i64 0 }, ptr %a91 %t92 = call i32 @finch_str_ends(ptr %a89, ptr %a91) %t93 = icmp ne i32 %t92, 0 - br label %logic.from1250 -logic.from1250: - br i1 %t93, label %logic.end1252, label %logic.rhs1251 -logic.rhs1251: + br label %logic.from1307 +logic.from1307: + br i1 %t93, label %logic.end1309, label %logic.rhs1308 +logic.rhs1308: %t94 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.717, i64 2, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.737, i64 2, i64 0 }, ptr %a97 %t98 = call i32 @finch_str_ends(ptr %a95, ptr %a97) %t99 = icmp ne i32 %t98, 0 - br label %logic.rend1253 -logic.rend1253: - br label %logic.end1252 -logic.end1252: - %t100 = phi i1 [ true, %logic.from1250 ], [ %t99, %logic.rend1253 ] - br label %logic.from1254 -logic.from1254: - br i1 %t100, label %logic.end1256, label %logic.rhs1255 -logic.rhs1255: + br label %logic.rend1310 +logic.rend1310: + br label %logic.end1309 +logic.end1309: + %t100 = phi i1 [ true, %logic.from1307 ], [ %t99, %logic.rend1310 ] + br label %logic.from1311 +logic.from1311: + br i1 %t100, label %logic.end1313, label %logic.rhs1312 +logic.rhs1312: %t101 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.719, i64 2, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.739, i64 2, i64 0 }, ptr %a104 %t105 = call i32 @finch_str_ends(ptr %a102, ptr %a104) %t106 = icmp ne i32 %t105, 0 - br label %logic.rend1257 -logic.rend1257: - br label %logic.end1256 -logic.end1256: - %t107 = phi i1 [ true, %logic.from1254 ], [ %t106, %logic.rend1257 ] + br label %logic.rend1314 +logic.rend1314: + br label %logic.end1313 +logic.end1313: + %t107 = phi i1 [ true, %logic.from1311 ], [ %t106, %logic.rend1314 ] store i1 %t107, ptr %a108 %t109 = load i1, ptr %a108 %t110 = xor i1 %t109, true - br label %logic.from1258 -logic.from1258: - br i1 %t110, label %logic.rhs1259, label %logic.end1260 -logic.rhs1259: + br label %logic.from1315 +logic.from1315: + br i1 %t110, label %logic.rhs1316, label %logic.end1317 +logic.rhs1316: %t111 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.721, i64 3, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.741, i64 3, i64 0 }, ptr %a114 %t115 = call i32 @finch_str_starts(ptr %a112, ptr %a114) %t116 = icmp ne i32 %t115, 0 - br label %logic.from1261 -logic.from1261: - br i1 %t116, label %logic.end1263, label %logic.rhs1262 -logic.rhs1262: + br label %logic.from1318 +logic.from1318: + br i1 %t116, label %logic.end1320, label %logic.rhs1319 +logic.rhs1319: %t117 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.723, i64 3, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.743, i64 3, i64 0 }, ptr %a120 %t121 = call i64 @finch_str_find(ptr %a118, ptr %a120) %t122 = icmp sge i64 %t121, 0 - br label %logic.rend1264 -logic.rend1264: - br label %logic.end1263 -logic.end1263: - %t123 = phi i1 [ true, %logic.from1261 ], [ %t122, %logic.rend1264 ] - br label %logic.from1265 -logic.from1265: - br i1 %t123, label %logic.end1267, label %logic.rhs1266 -logic.rhs1266: + br label %logic.rend1321 +logic.rend1321: + br label %logic.end1320 +logic.end1320: + %t123 = phi i1 [ true, %logic.from1318 ], [ %t122, %logic.rend1321 ] + br label %logic.from1322 +logic.from1322: + br i1 %t123, label %logic.end1324, label %logic.rhs1323 +logic.rhs1323: %t124 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.725, i64 1, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.745, i64 1, i64 0 }, ptr %a127 %t128 = call i64 @finch_str_find(ptr %a125, ptr %a127) %t129 = icmp sge i64 %t128, 0 - br label %logic.rend1268 -logic.rend1268: - br label %logic.end1267 -logic.end1267: - %t130 = phi i1 [ true, %logic.from1265 ], [ %t129, %logic.rend1268 ] - br label %logic.rend1269 -logic.rend1269: - br label %logic.end1260 -logic.end1260: - %t131 = phi i1 [ false, %logic.from1258 ], [ %t130, %logic.rend1269 ] - br i1 %t131, label %then1270, label %endif1272 -then1270: + br label %logic.rend1325 +logic.rend1325: + br label %logic.end1324 +logic.end1324: + %t130 = phi i1 [ true, %logic.from1322 ], [ %t129, %logic.rend1325 ] + br label %logic.rend1326 +logic.rend1326: + br label %logic.end1317 +logic.end1317: + %t131 = phi i1 [ false, %logic.from1315 ], [ %t130, %logic.rend1326 ] + br i1 %t131, label %then1327, label %endif1329 +then1327: %t132 = load ptr, ptr %a1 %t133 = load %S.lexer.Token, ptr %a80 - call void @finch.parser.fail(ptr %t132, %S.lexer.Token %t133, { ptr, i64, i64 } { ptr @.str.726, i64 65, i64 0 }) - br label %endif1272 -endif1272: + call void @finch.parser.fail(ptr %t132, %S.lexer.Token %t133, { ptr, i64, i64 } { ptr @.str.746, i64 65, i64 0 }) + br label %endif1329 +endif1329: %t134 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 %t136 = load { ptr, i64, i64 }, ptr %a87 @@ -14160,12 +15591,12 @@ endif1272: %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 %t140 store { ptr, i64, i64 } %t139, ptr %t143 store i64 %t141, ptr %t135 - br label %endif1249 -else1248: + br label %endif1306 +else1305: %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.727, i64 6, i64 0 }) - br i1 %t145, label %then1273, label %else1274 -then1273: + %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.747, i64 6, i64 0 }) + br i1 %t145, label %then1330, label %else1331 +then1330: %t146 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 %t148 = load ptr, ptr %a1 @@ -14177,12 +15608,12 @@ then1273: %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 %t150 store %S.ast.Node %t149, ptr %t153 store i64 %t151, ptr %t147 - br label %endif1275 -else1274: + br label %endif1332 +else1331: %t154 = load ptr, ptr %a1 - %t155 = call i1 @finch.parser.at(ptr %t154, { ptr, i64, i64 } { ptr @.str.728, i64 4, i64 0 }) - br i1 %t155, label %then1276, label %else1277 -then1276: + %t155 = call i1 @finch.parser.at(ptr %t154, { ptr, i64, i64 } { ptr @.str.748, i64 4, i64 0 }) + br i1 %t155, label %then1333, label %else1334 +then1333: %t156 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 %t158 = load ptr, ptr %a1 @@ -14194,8 +15625,8 @@ then1276: %t163 = getelementptr inbounds %S.ast.Node, ptr %t162, i64 %t160 store %S.ast.Node %t159, ptr %t163 store i64 %t161, ptr %t157 - br label %endif1278 -else1277: + br label %endif1335 +else1334: %t164 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 %t166 = load ptr, ptr %a1 @@ -14207,16 +15638,16 @@ else1277: %t171 = getelementptr inbounds %S.ast.Node, ptr %t170, i64 %t168 store %S.ast.Node %t167, ptr %t171 store i64 %t169, ptr %t165 - br label %endif1278 -endif1278: - br label %endif1275 -endif1275: - br label %endif1249 -endif1249: - br label %endif1238 -endif1238: - br label %while.cond1233 -while.end1235: + br label %endif1335 +endif1335: + br label %endif1332 +endif1332: + br label %endif1306 +endif1306: + br label %endif1295 +endif1295: + br label %while.cond1290 +while.end1292: %t172 = load %S.ast.Program, ptr %a2 store %S.ast.Program %t172, ptr %a173 call void @finch.copy.S_ast_Program(ptr %a174, ptr %a173) @@ -14251,12 +15682,12 @@ entry: %a86 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.729, i64 4, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.749, i64 4, i64 0 }) store %S.ast.Node %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.730, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.731, i64 6, i64 0 }) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.750, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.751, i64 6, i64 0 }) %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.732, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.733, i64 12, i64 0 }) + %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.752, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.753, i64 12, i64 0 }) %t9 = extractvalue %S.lexer.Token %t8, 1 store { ptr, i64, i64 } %t9, ptr %a10 call void @finch_str_copy(ptr %a11, ptr %a10) @@ -14264,29 +15695,29 @@ entry: %t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t12, ptr %t13 %t14 = load ptr, ptr %a1 - %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.734, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.735, i64 3, i64 0 }) - br label %while.cond1279 -while.cond1279: + %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.755, i64 3, i64 0 }) + br label %while.cond1336 +while.cond1336: %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.736, i64 1, i64 0 }) + %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.756, i64 1, i64 0 }) %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1280, label %while.end1281 -while.body1280: + br i1 %t18, label %while.body1337, label %while.end1338 +while.body1337: %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.737, i64 3, i64 0 }) - br i1 %t20, label %then1282, label %endif1284 -then1282: + %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.757, i64 3, i64 0 }) + br i1 %t20, label %then1339, label %endif1341 +then1339: %t21 = load ptr, ptr %a1 %t22 = load ptr, ptr %a1 %t23 = call %S.lexer.Token @finch.parser.cur(ptr %t22) - call void @finch.parser.fail(ptr %t21, %S.lexer.Token %t23, { ptr, i64, i64 } { ptr @.str.738, i64 37, i64 0 }) - br label %endif1284 -endif1284: + call void @finch.parser.fail(ptr %t21, %S.lexer.Token %t23, { ptr, i64, i64 } { ptr @.str.758, i64 37, i64 0 }) + br label %endif1341 +endif1341: %t24 = load ptr, ptr %a1 - %t25 = call %S.ast.Node @finch.parser.node(ptr %t24, { ptr, i64, i64 } { ptr @.str.739, i64 7, i64 0 }) + %t25 = call %S.ast.Node @finch.parser.node(ptr %t24, { ptr, i64, i64 } { ptr @.str.759, i64 7, i64 0 }) store %S.ast.Node %t25, ptr %a26 %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.740, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.741, i64 24, i64 0 }) + %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.760, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.761, i64 24, i64 0 }) %t29 = extractvalue %S.lexer.Token %t28, 1 store { ptr, i64, i64 } %t29, ptr %a30 call void @finch_str_copy(ptr %a31, ptr %a30) @@ -14294,20 +15725,20 @@ endif1284: %t33 = getelementptr inbounds %S.ast.Node, ptr %a26, i32 0, i32 1 store { ptr, i64, i64 } %t32, ptr %t33 %t34 = load ptr, ptr %a1 - %t35 = call i1 @finch.parser.accept(ptr %t34, { ptr, i64, i64 } { ptr @.str.742, i64 1, i64 0 }) - br i1 %t35, label %then1285, label %endif1287 -then1285: - store { ptr, i64, i64 } { ptr @.str.743, i64 0, i64 0 }, ptr %a36 + %t35 = call i1 @finch.parser.accept(ptr %t34, { ptr, i64, i64 } { ptr @.str.762, i64 1, i64 0 }) + br i1 %t35, label %then1342, label %endif1344 +then1342: + store { ptr, i64, i64 } { ptr @.str.763, i64 0, i64 0 }, ptr %a36 %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.accept(ptr %t37, { ptr, i64, i64 } { ptr @.str.744, i64 1, i64 0 }) - br i1 %t38, label %then1288, label %endif1290 -then1288: - store { ptr, i64, i64 } { ptr @.str.745, i64 1, i64 0 }, ptr %a36 - br label %endif1290 -endif1290: + %t38 = call i1 @finch.parser.accept(ptr %t37, { ptr, i64, i64 } { ptr @.str.764, i64 1, i64 0 }) + br i1 %t38, label %then1345, label %endif1347 +then1345: + store { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }, ptr %a36 + br label %endif1347 +endif1347: %t39 = load { ptr, i64, i64 }, ptr %a36 %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.expect(ptr %t40, { ptr, i64, i64 } { ptr @.str.746, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.747, i64 30, i64 0 }) + %t41 = call %S.lexer.Token @finch.parser.expect(ptr %t40, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.767, i64 30, i64 0 }) %t42 = extractvalue %S.lexer.Token %t41, 1 store { ptr, i64, i64 } %t42, ptr %a43 call void @finch_str_copy(ptr %a44, ptr %a43) @@ -14318,8 +15749,8 @@ endif1290: %t49 = load { ptr, i64, i64 }, ptr %a46 %t50 = getelementptr inbounds %S.ast.Node, ptr %a26, i32 0, i32 4 store { ptr, i64, i64 } %t49, ptr %t50 - br label %endif1287 -endif1287: + br label %endif1344 +endif1344: %t51 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1 %t53 = load %S.ast.Node, ptr %a26 @@ -14334,40 +15765,40 @@ endif1287: store %S.ast.Node %t56, ptr %t60 store i64 %t58, ptr %t52 %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.748, i64 1, i64 0 }) + %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.768, i64 1, i64 0 }) %t63 = xor i1 %t62, true - br i1 %t63, label %then1291, label %endif1293 -then1291: + br i1 %t63, label %then1348, label %endif1350 +then1348: %t64 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t64) - br label %endif1293 -endif1293: - br label %while.cond1279 -while.end1281: + br label %endif1350 +endif1350: + br label %while.cond1336 +while.end1338: %t65 = load ptr, ptr %a1 %t66 = call %S.lexer.Token @finch.parser.next(ptr %t65) %t67 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 %t69 = load i64, ptr %t68 %t70 = icmp eq i64 %t69, 0 - br i1 %t70, label %then1294, label %endif1296 -then1294: + br i1 %t70, label %then1351, label %endif1353 +then1351: %t71 = load ptr, ptr %a1 %t72 = load ptr, ptr %a1 %t73 = call %S.lexer.Token @finch.parser.cur(ptr %t72) %t74 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } { ptr @.str.749, i64 9, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.769, i64 9, i64 0 }, ptr %a77 store { ptr, i64, i64 } %t75, ptr %a78 call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.750, i64 16, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.770, i64 16, i64 0 }, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 call void @finch.parser.fail(ptr %t71, %S.lexer.Token %t73, { ptr, i64, i64 } %t83) - br label %endif1296 -endif1296: + br label %endif1353 +endif1353: %t84 = load %S.ast.Node, ptr %a4 store %S.ast.Node %t84, ptr %a85 call void @finch.copy.S_ast_Node(ptr %a86, ptr %a85) @@ -14392,13 +15823,13 @@ entry: store ptr %p0, ptr %a1 store i1 %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.751, i64 5, i64 0 }) + %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.771, i64 5, i64 0 }) store %S.ast.Node %t4, ptr %a5 %t6 = load i1, ptr %a2 %t7 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 6 store i1 %t6, ptr %t7 %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.752, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.753, i64 7, i64 0 }) + %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.772, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.773, i64 7, i64 0 }) %t10 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 %t12 = load ptr, ptr %a1 @@ -14411,61 +15842,61 @@ entry: store %S.ast.Node %t13, ptr %t17 store i64 %t15, ptr %t11 %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.755, i64 3, i64 0 }) + %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 }) %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic1297, label %ok1298 -panic1297: - call void @finch_panic(ptr @.str.756, i64 300, ptr @.str.757) + br i1 %t21, label %panic1354, label %ok1355 +panic1354: + call void @finch_panic(ptr @.str.776, i64 300, ptr @.str.777) unreachable -ok1298: +ok1355: %t22 = getelementptr inbounds %S.parser.Parser, ptr %t20, i32 0, i32 2 %t23 = load i64, ptr %t22 store i64 %t23, ptr %a24 %t25 = load ptr, ptr %a1 %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic1299, label %ok1300 -panic1299: - call void @finch_panic(ptr @.str.758, i64 301, ptr @.str.759) + br i1 %t26, label %panic1356, label %ok1357 +panic1356: + call void @finch_panic(ptr @.str.778, i64 301, ptr @.str.779) unreachable -ok1300: +ok1357: %t27 = getelementptr inbounds %S.parser.Parser, ptr %t25, i32 0, i32 2 store i64 0, ptr %t27 - br label %while.cond1301 -while.cond1301: + br label %while.cond1358 +while.cond1358: %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.760, i64 1, i64 0 }) + %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1302, label %while.end1303 -while.body1302: + br i1 %t30, label %while.body1359, label %while.end1360 +while.body1359: %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.761, i64 3, i64 0 }) - br i1 %t32, label %then1304, label %endif1306 -then1304: + %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.781, i64 3, i64 0 }) + br i1 %t32, label %then1361, label %endif1363 +then1361: %t33 = load ptr, ptr %a1 %t34 = load ptr, ptr %a1 %t35 = call %S.lexer.Token @finch.parser.cur(ptr %t34) - call void @finch.parser.fail(ptr %t33, %S.lexer.Token %t35, { ptr, i64, i64 } { ptr @.str.762, i64 37, i64 0 }) - br label %endif1306 -endif1306: + call void @finch.parser.fail(ptr %t33, %S.lexer.Token %t35, { ptr, i64, i64 } { ptr @.str.782, i64 37, i64 0 }) + br label %endif1363 +endif1363: %t36 = load ptr, ptr %a1 - %t37 = call %S.ast.Node @finch.parser.node(ptr %t36, { ptr, i64, i64 } { ptr @.str.763, i64 3, i64 0 }) + %t37 = call %S.ast.Node @finch.parser.node(ptr %t36, { ptr, i64, i64 } { ptr @.str.783, i64 3, i64 0 }) store %S.ast.Node %t37, ptr %a38 %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.764, i64 8, i64 0 }) + %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.784, i64 8, i64 0 }) store %S.ast.Node %t40, ptr %a41 %t42 = load ptr, ptr %a1 - %t43 = call i1 @finch.parser.accept(ptr %t42, { ptr, i64, i64 } { ptr @.str.765, i64 4, i64 0 }) - br i1 %t43, label %then1307, label %else1308 -then1307: + %t43 = call i1 @finch.parser.accept(ptr %t42, { ptr, i64, i64 } { ptr @.str.785, i64 4, i64 0 }) + br i1 %t43, label %then1364, label %else1365 +then1364: %t44 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 6 store i1 true, ptr %t44 - br label %endif1309 -else1308: - br label %while.cond1310 -while.cond1310: - br label %while.body1311 -while.body1311: + br label %endif1366 +else1365: + br label %while.cond1367 +while.cond1367: + br label %while.body1368 +while.body1368: %t45 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 %t47 = load ptr, ptr %a1 @@ -14478,16 +15909,16 @@ while.body1311: store %S.ast.Node %t48, ptr %t52 store i64 %t50, ptr %t46 %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.accept(ptr %t53, { ptr, i64, i64 } { ptr @.str.766, i64 1, i64 0 }) + %t54 = call i1 @finch.parser.accept(ptr %t53, { ptr, i64, i64 } { ptr @.str.786, i64 1, i64 0 }) %t55 = xor i1 %t54, true - br i1 %t55, label %then1313, label %endif1315 -then1313: - br label %while.end1312 -endif1315: - br label %while.cond1310 -while.end1312: - br label %endif1309 -endif1309: + br i1 %t55, label %then1370, label %endif1372 +then1370: + br label %while.end1369 +endif1372: + br label %while.cond1367 +while.end1369: + br label %endif1366 +endif1366: %t56 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9 %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1 %t58 = load %S.ast.Node, ptr %a41 @@ -14502,22 +15933,22 @@ endif1309: store %S.ast.Node %t61, ptr %t65 store i64 %t63, ptr %t57 %t66 = load ptr, ptr %a1 - %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.767, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.768, i64 57, i64 0 }) + %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.787, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.788, i64 57, i64 0 }) %t68 = load ptr, ptr %a1 - %t69 = call i1 @finch.parser.at(ptr %t68, { ptr, i64, i64 } { ptr @.str.769, i64 1, i64 0 }) - br label %logic.from1316 -logic.from1316: - br i1 %t69, label %logic.rhs1317, label %logic.end1318 -logic.rhs1317: + %t69 = call i1 @finch.parser.at(ptr %t68, { ptr, i64, i64 } { ptr @.str.789, i64 1, i64 0 }) + br label %logic.from1373 +logic.from1373: + br i1 %t69, label %logic.rhs1374, label %logic.end1375 +logic.rhs1374: %t70 = load i1, ptr %a2 %t71 = xor i1 %t70, true - br label %logic.rend1319 -logic.rend1319: - br label %logic.end1318 -logic.end1318: - %t72 = phi i1 [ false, %logic.from1316 ], [ %t71, %logic.rend1319 ] - br i1 %t72, label %then1320, label %else1321 -then1320: + br label %logic.rend1376 +logic.rend1376: + br label %logic.end1375 +logic.end1375: + %t72 = phi i1 [ false, %logic.from1373 ], [ %t71, %logic.rend1376 ] + br i1 %t72, label %then1377, label %else1378 +then1377: %t73 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9 %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 %t75 = load ptr, ptr %a1 @@ -14529,11 +15960,11 @@ then1320: %t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 %t77 store %S.ast.Node %t76, ptr %t80 store i64 %t78, ptr %t74 - br label %endif1322 -else1321: + br label %endif1379 +else1378: %t81 = load i1, ptr %a2 - br i1 %t81, label %then1323, label %else1324 -then1323: + br i1 %t81, label %then1380, label %else1381 +then1380: %t82 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9 %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 %t84 = load ptr, ptr %a1 @@ -14545,8 +15976,8 @@ then1323: %t89 = getelementptr inbounds %S.ast.Node, ptr %t88, i64 %t86 store %S.ast.Node %t85, ptr %t89 store i64 %t87, ptr %t83 - br label %endif1325 -else1324: + br label %endif1382 +else1381: %t90 = getelementptr inbounds %S.ast.Node, ptr %a38, i32 0, i32 9 %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i32 0, i32 1 %t92 = load ptr, ptr %a1 @@ -14558,10 +15989,10 @@ else1324: %t97 = getelementptr inbounds %S.ast.Node, ptr %t96, i64 %t94 store %S.ast.Node %t93, ptr %t97 store i64 %t95, ptr %t91 - br label %endif1325 -endif1325: - br label %endif1322 -endif1322: + br label %endif1382 +endif1382: + br label %endif1379 +endif1379: %t98 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 %t100 = load %S.ast.Node, ptr %a38 @@ -14576,24 +16007,24 @@ endif1322: store %S.ast.Node %t103, ptr %t107 store i64 %t105, ptr %t99 %t108 = load ptr, ptr %a1 - %t109 = call i1 @finch.parser.accept(ptr %t108, { ptr, i64, i64 } { ptr @.str.770, i64 1, i64 0 }) + %t109 = call i1 @finch.parser.accept(ptr %t108, { ptr, i64, i64 } { ptr @.str.790, i64 1, i64 0 }) %t110 = xor i1 %t109, true - br i1 %t110, label %then1326, label %endif1328 -then1326: + br i1 %t110, label %then1383, label %endif1385 +then1383: %t111 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t111) - br label %endif1328 -endif1328: - br label %while.cond1301 -while.end1303: + br label %endif1385 +endif1385: + br label %while.cond1358 +while.end1360: %t112 = load i64, ptr %a24 %t113 = load ptr, ptr %a1 %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic1329, label %ok1330 -panic1329: - call void @finch_panic(ptr @.str.771, i64 332, ptr @.str.772) + br i1 %t114, label %panic1386, label %ok1387 +panic1386: + call void @finch_panic(ptr @.str.791, i64 332, ptr @.str.792) unreachable -ok1330: +ok1387: %t115 = getelementptr inbounds %S.parser.Parser, ptr %t113, i32 0, i32 2 store i64 %t112, ptr %t115 %t116 = load ptr, ptr %a1 @@ -14602,14 +16033,14 @@ ok1330: %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i32 0, i32 1 %t120 = load i64, ptr %t119 %t121 = icmp eq i64 %t120, 1 - br i1 %t121, label %then1331, label %endif1333 -then1331: + br i1 %t121, label %then1388, label %endif1390 +then1388: %t122 = load ptr, ptr %a1 %t123 = load ptr, ptr %a1 %t124 = call %S.lexer.Token @finch.parser.cur(ptr %t123) - call void @finch.parser.fail(ptr %t122, %S.lexer.Token %t124, { ptr, i64, i64 } { ptr @.str.773, i64 30, i64 0 }) - br label %endif1333 -endif1333: + call void @finch.parser.fail(ptr %t122, %S.lexer.Token %t124, { ptr, i64, i64 } { ptr @.str.793, i64 30, i64 0 }) + br label %endif1390 +endif1390: %t125 = load %S.ast.Node, ptr %a5 store %S.ast.Node %t125, ptr %a126 call void @finch.copy.S_ast_Node(ptr %a127, ptr %a126) @@ -14628,14 +16059,14 @@ entry: store ptr %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.775, i64 3, i64 0 }) - br label %while.cond1334 -while.cond1334: - br label %while.body1335 -while.body1335: + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.794, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }) + br label %while.cond1391 +while.cond1391: + br label %while.body1392 +while.body1392: %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t6 = load ptr, ptr %a1 - %t7 = call %S.lexer.Token @finch.parser.expect(ptr %t6, { ptr, i64, i64 } { ptr @.str.776, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.777, i64 29, i64 0 }) + %t7 = call %S.lexer.Token @finch.parser.expect(ptr %t6, { ptr, i64, i64 } { ptr @.str.796, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.797, i64 29, i64 0 }) %t8 = extractvalue %S.lexer.Token %t7, 1 store { ptr, i64, i64 } %t8, ptr %a9 call void @finch_str_copy(ptr %a10, ptr %a9) @@ -14648,16 +16079,16 @@ while.body1335: store { ptr, i64, i64 } %t11, ptr %t15 store i64 %t13, ptr %t5 %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.accept(ptr %t16, { ptr, i64, i64 } { ptr @.str.778, i64 1, i64 0 }) + %t17 = call i1 @finch.parser.accept(ptr %t16, { ptr, i64, i64 } { ptr @.str.798, i64 1, i64 0 }) %t18 = xor i1 %t17, true - br i1 %t18, label %then1337, label %endif1339 -then1337: - br label %while.end1336 -endif1339: - br label %while.cond1334 -while.end1336: + br i1 %t18, label %then1394, label %endif1396 +then1394: + br label %while.end1393 +endif1396: + br label %while.cond1391 +while.end1393: %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.779, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.780, i64 29, i64 0 }) + %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.799, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.800, i64 29, i64 0 }) %t21 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch.copy.arr_str(ptr %a23, ptr %a22) @@ -14686,12 +16117,12 @@ entry: %a84 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.781, i64 6, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.801, i64 6, i64 0 }) store %S.ast.Node %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.782, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.783, i64 8, i64 0 }) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.802, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.803, i64 8, i64 0 }) %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.784, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.785, i64 13, i64 0 }) + %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.804, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.805, i64 13, i64 0 }) %t9 = extractvalue %S.lexer.Token %t8, 1 store { ptr, i64, i64 } %t9, ptr %a10 call void @finch_str_copy(ptr %a11, ptr %a10) @@ -14699,65 +16130,65 @@ entry: %t13 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t12, ptr %t13 %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.786, i64 1, i64 0 }) - br i1 %t15, label %then1340, label %endif1342 -then1340: + %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.806, i64 1, i64 0 }) + br i1 %t15, label %then1397, label %endif1399 +then1397: %t16 = load ptr, ptr %a1 %t17 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t16) %t18 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 store { ptr, i64, i64 } %t17, ptr %t18 - br label %endif1342 -endif1342: + br label %endif1399 +endif1399: %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.788, i64 3, i64 0 }) - br label %while.cond1343 -while.cond1343: + %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.807, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.808, i64 3, i64 0 }) + br label %while.cond1400 +while.cond1400: %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.789, i64 1, i64 0 }) + %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1344, label %while.end1345 -while.body1344: + br i1 %t23, label %while.body1401, label %while.end1402 +while.body1401: %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.790, i64 3, i64 0 }) - br i1 %t25, label %then1346, label %endif1348 -then1346: + %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) + br i1 %t25, label %then1403, label %endif1405 +then1403: %t26 = load ptr, ptr %a1 %t27 = load ptr, ptr %a1 %t28 = call %S.lexer.Token @finch.parser.cur(ptr %t27) - call void @finch.parser.fail(ptr %t26, %S.lexer.Token %t28, { ptr, i64, i64 } { ptr @.str.791, i64 38, i64 0 }) - br label %endif1348 -endif1348: + call void @finch.parser.fail(ptr %t26, %S.lexer.Token %t28, { ptr, i64, i64 } { ptr @.str.811, i64 38, i64 0 }) + br label %endif1405 +endif1405: %t29 = load ptr, ptr %a1 - %t30 = call %S.ast.Node @finch.parser.node(ptr %t29, { ptr, i64, i64 } { ptr @.str.792, i64 5, i64 0 }) + %t30 = call %S.ast.Node @finch.parser.node(ptr %t29, { ptr, i64, i64 } { ptr @.str.812, i64 5, i64 0 }) store %S.ast.Node %t30, ptr %a31 %t32 = load ptr, ptr %a1 %t33 = call i1 @finch.parser.atDeclaration(ptr %t32) %t34 = xor i1 %t33, true - br i1 %t34, label %then1349, label %endif1351 -then1349: + br i1 %t34, label %then1406, label %endif1408 +then1406: %t35 = load ptr, ptr %a1 %t36 = load ptr, ptr %a1 %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) %t38 = load ptr, ptr %a1 %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) %t40 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t39) - store { ptr, i64, i64 } { ptr @.str.793, i64 11, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.813, i64 11, i64 0 }, ptr %a42 store { ptr, i64, i64 } %t40, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.794, i64 28, i64 0 }, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.814, i64 28, i64 0 }, ptr %a47 call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) %t48 = load { ptr, i64, i64 }, ptr %a45 call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } %t48) - br label %endif1351 -endif1351: + br label %endif1408 +endif1408: %t49 = load ptr, ptr %a1 %t50 = call %S.ast.Type @finch.parser.parseType(ptr %t49) %t51 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 5 store %S.ast.Type %t50, ptr %t51 %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.expect(ptr %t52, { ptr, i64, i64 } { ptr @.str.795, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.796, i64 12, i64 0 }) + %t53 = call %S.lexer.Token @finch.parser.expect(ptr %t52, { ptr, i64, i64 } { ptr @.str.815, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.816, i64 12, i64 0 }) %t54 = extractvalue %S.lexer.Token %t53, 1 store { ptr, i64, i64 } %t54, ptr %a55 call void @finch_str_copy(ptr %a56, ptr %a55) @@ -14765,9 +16196,9 @@ endif1351: %t58 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 1 store { ptr, i64, i64 } %t57, ptr %t58 %t59 = load ptr, ptr %a1 - %t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.797, i64 1, i64 0 }) - br i1 %t60, label %then1352, label %endif1354 -then1352: + %t60 = call i1 @finch.parser.accept(ptr %t59, { ptr, i64, i64 } { ptr @.str.817, i64 1, i64 0 }) + br i1 %t60, label %then1409, label %endif1411 +then1409: %t61 = getelementptr inbounds %S.ast.Node, ptr %a31, i32 0, i32 9 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1 %t63 = load ptr, ptr %a1 @@ -14779,8 +16210,8 @@ then1352: %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 store %S.ast.Node %t64, ptr %t68 store i64 %t66, ptr %t62 - br label %endif1354 -endif1354: + br label %endif1411 +endif1411: %t69 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 %t71 = load %S.ast.Node, ptr %a31 @@ -14796,8 +16227,8 @@ endif1354: store i64 %t76, ptr %t70 %t79 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t79) - br label %while.cond1343 -while.end1345: + br label %while.cond1400 +while.end1402: %t80 = load ptr, ptr %a1 %t81 = call %S.lexer.Token @finch.parser.next(ptr %t80) %t82 = load %S.ast.Node, ptr %a4 @@ -14832,22 +16263,22 @@ entry: %a127 = alloca { ptr, i64, i64 }, align 16 %a128 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca %S.ast.Node, align 16 - %a141 = alloca %S.ast.Node, align 16 + %a153 = alloca %S.ast.Node, align 16 + %a154 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.798, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.818, i64 2, i64 0 }) store %S.ast.Node %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.accept(ptr %t5, { ptr, i64, i64 } { ptr @.str.799, i64 6, i64 0 }) + %t6 = call i1 @finch.parser.accept(ptr %t5, { ptr, i64, i64 } { ptr @.str.819, i64 6, i64 0 }) %t7 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 8 store i1 %t6, ptr %t7 %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.800, i64 5, i64 0 }) - br label %logic.from1355 -logic.from1355: - br i1 %t9, label %logic.rhs1356, label %logic.end1357 -logic.rhs1356: + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.820, i64 5, i64 0 }) + br label %logic.from1412 +logic.from1412: + br i1 %t9, label %logic.rhs1413, label %logic.end1414 +logic.rhs1413: %t10 = load ptr, ptr %a1 %t11 = call %S.lexer.Token @finch.parser.cur(ptr %t10) %t12 = extractvalue %S.lexer.Token %t11, 1 @@ -14855,23 +16286,23 @@ logic.rhs1356: call void @finch_str_copy(ptr %a14, ptr %a13) %t15 = load { ptr, i64, i64 }, ptr %a14 %t16 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - br label %logic.rend1358 -logic.rend1358: - br label %logic.end1357 -logic.end1357: - %t17 = phi i1 [ false, %logic.from1355 ], [ %t16, %logic.rend1358 ] - br i1 %t17, label %then1359, label %endif1361 -then1359: + br label %logic.rend1415 +logic.rend1415: + br label %logic.end1414 +logic.end1414: + %t17 = phi i1 [ false, %logic.from1412 ], [ %t16, %logic.rend1415 ] + br i1 %t17, label %then1416, label %endif1418 +then1416: %t18 = load ptr, ptr %a1 %t19 = load ptr, ptr %a1 %t20 = call %S.lexer.Token @finch.parser.cur(ptr %t19) - call void @finch.parser.fail(ptr %t18, %S.lexer.Token %t20, { ptr, i64, i64 } { ptr @.str.801, i64 68, i64 0 }) - br label %endif1361 -endif1361: + call void @finch.parser.fail(ptr %t18, %S.lexer.Token %t20, { ptr, i64, i64 } { ptr @.str.821, i64 68, i64 0 }) + br label %endif1418 +endif1418: %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.802, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.803, i64 26, i64 0 }) + %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.822, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.823, i64 26, i64 0 }) %t23 = load ptr, ptr %a1 - %t24 = call %S.lexer.Token @finch.parser.expect(ptr %t23, { ptr, i64, i64 } { ptr @.str.804, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.805, i64 15, i64 0 }) + %t24 = call %S.lexer.Token @finch.parser.expect(ptr %t23, { ptr, i64, i64 } { ptr @.str.824, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.825, i64 15, i64 0 }) %t25 = extractvalue %S.lexer.Token %t24, 1 store { ptr, i64, i64 } %t25, ptr %a26 call void @finch_str_copy(ptr %a27, ptr %a26) @@ -14879,19 +16310,19 @@ endif1361: %t29 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t28, ptr %t29 %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.806, i64 1, i64 0 }) - br i1 %t31, label %then1362, label %endif1364 -then1362: + %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.826, i64 1, i64 0 }) + br i1 %t31, label %then1419, label %endif1421 +then1419: %t32 = load ptr, ptr %a1 %t33 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t32) %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 store { ptr, i64, i64 } %t33, ptr %t34 - br label %endif1364 -endif1364: + br label %endif1421 +endif1421: %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.accept(ptr %t35, { ptr, i64, i64 } { ptr @.str.807, i64 1, i64 0 }) - br i1 %t36, label %then1365, label %endif1367 -then1365: + %t36 = call i1 @finch.parser.accept(ptr %t35, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) + br i1 %t36, label %then1422, label %endif1424 +then1422: %t37 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 %t38 = load { ptr, i64, i64 }, ptr %t37 %t39 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 @@ -14900,46 +16331,46 @@ then1365: %t42 = load { ptr, i64, i64 }, ptr %a41 store { ptr, i64, i64 } %t42, ptr %t39 %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.expect(ptr %t43, { ptr, i64, i64 } { ptr @.str.808, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.809, i64 13, i64 0 }) + %t44 = call %S.lexer.Token @finch.parser.expect(ptr %t43, { ptr, i64, i64 } { ptr @.str.828, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 13, i64 0 }) %t45 = extractvalue %S.lexer.Token %t44, 1 store { ptr, i64, i64 } %t45, ptr %a46 call void @finch_str_copy(ptr %a47, ptr %a46) %t48 = load { ptr, i64, i64 }, ptr %a47 %t49 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 store { ptr, i64, i64 } %t48, ptr %t49 - br label %endif1367 -endif1367: + br label %endif1424 +endif1424: %t50 = load ptr, ptr %a1 - %t51 = call %S.lexer.Token @finch.parser.expect(ptr %t50, { ptr, i64, i64 } { ptr @.str.810, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.811, i64 3, i64 0 }) + %t51 = call %S.lexer.Token @finch.parser.expect(ptr %t50, { ptr, i64, i64 } { ptr @.str.830, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.831, i64 3, i64 0 }) %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1368, label %ok1369 -panic1368: - call void @finch_panic(ptr @.str.812, i64 398, ptr @.str.813) + br i1 %t53, label %panic1425, label %ok1426 +panic1425: + call void @finch_panic(ptr @.str.832, i64 398, ptr @.str.833) unreachable -ok1369: +ok1426: %t54 = getelementptr inbounds %S.parser.Parser, ptr %t52, i32 0, i32 2 %t55 = load i64, ptr %t54 %t56 = add i64 %t55, 1 store i64 %t56, ptr %t54 %t57 = load ptr, ptr %a1 - %t58 = call i1 @finch.parser.at(ptr %t57, { ptr, i64, i64 } { ptr @.str.814, i64 1, i64 0 }) + %t58 = call i1 @finch.parser.at(ptr %t57, { ptr, i64, i64 } { ptr @.str.834, i64 1, i64 0 }) %t59 = xor i1 %t58, true - br i1 %t59, label %then1370, label %endif1372 -then1370: - br label %while.cond1373 -while.cond1373: - br label %while.body1374 -while.body1374: + br i1 %t59, label %then1427, label %endif1429 +then1427: + br label %while.cond1430 +while.cond1430: + br label %while.body1431 +while.body1431: %t60 = load ptr, ptr %a1 - %t61 = call %S.ast.Node @finch.parser.node(ptr %t60, { ptr, i64, i64 } { ptr @.str.815, i64 5, i64 0 }) + %t61 = call %S.ast.Node @finch.parser.node(ptr %t60, { ptr, i64, i64 } { ptr @.str.835, i64 5, i64 0 }) store %S.ast.Node %t61, ptr %a62 %t63 = load ptr, ptr %a1 %t64 = call %S.ast.Type @finch.parser.parseType(ptr %t63) %t65 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 5 store %S.ast.Type %t64, ptr %t65 %t66 = load ptr, ptr %a1 - %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.816, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 16, i64 0 }) + %t67 = call %S.lexer.Token @finch.parser.expect(ptr %t66, { ptr, i64, i64 } { ptr @.str.836, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 16, i64 0 }) %t68 = extractvalue %S.lexer.Token %t67, 1 store { ptr, i64, i64 } %t68, ptr %a69 call void @finch_str_copy(ptr %a70, ptr %a69) @@ -14960,91 +16391,91 @@ while.body1374: store %S.ast.Node %t78, ptr %t82 store i64 %t80, ptr %t74 %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.accept(ptr %t83, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) + %t84 = call i1 @finch.parser.accept(ptr %t83, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) %t85 = xor i1 %t84, true - br i1 %t85, label %then1376, label %endif1378 -then1376: - br label %while.end1375 -endif1378: - br label %while.cond1373 -while.end1375: - br label %endif1372 -endif1372: + br i1 %t85, label %then1433, label %endif1435 +then1433: + br label %while.end1432 +endif1435: + br label %while.cond1430 +while.end1432: + br label %endif1429 +endif1429: %t86 = load ptr, ptr %a1 %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1379, label %ok1380 -panic1379: - call void @finch_panic(ptr @.str.819, i64 410, ptr @.str.820) + br i1 %t87, label %panic1436, label %ok1437 +panic1436: + call void @finch_panic(ptr @.str.839, i64 410, ptr @.str.840) unreachable -ok1380: +ok1437: %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 2 %t89 = load i64, ptr %t88 %t90 = sub i64 %t89, 1 store i64 %t90, ptr %t88 %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.expect(ptr %t91, { ptr, i64, i64 } { ptr @.str.821, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.822, i64 3, i64 0 }) - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.823, i64 4, i64 0 }) + %t92 = call %S.lexer.Token @finch.parser.expect(ptr %t91, { ptr, i64, i64 } { ptr @.str.841, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.842, i64 3, i64 0 }) + %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.843, i64 4, i64 0 }) %t94 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 store %S.ast.Type %t93, ptr %t94 %t95 = load ptr, ptr %a1 - %t96 = call i1 @finch.parser.accept(ptr %t95, { ptr, i64, i64 } { ptr @.str.824, i64 2, i64 0 }) - br i1 %t96, label %then1381, label %endif1383 -then1381: + %t96 = call i1 @finch.parser.accept(ptr %t95, { ptr, i64, i64 } { ptr @.str.844, i64 2, i64 0 }) + br i1 %t96, label %then1438, label %endif1440 +then1438: %t97 = load ptr, ptr %a1 - %t98 = call i1 @finch.parser.at(ptr %t97, { ptr, i64, i64 } { ptr @.str.825, i64 1, i64 0 }) + %t98 = call i1 @finch.parser.at(ptr %t97, { ptr, i64, i64 } { ptr @.str.845, i64 1, i64 0 }) %t99 = xor i1 %t98, true - br i1 %t99, label %then1384, label %endif1386 -then1384: + br i1 %t99, label %then1441, label %endif1443 +then1441: %t100 = load ptr, ptr %a1 %t101 = call %S.ast.Type @finch.parser.parseType(ptr %t100) %t102 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 store %S.ast.Type %t101, ptr %t102 - br label %endif1386 -endif1386: + br label %endif1443 +endif1443: %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.826, i64 1, i64 0 }) + %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) %t105 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 store i1 %t104, ptr %t105 %t106 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 %t107 = load i1, ptr %t106 %t108 = xor i1 %t107, true - br label %logic.from1387 -logic.from1387: - br i1 %t108, label %logic.rhs1388, label %logic.end1389 -logic.rhs1388: + br label %logic.from1444 +logic.from1444: + br i1 %t108, label %logic.rhs1445, label %logic.end1446 +logic.rhs1445: %t109 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 %t110 = getelementptr inbounds %S.ast.Type, ptr %t109, i32 0, i32 0 %t111 = load { ptr, i64, i64 }, ptr %t110 store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.827, i64 4, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.847, i64 4, i64 0 }, ptr %a113 %t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113) %t115 = icmp ne i32 %t114, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t116 = phi i1 [ false, %logic.from1387 ], [ %t115, %logic.rend1390 ] - br i1 %t116, label %then1391, label %endif1393 -then1391: + br label %logic.rend1447 +logic.rend1447: + br label %logic.end1446 +logic.end1446: + %t116 = phi i1 [ false, %logic.from1444 ], [ %t115, %logic.rend1447 ] + br i1 %t116, label %then1448, label %endif1450 +then1448: %t117 = load ptr, ptr %a1 %t118 = load ptr, ptr %a1 %t119 = call %S.lexer.Token @finch.parser.cur(ptr %t118) %t120 = load ptr, ptr %a1 %t121 = call %S.lexer.Token @finch.parser.cur(ptr %t120) %t122 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t121) - store { ptr, i64, i64 } { ptr @.str.828, i64 11, i64 0 }, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.848, i64 11, i64 0 }, ptr %a124 store { ptr, i64, i64 } %t122, ptr %a125 call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) %t126 = load { ptr, i64, i64 }, ptr %a123 store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.829, i64 61, i64 0 }, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.849, i64 61, i64 0 }, ptr %a129 call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 call void @finch.parser.fail(ptr %t117, %S.lexer.Token %t119, { ptr, i64, i64 } %t130) - br label %endif1393 -endif1393: - br label %endif1383 -endif1383: + br label %endif1450 +endif1450: + br label %endif1440 +endif1440: %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 %t133 = load ptr, ptr %a1 @@ -15056,11 +16487,30 @@ endif1383: %t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135 store %S.ast.Node %t134, ptr %t138 store i64 %t136, ptr %t132 - %t139 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t139, ptr %a140 - call void @finch.copy.S_ast_Node(ptr %a141, ptr %a140) - %t142 = load %S.ast.Node, ptr %a141 - ret %S.ast.Node %t142 + %t139 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t140 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 + %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t140, i32 0, i32 1 + %t142 = load i64, ptr %t141 + %t143 = sub i64 %t142, 1 + %t144 = load { ptr, i64, i64 }, ptr %t139 + %t145 = extractvalue { ptr, i64, i64 } %t144, 1 + %t146 = icmp uge i64 %t143, %t145 + br i1 %t146, label %range1451, label %inrange1452 +range1451: + call void @finch_panic_index(ptr @.str.850, i64 423, i64 %t143, i64 %t145) + unreachable +inrange1452: + %t147 = extractvalue { ptr, i64, i64 } %t144, 0 + %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t143 + %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i32 0, i32 14 + %t150 = load i64, ptr %t149 + %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t150, ptr %t151 + %t152 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t152, ptr %a153 + call void @finch.copy.S_ast_Node(ptr %a154, ptr %a153) + %t155 = load %S.ast.Node, ptr %a154 + ret %S.ast.Node %t155 } define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { @@ -15068,50 +16518,50 @@ entry: %a1 = alloca ptr, align 16 %a4 = alloca %S.ast.Node, align 16 %a11 = alloca i64, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.ast.Node, align 16 + %a43 = alloca %S.ast.Node, align 16 + %a44 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, i64 5, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.851, i64 5, i64 0 }) store %S.ast.Node %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.831, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 3, i64 0 }) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.852, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.853, i64 3, i64 0 }) %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1394, label %ok1395 -panic1394: - call void @finch_panic(ptr @.str.833, i64 431, ptr @.str.834) + br i1 %t8, label %panic1453, label %ok1454 +panic1453: + call void @finch_panic(ptr @.str.854, i64 432, ptr @.str.855) unreachable -ok1395: +ok1454: %t9 = getelementptr inbounds %S.parser.Parser, ptr %t7, i32 0, i32 2 %t10 = load i64, ptr %t9 store i64 %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1396, label %ok1397 -panic1396: - call void @finch_panic(ptr @.str.835, i64 432, ptr @.str.836) + br i1 %t13, label %panic1455, label %ok1456 +panic1455: + call void @finch_panic(ptr @.str.856, i64 433, ptr @.str.857) unreachable -ok1397: +ok1456: %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 2 store i64 0, ptr %t14 - br label %while.cond1398 -while.cond1398: + br label %while.cond1457 +while.cond1457: %t15 = load ptr, ptr %a1 - %t16 = call i1 @finch.parser.at(ptr %t15, { ptr, i64, i64 } { ptr @.str.837, i64 1, i64 0 }) + %t16 = call i1 @finch.parser.at(ptr %t15, { ptr, i64, i64 } { ptr @.str.858, i64 1, i64 0 }) %t17 = xor i1 %t16, true - br i1 %t17, label %while.body1399, label %while.end1400 -while.body1399: + br i1 %t17, label %while.body1458, label %while.end1459 +while.body1458: %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.838, i64 3, i64 0 }) - br i1 %t19, label %then1401, label %endif1403 -then1401: + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.859, i64 3, i64 0 }) + br i1 %t19, label %then1460, label %endif1462 +then1460: %t20 = load ptr, ptr %a1 %t21 = load ptr, ptr %a1 %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - call void @finch.parser.fail(ptr %t20, %S.lexer.Token %t22, { ptr, i64, i64 } { ptr @.str.839, i64 35, i64 0 }) - br label %endif1403 -endif1403: + call void @finch.parser.fail(ptr %t20, %S.lexer.Token %t22, { ptr, i64, i64 } { ptr @.str.860, i64 35, i64 0 }) + br label %endif1462 +endif1462: %t23 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 %t25 = load ptr, ptr %a1 @@ -15125,25 +16575,30 @@ endif1403: store i64 %t28, ptr %t24 %t31 = load ptr, ptr %a1 call void @finch.parser.endOfStatement(ptr %t31) - br label %while.cond1398 -while.end1400: + br label %while.cond1457 +while.end1459: %t32 = load i64, ptr %a11 %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic1404, label %ok1405 -panic1404: - call void @finch_panic(ptr @.str.840, i64 440, ptr @.str.841) + br i1 %t34, label %panic1463, label %ok1464 +panic1463: + call void @finch_panic(ptr @.str.861, i64 441, ptr @.str.862) unreachable -ok1405: +ok1464: %t35 = getelementptr inbounds %S.parser.Parser, ptr %t33, i32 0, i32 2 store i64 %t32, ptr %t35 %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.next(ptr %t36) - %t38 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t38, ptr %a39 - call void @finch.copy.S_ast_Node(ptr %a40, ptr %a39) - %t41 = load %S.ast.Node, ptr %a40 - ret %S.ast.Node %t41 + %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) + %t38 = extractvalue %S.lexer.Token %t37, 2 + %t39 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 + store i64 %t38, ptr %t39 + %t40 = load ptr, ptr %a1 + %t41 = call %S.lexer.Token @finch.parser.next(ptr %t40) + %t42 = load %S.ast.Node, ptr %a4 + store %S.ast.Node %t42, ptr %a43 + call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) + %t45 = load %S.ast.Node, ptr %a44 + ret %S.ast.Node %t45 } define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { @@ -15236,24 +16691,24 @@ entry: store { ptr, i64, i64 } %t3, ptr %a4 %t5 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.842, i64 2, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.863, i64 2, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br i1 %t9, label %then1406, label %endif1408 -then1406: + br i1 %t9, label %then1465, label %endif1467 +then1465: %t10 = load ptr, ptr %a1 %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) ret %S.ast.Node %t11 -endif1408: +endif1467: %t12 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.843, i64 5, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br i1 %t16, label %then1409, label %endif1411 -then1409: + br i1 %t16, label %then1468, label %endif1470 +then1468: %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }) + %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }) store %S.ast.Node %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = call %S.lexer.Token @finch.parser.next(ptr %t20) @@ -15281,21 +16736,21 @@ then1409: store i64 %t35, ptr %t31 %t38 = load %S.ast.Node, ptr %a19 ret %S.ast.Node %t38 -endif1411: +endif1470: %t39 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.845, i64 3, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.866, i64 3, i64 0 }, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1412, label %endif1414 -then1412: + br i1 %t43, label %then1471, label %endif1473 +then1471: %t44 = load ptr, ptr %a1 - %t45 = call %S.ast.Node @finch.parser.node(ptr %t44, { ptr, i64, i64 } { ptr @.str.846, i64 3, i64 0 }) + %t45 = call %S.ast.Node @finch.parser.node(ptr %t44, { ptr, i64, i64 } { ptr @.str.867, i64 3, i64 0 }) store %S.ast.Node %t45, ptr %a46 %t47 = load ptr, ptr %a1 %t48 = call %S.lexer.Token @finch.parser.next(ptr %t47) %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.expect(ptr %t49, { ptr, i64, i64 } { ptr @.str.847, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.848, i64 20, i64 0 }) + %t50 = call %S.lexer.Token @finch.parser.expect(ptr %t49, { ptr, i64, i64 } { ptr @.str.868, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.869, i64 20, i64 0 }) %t51 = extractvalue %S.lexer.Token %t50, 1 store { ptr, i64, i64 } %t51, ptr %a52 call void @finch_str_copy(ptr %a53, ptr %a52) @@ -15303,21 +16758,21 @@ then1412: %t55 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 1 store { ptr, i64, i64 } %t54, ptr %t55 %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.849, i64 1, i64 0 }) - br i1 %t57, label %then1415, label %endif1417 -then1415: + %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }) + br i1 %t57, label %then1474, label %endif1476 +then1474: %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.expect(ptr %t58, { ptr, i64, i64 } { ptr @.str.850, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.851, i64 27, i64 0 }) + %t59 = call %S.lexer.Token @finch.parser.expect(ptr %t58, { ptr, i64, i64 } { ptr @.str.871, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.872, i64 27, i64 0 }) %t60 = extractvalue %S.lexer.Token %t59, 1 store { ptr, i64, i64 } %t60, ptr %a61 call void @finch_str_copy(ptr %a62, ptr %a61) %t63 = load { ptr, i64, i64 }, ptr %a62 %t64 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 4 store { ptr, i64, i64 } %t63, ptr %t64 - br label %endif1417 -endif1417: + br label %endif1476 +endif1476: %t65 = load ptr, ptr %a1 - %t66 = call %S.lexer.Token @finch.parser.expect(ptr %t65, { ptr, i64, i64 } { ptr @.str.852, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.853, i64 4, i64 0 }) + %t66 = call %S.lexer.Token @finch.parser.expect(ptr %t65, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.874, i64 4, i64 0 }) %t67 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9 %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 %t69 = load ptr, ptr %a1 @@ -15330,21 +16785,21 @@ endif1417: store %S.ast.Node %t70, ptr %t74 store i64 %t72, ptr %t68 %t75 = load ptr, ptr %a1 - %t76 = call i1 @finch.parser.accept(ptr %t75, { ptr, i64, i64 } { ptr @.str.854, i64 2, i64 0 }) - br i1 %t76, label %then1418, label %else1419 -then1418: + %t76 = call i1 @finch.parser.accept(ptr %t75, { ptr, i64, i64 } { ptr @.str.875, i64 2, i64 0 }) + br i1 %t76, label %then1477, label %else1478 +then1477: %t77 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 4 %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 %t79 = load i64, ptr %t78 %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then1421, label %endif1423 -then1421: + br i1 %t80, label %then1480, label %endif1482 +then1480: %t81 = load ptr, ptr %a1 %t82 = load ptr, ptr %a1 %t83 = call %S.lexer.Token @finch.parser.cur(ptr %t82) - call void @finch.parser.fail(ptr %t81, %S.lexer.Token %t83, { ptr, i64, i64 } { ptr @.str.855, i64 55, i64 0 }) - br label %endif1423 -endif1423: + call void @finch.parser.fail(ptr %t81, %S.lexer.Token %t83, { ptr, i64, i64 } { ptr @.str.876, i64 55, i64 0 }) + br label %endif1482 +endif1482: %t84 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9 %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i32 0, i32 1 %t86 = load ptr, ptr %a1 @@ -15356,12 +16811,12 @@ endif1423: %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 %t88 store %S.ast.Node %t87, ptr %t91 store i64 %t89, ptr %t85 - br label %endif1420 -else1419: + br label %endif1479 +else1478: %t92 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.856, i64 4, i64 0 }, ptr %t92 - br label %endif1420 -endif1420: + store { ptr, i64, i64 } { ptr @.str.877, i64 4, i64 0 }, ptr %t92 + br label %endif1479 +endif1479: %t93 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9 %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 %t95 = load ptr, ptr %a1 @@ -15375,48 +16830,48 @@ endif1420: store i64 %t98, ptr %t94 %t101 = load %S.ast.Node, ptr %a46 ret %S.ast.Node %t101 -endif1414: +endif1473: %t102 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.878, i64 5, i64 0 }, ptr %a104 %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) %t106 = icmp ne i32 %t105, 0 - br i1 %t106, label %then1424, label %endif1426 -then1424: + br i1 %t106, label %then1483, label %endif1485 +then1483: %t107 = load ptr, ptr %a1 %t108 = call %S.ast.Node @finch.parser.parseMatch(ptr %t107, i1 false) ret %S.ast.Node %t108 -endif1426: +endif1485: %t109 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.858, i64 6, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.879, i64 6, i64 0 }, ptr %a111 %t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111) %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %then1427, label %endif1429 -then1427: + br i1 %t113, label %then1486, label %endif1488 +then1486: %t114 = load ptr, ptr %a1 - %t115 = call %S.ast.Node @finch.parser.node(ptr %t114, { ptr, i64, i64 } { ptr @.str.859, i64 6, i64 0 }) + %t115 = call %S.ast.Node @finch.parser.node(ptr %t114, { ptr, i64, i64 } { ptr @.str.880, i64 6, i64 0 }) store %S.ast.Node %t115, ptr %a116 %t117 = load ptr, ptr %a1 %t118 = call %S.lexer.Token @finch.parser.next(ptr %t117) %t119 = load ptr, ptr %a1 - %t120 = call i1 @finch.parser.at(ptr %t119, { ptr, i64, i64 } { ptr @.str.860, i64 1, i64 0 }) + %t120 = call i1 @finch.parser.at(ptr %t119, { ptr, i64, i64 } { ptr @.str.881, i64 1, i64 0 }) %t121 = xor i1 %t120, true - br label %logic.from1430 -logic.from1430: - br i1 %t121, label %logic.rhs1431, label %logic.end1432 -logic.rhs1431: + br label %logic.from1489 +logic.from1489: + br i1 %t121, label %logic.rhs1490, label %logic.end1491 +logic.rhs1490: %t122 = load ptr, ptr %a1 %t123 = call %S.lexer.Token @finch.parser.cur(ptr %t122) %t124 = extractvalue %S.lexer.Token %t123, 4 %t125 = xor i1 %t124, true - br label %logic.rend1433 -logic.rend1433: - br label %logic.end1432 -logic.end1432: - %t126 = phi i1 [ false, %logic.from1430 ], [ %t125, %logic.rend1433 ] - br i1 %t126, label %then1434, label %endif1436 -then1434: + br label %logic.rend1492 +logic.rend1492: + br label %logic.end1491 +logic.end1491: + %t126 = phi i1 [ false, %logic.from1489 ], [ %t125, %logic.rend1492 ] + br i1 %t126, label %then1493, label %endif1495 +then1493: %t127 = getelementptr inbounds %S.ast.Node, ptr %a116, i32 0, i32 9 %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 %t129 = load ptr, ptr %a1 @@ -15428,32 +16883,32 @@ then1434: %t134 = getelementptr inbounds %S.ast.Node, ptr %t133, i64 %t131 store %S.ast.Node %t130, ptr %t134 store i64 %t132, ptr %t128 - br label %endif1436 -endif1436: + br label %endif1495 +endif1495: %t135 = load %S.ast.Node, ptr %a116 ret %S.ast.Node %t135 -endif1429: +endif1488: %t136 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.861, i64 5, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.882, i64 5, i64 0 }, ptr %a138 %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) %t140 = icmp ne i32 %t139, 0 - br label %logic.from1437 -logic.from1437: - br i1 %t140, label %logic.end1439, label %logic.rhs1438 -logic.rhs1438: + br label %logic.from1496 +logic.from1496: + br i1 %t140, label %logic.end1498, label %logic.rhs1497 +logic.rhs1497: %t141 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.862, i64 8, i64 0 }, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.883, i64 8, i64 0 }, ptr %a143 %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) %t145 = icmp ne i32 %t144, 0 - br label %logic.rend1440 -logic.rend1440: - br label %logic.end1439 -logic.end1439: - %t146 = phi i1 [ true, %logic.from1437 ], [ %t145, %logic.rend1440 ] - br i1 %t146, label %then1441, label %endif1443 -then1441: + br label %logic.rend1499 +logic.rend1499: + br label %logic.end1498 +logic.end1498: + %t146 = phi i1 [ true, %logic.from1496 ], [ %t145, %logic.rend1499 ] + br i1 %t146, label %then1500, label %endif1502 +then1500: %t147 = load ptr, ptr %a1 %t148 = load { ptr, i64, i64 }, ptr %a4 %t149 = call %S.ast.Node @finch.parser.node(ptr %t147, { ptr, i64, i64 } %t148) @@ -15462,40 +16917,40 @@ then1441: %t152 = call %S.lexer.Token @finch.parser.next(ptr %t151) %t153 = load %S.ast.Node, ptr %a150 ret %S.ast.Node %t153 -endif1443: +endif1502: %t154 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t154, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.884, i64 1, i64 0 }, ptr %a156 %t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156) %t158 = icmp ne i32 %t157, 0 - br i1 %t158, label %then1444, label %endif1446 -then1444: + br i1 %t158, label %then1503, label %endif1505 +then1503: %t159 = load ptr, ptr %a1 %t160 = call %S.ast.Node @finch.parser.parseBlock(ptr %t159) ret %S.ast.Node %t160 -endif1446: +endif1505: %t161 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t161, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.885, i64 5, i64 0 }, ptr %a163 %t164 = call i32 @finch_str_eq(ptr %a162, ptr %a163) %t165 = icmp ne i32 %t164, 0 - br i1 %t165, label %then1447, label %endif1449 -then1447: + br i1 %t165, label %then1506, label %endif1508 +then1506: %t166 = load ptr, ptr %a1 - %t167 = call %S.ast.Node @finch.parser.node(ptr %t166, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }) + %t167 = call %S.ast.Node @finch.parser.node(ptr %t166, { ptr, i64, i64 } { ptr @.str.886, i64 5, i64 0 }) store %S.ast.Node %t167, ptr %a168 %t169 = load ptr, ptr %a1 %t170 = call %S.lexer.Token @finch.parser.next(ptr %t169) %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.866, i64 5, i64 0 }) - br i1 %t172, label %then1450, label %endif1452 -then1450: + %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.887, i64 5, i64 0 }) + br i1 %t172, label %then1509, label %endif1511 +then1509: %t173 = load ptr, ptr %a1 %t174 = load ptr, ptr %a1 %t175 = call %S.lexer.Token @finch.parser.cur(ptr %t174) - call void @finch.parser.fail(ptr %t173, %S.lexer.Token %t175, { ptr, i64, i64 } { ptr @.str.867, i64 33, i64 0 }) - br label %endif1452 -endif1452: + call void @finch.parser.fail(ptr %t173, %S.lexer.Token %t175, { ptr, i64, i64 } { ptr @.str.888, i64 33, i64 0 }) + br label %endif1511 +endif1511: %t176 = getelementptr inbounds %S.ast.Node, ptr %a168, i32 0, i32 9 %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i32 0, i32 1 %t178 = load ptr, ptr %a1 @@ -15509,77 +16964,77 @@ endif1452: store i64 %t181, ptr %t177 %t184 = load %S.ast.Node, ptr %a168 ret %S.ast.Node %t184 -endif1449: +endif1508: %t185 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.868, i64 2, i64 0 }, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.889, i64 2, i64 0 }, ptr %a187 %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) %t189 = icmp ne i32 %t188, 0 - br label %logic.from1453 -logic.from1453: - br i1 %t189, label %logic.end1455, label %logic.rhs1454 -logic.rhs1454: + br label %logic.from1512 +logic.from1512: + br i1 %t189, label %logic.end1514, label %logic.rhs1513 +logic.rhs1513: %t190 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.869, i64 6, i64 0 }, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.890, i64 6, i64 0 }, ptr %a192 %t193 = call i32 @finch_str_eq(ptr %a191, ptr %a192) %t194 = icmp ne i32 %t193, 0 - br label %logic.rend1456 -logic.rend1456: - br label %logic.end1455 -logic.end1455: - %t195 = phi i1 [ true, %logic.from1453 ], [ %t194, %logic.rend1456 ] - br label %logic.from1457 -logic.from1457: - br i1 %t195, label %logic.end1459, label %logic.rhs1458 -logic.rhs1458: + br label %logic.rend1515 +logic.rend1515: + br label %logic.end1514 +logic.end1514: + %t195 = phi i1 [ true, %logic.from1512 ], [ %t194, %logic.rend1515 ] + br label %logic.from1516 +logic.from1516: + br i1 %t195, label %logic.end1518, label %logic.rhs1517 +logic.rhs1517: %t196 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t196, ptr %a197 - store { ptr, i64, i64 } { ptr @.str.870, i64 6, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.891, i64 6, i64 0 }, ptr %a198 %t199 = call i32 @finch_str_eq(ptr %a197, ptr %a198) %t200 = icmp ne i32 %t199, 0 - br label %logic.rend1460 -logic.rend1460: - br label %logic.end1459 -logic.end1459: - %t201 = phi i1 [ true, %logic.from1457 ], [ %t200, %logic.rend1460 ] - br label %logic.from1461 -logic.from1461: - br i1 %t201, label %logic.end1463, label %logic.rhs1462 -logic.rhs1462: + br label %logic.rend1519 +logic.rend1519: + br label %logic.end1518 +logic.end1518: + %t201 = phi i1 [ true, %logic.from1516 ], [ %t200, %logic.rend1519 ] + br label %logic.from1520 +logic.from1520: + br i1 %t201, label %logic.end1522, label %logic.rhs1521 +logic.rhs1521: %t202 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.871, i64 4, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.892, i64 4, i64 0 }, ptr %a204 %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) %t206 = icmp ne i32 %t205, 0 - br label %logic.rend1464 -logic.rend1464: - br label %logic.end1463 -logic.end1463: - %t207 = phi i1 [ true, %logic.from1461 ], [ %t206, %logic.rend1464 ] - br i1 %t207, label %then1465, label %endif1467 -then1465: + br label %logic.rend1523 +logic.rend1523: + br label %logic.end1522 +logic.end1522: + %t207 = phi i1 [ true, %logic.from1520 ], [ %t206, %logic.rend1523 ] + br i1 %t207, label %then1524, label %endif1526 +then1524: %t208 = load ptr, ptr %a1 %t209 = load ptr, ptr %a1 %t210 = call %S.lexer.Token @finch.parser.cur(ptr %t209) %t211 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.872, i64 1, i64 0 }, ptr %a213 + store { ptr, i64, i64 } { ptr @.str.893, i64 1, i64 0 }, ptr %a213 store { ptr, i64, i64 } %t211, ptr %a214 call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) %t215 = load { ptr, i64, i64 }, ptr %a212 store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.873, i64 48, i64 0 }, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.894, i64 48, i64 0 }, ptr %a218 call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) %t219 = load { ptr, i64, i64 }, ptr %a216 call void @finch.parser.fail(ptr %t208, %S.lexer.Token %t210, { ptr, i64, i64 } %t219) - br label %endif1467 -endif1467: + br label %endif1526 +endif1526: %t220 = load ptr, ptr %a1 %t221 = call i1 @finch.parser.atDeclaration(ptr %t220) - br i1 %t221, label %then1468, label %endif1470 -then1468: + br i1 %t221, label %then1527, label %endif1529 +then1527: %t222 = load ptr, ptr %a1 - %t223 = call %S.ast.Node @finch.parser.node(ptr %t222, { ptr, i64, i64 } { ptr @.str.874, i64 4, i64 0 }) + %t223 = call %S.ast.Node @finch.parser.node(ptr %t222, { ptr, i64, i64 } { ptr @.str.895, i64 4, i64 0 }) store %S.ast.Node %t223, ptr %a224 %t225 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 6 store i1 true, ptr %t225 @@ -15588,7 +17043,7 @@ then1468: %t228 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 5 store %S.ast.Type %t227, ptr %t228 %t229 = load ptr, ptr %a1 - %t230 = call %S.lexer.Token @finch.parser.expect(ptr %t229, { ptr, i64, i64 } { ptr @.str.875, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.876, i64 15, i64 0 }) + %t230 = call %S.lexer.Token @finch.parser.expect(ptr %t229, { ptr, i64, i64 } { ptr @.str.896, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.897, i64 15, i64 0 }) %t231 = extractvalue %S.lexer.Token %t230, 1 store { ptr, i64, i64 } %t231, ptr %a232 call void @finch_str_copy(ptr %a233, ptr %a232) @@ -15596,9 +17051,9 @@ then1468: %t235 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 1 store { ptr, i64, i64 } %t234, ptr %t235 %t236 = load ptr, ptr %a1 - %t237 = call i1 @finch.parser.accept(ptr %t236, { ptr, i64, i64 } { ptr @.str.877, i64 1, i64 0 }) - br i1 %t237, label %then1471, label %endif1473 -then1471: + %t237 = call i1 @finch.parser.accept(ptr %t236, { ptr, i64, i64 } { ptr @.str.898, i64 1, i64 0 }) + br i1 %t237, label %then1530, label %endif1532 +then1530: %t238 = getelementptr inbounds %S.ast.Node, ptr %a224, i32 0, i32 9 %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 %t240 = load ptr, ptr %a1 @@ -15610,32 +17065,32 @@ then1471: %t245 = getelementptr inbounds %S.ast.Node, ptr %t244, i64 %t242 store %S.ast.Node %t241, ptr %t245 store i64 %t243, ptr %t239 - br label %endif1473 -endif1473: + br label %endif1532 +endif1532: %t246 = load %S.ast.Node, ptr %a224 ret %S.ast.Node %t246 -endif1470: +endif1529: %t247 = load ptr, ptr %a1 - %t248 = call i1 @finch.parser.at(ptr %t247, { ptr, i64, i64 } { ptr @.str.878, i64 5, i64 0 }) - br label %logic.from1474 -logic.from1474: - br i1 %t248, label %logic.rhs1475, label %logic.end1476 -logic.rhs1475: + %t248 = call i1 @finch.parser.at(ptr %t247, { ptr, i64, i64 } { ptr @.str.899, i64 5, i64 0 }) + br label %logic.from1533 +logic.from1533: + br i1 %t248, label %logic.rhs1534, label %logic.end1535 +logic.rhs1534: %t249 = load ptr, ptr %a1 %t250 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t249, i64 1) store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.879, i64 2, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.900, i64 2, i64 0 }, ptr %a252 %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) %t254 = icmp ne i32 %t253, 0 - br label %logic.rend1477 -logic.rend1477: - br label %logic.end1476 -logic.end1476: - %t255 = phi i1 [ false, %logic.from1474 ], [ %t254, %logic.rend1477 ] - br i1 %t255, label %then1478, label %endif1480 -then1478: + br label %logic.rend1536 +logic.rend1536: + br label %logic.end1535 +logic.end1535: + %t255 = phi i1 [ false, %logic.from1533 ], [ %t254, %logic.rend1536 ] + br i1 %t255, label %then1537, label %endif1539 +then1537: %t256 = load ptr, ptr %a1 - %t257 = call %S.ast.Node @finch.parser.node(ptr %t256, { ptr, i64, i64 } { ptr @.str.880, i64 4, i64 0 }) + %t257 = call %S.ast.Node @finch.parser.node(ptr %t256, { ptr, i64, i64 } { ptr @.str.901, i64 4, i64 0 }) store %S.ast.Node %t257, ptr %a258 %t259 = load ptr, ptr %a1 %t260 = call %S.lexer.Token @finch.parser.next(ptr %t259) @@ -15660,7 +17115,7 @@ then1478: store i64 %t273, ptr %t269 %t276 = load %S.ast.Node, ptr %a258 ret %S.ast.Node %t276 -endif1480: +endif1539: %t277 = load ptr, ptr %a1 %t278 = call %S.lexer.Token @finch.parser.cur(ptr %t277) store %S.lexer.Token %t278, ptr %a279 @@ -15670,17 +17125,17 @@ endif1480: %t283 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t284 = call ptr @finch_alloc(i64 %t283) %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 0 - store { ptr, i64, i64 } { ptr @.str.881, i64 1, i64 0 }, ptr %t285 + store { ptr, i64, i64 } { ptr @.str.902, i64 1, i64 0 }, ptr %t285 %t286 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 1 - store { ptr, i64, i64 } { ptr @.str.882, i64 2, i64 0 }, ptr %t286 + store { ptr, i64, i64 } { ptr @.str.903, i64 2, i64 0 }, ptr %t286 %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 2 - store { ptr, i64, i64 } { ptr @.str.883, i64 2, i64 0 }, ptr %t287 + store { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }, ptr %t287 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 3 - store { ptr, i64, i64 } { ptr @.str.884, i64 2, i64 0 }, ptr %t288 + store { ptr, i64, i64 } { ptr @.str.905, i64 2, i64 0 }, ptr %t288 %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 4 - store { ptr, i64, i64 } { ptr @.str.885, i64 2, i64 0 }, ptr %t289 + store { ptr, i64, i64 } { ptr @.str.906, i64 2, i64 0 }, ptr %t289 %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i64 5 - store { ptr, i64, i64 } { ptr @.str.886, i64 2, i64 0 }, ptr %t290 + store { ptr, i64, i64 } { ptr @.str.907, i64 2, i64 0 }, ptr %t290 %t291 = insertvalue { ptr, i64, i64 } undef, ptr %t284, 0 %t292 = insertvalue { ptr, i64, i64 } %t291, i64 6, 1 %t293 = insertvalue { ptr, i64, i64 } %t292, i64 6, 2 @@ -15692,86 +17147,86 @@ endif1480: %t299 = load i64, ptr %t295 %t300 = load ptr, ptr %a294 store i64 0, ptr %a301 - br label %find.cond1481 -find.cond1481: + br label %find.cond1540 +find.cond1540: %t302 = load i64, ptr %a301 %t303 = icmp slt i64 %t302, %t299 - br i1 %t303, label %find.body1482, label %find.end1485 -find.body1482: + br i1 %t303, label %find.body1541, label %find.end1544 +find.body1541: %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t300, i64 %t302 %t305 = load { ptr, i64, i64 }, ptr %t304 store { ptr, i64, i64 } %t305, ptr %a306 store { ptr, i64, i64 } %t297, ptr %a307 %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %find.hit1483, label %find.next1484 -find.hit1483: + br i1 %t309, label %find.hit1542, label %find.next1543 +find.hit1542: store i64 %t302, ptr %a298 - br label %find.end1485 -find.next1484: + br label %find.end1544 +find.next1543: %t310 = add i64 %t302, 1 store i64 %t310, ptr %a301 - br label %find.cond1481 -find.end1485: + br label %find.cond1540 +find.end1544: %t311 = load i64, ptr %a298 %t312 = icmp sge i64 %t311, 0 - br label %logic.from1486 -logic.from1486: - br i1 %t312, label %logic.rhs1487, label %logic.end1488 -logic.rhs1487: + br label %logic.from1545 +logic.from1545: + br i1 %t312, label %logic.rhs1546, label %logic.end1547 +logic.rhs1546: %t313 = load ptr, ptr %a1 %t314 = call i1 @finch.parser.sameLine(ptr %t313) - br label %logic.rend1489 -logic.rend1489: - br label %logic.end1488 -logic.end1488: - %t315 = phi i1 [ false, %logic.from1486 ], [ %t314, %logic.rend1489 ] - br i1 %t315, label %then1490, label %endif1492 -then1490: + br label %logic.rend1548 +logic.rend1548: + br label %logic.end1547 +logic.end1547: + %t315 = phi i1 [ false, %logic.from1545 ], [ %t314, %logic.rend1548 ] + br i1 %t315, label %then1549, label %endif1551 +then1549: %t316 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t317 = load { ptr, i64, i64 }, ptr %t316 store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } { ptr @.str.887, i64 3, i64 0 }, ptr %a319 + store { ptr, i64, i64 } { ptr @.str.908, i64 3, i64 0 }, ptr %a319 %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) %t321 = icmp eq i32 %t320, 0 - br label %logic.from1493 -logic.from1493: - br i1 %t321, label %logic.rhs1494, label %logic.end1495 -logic.rhs1494: + br label %logic.from1552 +logic.from1552: + br i1 %t321, label %logic.rhs1553, label %logic.end1554 +logic.rhs1553: %t322 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t323 = load { ptr, i64, i64 }, ptr %t322 store { ptr, i64, i64 } %t323, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.888, i64 6, i64 0 }, ptr %a325 + store { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }, ptr %a325 %t326 = call i32 @finch_str_eq(ptr %a324, ptr %a325) %t327 = icmp eq i32 %t326, 0 - br label %logic.rend1496 -logic.rend1496: - br label %logic.end1495 -logic.end1495: - %t328 = phi i1 [ false, %logic.from1493 ], [ %t327, %logic.rend1496 ] - br label %logic.from1497 -logic.from1497: - br i1 %t328, label %logic.rhs1498, label %logic.end1499 -logic.rhs1498: + br label %logic.rend1555 +logic.rend1555: + br label %logic.end1554 +logic.end1554: + %t328 = phi i1 [ false, %logic.from1552 ], [ %t327, %logic.rend1555 ] + br label %logic.from1556 +logic.from1556: + br i1 %t328, label %logic.rhs1557, label %logic.end1558 +logic.rhs1557: %t329 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t330 = load { ptr, i64, i64 }, ptr %t329 store { ptr, i64, i64 } %t330, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.889, i64 5, i64 0 }, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.910, i64 5, i64 0 }, ptr %a332 %t333 = call i32 @finch_str_eq(ptr %a331, ptr %a332) %t334 = icmp eq i32 %t333, 0 - br label %logic.rend1500 -logic.rend1500: - br label %logic.end1499 -logic.end1499: - %t335 = phi i1 [ false, %logic.from1497 ], [ %t334, %logic.rend1500 ] - br i1 %t335, label %then1501, label %endif1503 -then1501: + br label %logic.rend1559 +logic.rend1559: + br label %logic.end1558 +logic.end1558: + %t335 = phi i1 [ false, %logic.from1556 ], [ %t334, %logic.rend1559 ] + br i1 %t335, label %then1560, label %endif1562 +then1560: %t336 = load ptr, ptr %a1 %t337 = load %S.lexer.Token, ptr %a279 - call void @finch.parser.fail(ptr %t336, %S.lexer.Token %t337, { ptr, i64, i64 } { ptr @.str.890, i64 66, i64 0 }) - br label %endif1503 -endif1503: - %t338 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.891, i64 6, i64 0 }, 0 + call void @finch.parser.fail(ptr %t336, %S.lexer.Token %t337, { ptr, i64, i64 } { ptr @.str.911, i64 66, i64 0 }) + br label %endif1562 +endif1562: + %t338 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.912, i64 6, i64 0 }, 0 %t339 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 2 %t340 = load i64, ptr %t339 %t341 = insertvalue %S.ast.Node %t338, i64 %t340, 11 @@ -15780,11 +17235,11 @@ endif1503: %t344 = insertvalue %S.ast.Node %t341, i64 %t343, 12 %t345 = load ptr, ptr %a1 %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic1504, label %ok1505 -panic1504: - call void @finch_panic(ptr @.str.892, i64 534, ptr @.str.893) + br i1 %t346, label %panic1563, label %ok1564 +panic1563: + call void @finch_panic(ptr @.str.913, i64 536, ptr @.str.914) unreachable -ok1505: +ok1564: %t347 = getelementptr inbounds %S.parser.Parser, ptr %t345, i32 0, i32 3 %t348 = load i64, ptr %t347 %t349 = insertvalue %S.ast.Node %t344, i64 %t348, 13 @@ -15823,66 +17278,66 @@ ok1505: store i64 %t373, ptr %t369 %t376 = load %S.ast.Node, ptr %a350 ret %S.ast.Node %t376 -endif1492: +endif1551: %t377 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t378 = load { ptr, i64, i64 }, ptr %t377 store { ptr, i64, i64 } %t378, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.894, i64 4, i64 0 }, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.915, i64 4, i64 0 }, ptr %a380 %t381 = call i32 @finch_str_eq(ptr %a379, ptr %a380) %t382 = icmp eq i32 %t381, 0 - br label %logic.from1506 -logic.from1506: - br i1 %t382, label %logic.rhs1507, label %logic.end1508 -logic.rhs1507: + br label %logic.from1565 +logic.from1565: + br i1 %t382, label %logic.rhs1566, label %logic.end1567 +logic.rhs1566: %t383 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t384 = load { ptr, i64, i64 }, ptr %t383 store { ptr, i64, i64 } %t384, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.895, i64 6, i64 0 }, ptr %a386 + store { ptr, i64, i64 } { ptr @.str.916, i64 6, i64 0 }, ptr %a386 %t387 = call i32 @finch_str_eq(ptr %a385, ptr %a386) %t388 = icmp eq i32 %t387, 0 - br label %logic.rend1509 -logic.rend1509: - br label %logic.end1508 -logic.end1508: - %t389 = phi i1 [ false, %logic.from1506 ], [ %t388, %logic.rend1509 ] - br label %logic.from1510 -logic.from1510: - br i1 %t389, label %logic.rhs1511, label %logic.end1512 -logic.rhs1511: + br label %logic.rend1568 +logic.rend1568: + br label %logic.end1567 +logic.end1567: + %t389 = phi i1 [ false, %logic.from1565 ], [ %t388, %logic.rend1568 ] + br label %logic.from1569 +logic.from1569: + br i1 %t389, label %logic.rhs1570, label %logic.end1571 +logic.rhs1570: %t390 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t391 = load { ptr, i64, i64 }, ptr %t390 store { ptr, i64, i64 } %t391, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }, ptr %a393 + store { ptr, i64, i64 } { ptr @.str.917, i64 3, i64 0 }, ptr %a393 %t394 = call i32 @finch_str_eq(ptr %a392, ptr %a393) %t395 = icmp eq i32 %t394, 0 - br label %logic.rend1513 -logic.rend1513: - br label %logic.end1512 -logic.end1512: - %t396 = phi i1 [ false, %logic.from1510 ], [ %t395, %logic.rend1513 ] - br label %logic.from1514 -logic.from1514: - br i1 %t396, label %logic.rhs1515, label %logic.end1516 -logic.rhs1515: + br label %logic.rend1572 +logic.rend1572: + br label %logic.end1571 +logic.end1571: + %t396 = phi i1 [ false, %logic.from1569 ], [ %t395, %logic.rend1572 ] + br label %logic.from1573 +logic.from1573: + br i1 %t396, label %logic.rhs1574, label %logic.end1575 +logic.rhs1574: %t397 = getelementptr inbounds %S.ast.Node, ptr %a282, i32 0, i32 0 %t398 = load { ptr, i64, i64 }, ptr %t397 store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.897, i64 2, i64 0 }, ptr %a400 + store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a400 %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) %t402 = icmp eq i32 %t401, 0 - br label %logic.rend1517 -logic.rend1517: - br label %logic.end1516 -logic.end1516: - %t403 = phi i1 [ false, %logic.from1514 ], [ %t402, %logic.rend1517 ] - br i1 %t403, label %then1518, label %endif1520 -then1518: + br label %logic.rend1576 +logic.rend1576: + br label %logic.end1575 +logic.end1575: + %t403 = phi i1 [ false, %logic.from1573 ], [ %t402, %logic.rend1576 ] + br i1 %t403, label %then1577, label %endif1579 +then1577: %t404 = load ptr, ptr %a1 %t405 = load %S.lexer.Token, ptr %a279 - call void @finch.parser.fail(ptr %t404, %S.lexer.Token %t405, { ptr, i64, i64 } { ptr @.str.898, i64 37, i64 0 }) - br label %endif1520 -endif1520: - %t406 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.899, i64 4, i64 0 }, 0 + call void @finch.parser.fail(ptr %t404, %S.lexer.Token %t405, { ptr, i64, i64 } { ptr @.str.919, i64 37, i64 0 }) + br label %endif1579 +endif1579: + %t406 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.920, i64 4, i64 0 }, 0 %t407 = getelementptr inbounds %S.lexer.Token, ptr %a279, i32 0, i32 2 %t408 = load i64, ptr %t407 %t409 = insertvalue %S.ast.Node %t406, i64 %t408, 11 @@ -15891,11 +17346,11 @@ endif1520: %t412 = insertvalue %S.ast.Node %t409, i64 %t411, 12 %t413 = load ptr, ptr %a1 %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic1521, label %ok1522 -panic1521: - call void @finch_panic(ptr @.str.900, i64 543, ptr @.str.901) + br i1 %t414, label %panic1580, label %ok1581 +panic1580: + call void @finch_panic(ptr @.str.921, i64 545, ptr @.str.922) unreachable -ok1522: +ok1581: %t415 = getelementptr inbounds %S.parser.Parser, ptr %t413, i32 0, i32 3 %t416 = load i64, ptr %t415 %t417 = insertvalue %S.ast.Node %t412, i64 %t416, 13 @@ -15928,10 +17383,10 @@ entry: %a45 = alloca %S.ast.Node, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }) + %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.923, i64 2, i64 0 }) store %S.ast.Node %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.903, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.904, i64 4, i64 0 }) + %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.924, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.925, i64 4, i64 0 }) %t7 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 %t9 = load ptr, ptr %a1 @@ -15955,13 +17410,13 @@ entry: store %S.ast.Node %t18, ptr %t22 store i64 %t20, ptr %t16 %t23 = load ptr, ptr %a1 - %t24 = call i1 @finch.parser.accept(ptr %t23, { ptr, i64, i64 } { ptr @.str.905, i64 4, i64 0 }) - br i1 %t24, label %then1523, label %endif1525 -then1523: + %t24 = call i1 @finch.parser.accept(ptr %t23, { ptr, i64, i64 } { ptr @.str.926, i64 4, i64 0 }) + br i1 %t24, label %then1582, label %endif1584 +then1582: %t25 = load ptr, ptr %a1 - %t26 = call i1 @finch.parser.at(ptr %t25, { ptr, i64, i64 } { ptr @.str.906, i64 2, i64 0 }) - br i1 %t26, label %then1526, label %else1527 -then1526: + %t26 = call i1 @finch.parser.at(ptr %t25, { ptr, i64, i64 } { ptr @.str.927, i64 2, i64 0 }) + br i1 %t26, label %then1585, label %else1586 +then1585: %t27 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i32 0, i32 1 %t29 = load ptr, ptr %a1 @@ -15973,8 +17428,8 @@ then1526: %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 store %S.ast.Node %t30, ptr %t34 store i64 %t32, ptr %t28 - br label %endif1528 -else1527: + br label %endif1587 +else1586: %t35 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 %t37 = load ptr, ptr %a1 @@ -15986,10 +17441,10 @@ else1527: %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 store %S.ast.Node %t38, ptr %t42 store i64 %t40, ptr %t36 - br label %endif1528 -endif1528: - br label %endif1525 -endif1525: + br label %endif1587 +endif1587: + br label %endif1584 +endif1584: %t43 = load %S.ast.Node, ptr %a4 store %S.ast.Node %t43, ptr %a44 call void @finch.copy.S_ast_Node(ptr %a45, ptr %a44) @@ -16039,231 +17494,231 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.907, i64 2, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.928, i64 2, i64 0 }, ptr %a4 %t5 = call i32 @finch_str_eq(ptr %a3, ptr %a4) %t6 = icmp ne i32 %t5, 0 - br i1 %t6, label %then1529, label %endif1531 -then1529: + br i1 %t6, label %then1588, label %endif1590 +then1588: ret i64 1 -endif1531: +endif1590: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.908, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then1532, label %endif1534 -then1532: + br i1 %t11, label %then1591, label %endif1593 +then1591: ret i64 2 -endif1534: +endif1593: %t12 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.909, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.930, i64 2, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br label %logic.from1535 -logic.from1535: - br i1 %t16, label %logic.end1537, label %logic.rhs1536 -logic.rhs1536: + br label %logic.from1594 +logic.from1594: + br i1 %t16, label %logic.end1596, label %logic.rhs1595 +logic.rhs1595: %t17 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.910, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.931, i64 2, i64 0 }, ptr %a19 %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) %t21 = icmp ne i32 %t20, 0 - br label %logic.rend1538 -logic.rend1538: - br label %logic.end1537 -logic.end1537: - %t22 = phi i1 [ true, %logic.from1535 ], [ %t21, %logic.rend1538 ] - br label %logic.from1539 -logic.from1539: - br i1 %t22, label %logic.end1541, label %logic.rhs1540 -logic.rhs1540: + br label %logic.rend1597 +logic.rend1597: + br label %logic.end1596 +logic.end1596: + %t22 = phi i1 [ true, %logic.from1594 ], [ %t21, %logic.rend1597 ] + br label %logic.from1598 +logic.from1598: + br i1 %t22, label %logic.end1600, label %logic.rhs1599 +logic.rhs1599: %t23 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.911, i64 1, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.932, i64 1, i64 0 }, ptr %a25 %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.rend1542 -logic.rend1542: - br label %logic.end1541 -logic.end1541: - %t28 = phi i1 [ true, %logic.from1539 ], [ %t27, %logic.rend1542 ] - br label %logic.from1543 -logic.from1543: - br i1 %t28, label %logic.end1545, label %logic.rhs1544 -logic.rhs1544: + br label %logic.rend1601 +logic.rend1601: + br label %logic.end1600 +logic.end1600: + %t28 = phi i1 [ true, %logic.from1598 ], [ %t27, %logic.rend1601 ] + br label %logic.from1602 +logic.from1602: + br i1 %t28, label %logic.end1604, label %logic.rhs1603 +logic.rhs1603: %t29 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.912, i64 2, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %a31 %t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31) %t33 = icmp ne i32 %t32, 0 - br label %logic.rend1546 -logic.rend1546: - br label %logic.end1545 -logic.end1545: - %t34 = phi i1 [ true, %logic.from1543 ], [ %t33, %logic.rend1546 ] - br label %logic.from1547 -logic.from1547: - br i1 %t34, label %logic.end1549, label %logic.rhs1548 -logic.rhs1548: + br label %logic.rend1605 +logic.rend1605: + br label %logic.end1604 +logic.end1604: + %t34 = phi i1 [ true, %logic.from1602 ], [ %t33, %logic.rend1605 ] + br label %logic.from1606 +logic.from1606: + br i1 %t34, label %logic.end1608, label %logic.rhs1607 +logic.rhs1607: %t35 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.934, i64 1, i64 0 }, ptr %a37 %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) %t39 = icmp ne i32 %t38, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t40 = phi i1 [ true, %logic.from1547 ], [ %t39, %logic.rend1550 ] - br label %logic.from1551 -logic.from1551: - br i1 %t40, label %logic.end1553, label %logic.rhs1552 -logic.rhs1552: + br label %logic.rend1609 +logic.rend1609: + br label %logic.end1608 +logic.end1608: + %t40 = phi i1 [ true, %logic.from1606 ], [ %t39, %logic.rend1609 ] + br label %logic.from1610 +logic.from1610: + br i1 %t40, label %logic.end1612, label %logic.rhs1611 +logic.rhs1611: %t41 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.914, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %a43 %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) %t45 = icmp ne i32 %t44, 0 - br label %logic.rend1554 -logic.rend1554: - br label %logic.end1553 -logic.end1553: - %t46 = phi i1 [ true, %logic.from1551 ], [ %t45, %logic.rend1554 ] - br i1 %t46, label %then1555, label %endif1557 -then1555: + br label %logic.rend1613 +logic.rend1613: + br label %logic.end1612 +logic.end1612: + %t46 = phi i1 [ true, %logic.from1610 ], [ %t45, %logic.rend1613 ] + br i1 %t46, label %then1614, label %endif1616 +then1614: ret i64 3 -endif1557: +endif1616: %t47 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.915, i64 1, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.936, i64 1, i64 0 }, ptr %a49 %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) %t51 = icmp ne i32 %t50, 0 - br label %logic.from1558 -logic.from1558: - br i1 %t51, label %logic.end1560, label %logic.rhs1559 -logic.rhs1559: + br label %logic.from1617 +logic.from1617: + br i1 %t51, label %logic.end1619, label %logic.rhs1618 +logic.rhs1618: %t52 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.916, i64 1, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.937, i64 1, i64 0 }, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br label %logic.rend1561 -logic.rend1561: - br label %logic.end1560 -logic.end1560: - %t57 = phi i1 [ true, %logic.from1558 ], [ %t56, %logic.rend1561 ] - br label %logic.from1562 -logic.from1562: - br i1 %t57, label %logic.end1564, label %logic.rhs1563 -logic.rhs1563: + br label %logic.rend1620 +logic.rend1620: + br label %logic.end1619 +logic.end1619: + %t57 = phi i1 [ true, %logic.from1617 ], [ %t56, %logic.rend1620 ] + br label %logic.from1621 +logic.from1621: + br i1 %t57, label %logic.end1623, label %logic.rhs1622 +logic.rhs1622: %t58 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.917, i64 1, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.938, i64 1, i64 0 }, ptr %a60 %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) %t62 = icmp ne i32 %t61, 0 - br label %logic.rend1565 -logic.rend1565: - br label %logic.end1564 -logic.end1564: - %t63 = phi i1 [ true, %logic.from1562 ], [ %t62, %logic.rend1565 ] - br label %logic.from1566 -logic.from1566: - br i1 %t63, label %logic.end1568, label %logic.rhs1567 -logic.rhs1567: + br label %logic.rend1624 +logic.rend1624: + br label %logic.end1623 +logic.end1623: + %t63 = phi i1 [ true, %logic.from1621 ], [ %t62, %logic.rend1624 ] + br label %logic.from1625 +logic.from1625: + br i1 %t63, label %logic.end1627, label %logic.rhs1626 +logic.rhs1626: %t64 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.918, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.939, i64 1, i64 0 }, ptr %a66 %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) %t68 = icmp ne i32 %t67, 0 - br label %logic.rend1569 -logic.rend1569: - br label %logic.end1568 -logic.end1568: - %t69 = phi i1 [ true, %logic.from1566 ], [ %t68, %logic.rend1569 ] - br i1 %t69, label %then1570, label %endif1572 -then1570: + br label %logic.rend1628 +logic.rend1628: + br label %logic.end1627 +logic.end1627: + %t69 = phi i1 [ true, %logic.from1625 ], [ %t68, %logic.rend1628 ] + br i1 %t69, label %then1629, label %endif1631 +then1629: ret i64 4 -endif1572: +endif1631: %t70 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.919, i64 1, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.940, i64 1, i64 0 }, ptr %a72 %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) %t74 = icmp ne i32 %t73, 0 - br label %logic.from1573 -logic.from1573: - br i1 %t74, label %logic.end1575, label %logic.rhs1574 -logic.rhs1574: + br label %logic.from1632 +logic.from1632: + br i1 %t74, label %logic.end1634, label %logic.rhs1633 +logic.rhs1633: %t75 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.920, i64 1, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.941, i64 1, i64 0 }, ptr %a77 %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1576 -logic.rend1576: - br label %logic.end1575 -logic.end1575: - %t80 = phi i1 [ true, %logic.from1573 ], [ %t79, %logic.rend1576 ] - br label %logic.from1577 -logic.from1577: - br i1 %t80, label %logic.end1579, label %logic.rhs1578 -logic.rhs1578: + br label %logic.rend1635 +logic.rend1635: + br label %logic.end1634 +logic.end1634: + %t80 = phi i1 [ true, %logic.from1632 ], [ %t79, %logic.rend1635 ] + br label %logic.from1636 +logic.from1636: + br i1 %t80, label %logic.end1638, label %logic.rhs1637 +logic.rhs1637: %t81 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.921, i64 1, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.942, i64 1, i64 0 }, ptr %a83 %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) %t85 = icmp ne i32 %t84, 0 - br label %logic.rend1580 -logic.rend1580: - br label %logic.end1579 -logic.end1579: - %t86 = phi i1 [ true, %logic.from1577 ], [ %t85, %logic.rend1580 ] - br label %logic.from1581 -logic.from1581: - br i1 %t86, label %logic.end1583, label %logic.rhs1582 -logic.rhs1582: + br label %logic.rend1639 +logic.rend1639: + br label %logic.end1638 +logic.end1638: + %t86 = phi i1 [ true, %logic.from1636 ], [ %t85, %logic.rend1639 ] + br label %logic.from1640 +logic.from1640: + br i1 %t86, label %logic.end1642, label %logic.rhs1641 +logic.rhs1641: %t87 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.922, i64 2, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.943, i64 2, i64 0 }, ptr %a89 %t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89) %t91 = icmp ne i32 %t90, 0 - br label %logic.rend1584 -logic.rend1584: - br label %logic.end1583 -logic.end1583: - %t92 = phi i1 [ true, %logic.from1581 ], [ %t91, %logic.rend1584 ] - br label %logic.from1585 -logic.from1585: - br i1 %t92, label %logic.end1587, label %logic.rhs1586 -logic.rhs1586: + br label %logic.rend1643 +logic.rend1643: + br label %logic.end1642 +logic.end1642: + %t92 = phi i1 [ true, %logic.from1640 ], [ %t91, %logic.rend1643 ] + br label %logic.from1644 +logic.from1644: + br i1 %t92, label %logic.end1646, label %logic.rhs1645 +logic.rhs1645: %t93 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.923, i64 2, i64 0 }, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.944, i64 2, i64 0 }, ptr %a95 %t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95) %t97 = icmp ne i32 %t96, 0 - br label %logic.rend1588 -logic.rend1588: - br label %logic.end1587 -logic.end1587: - %t98 = phi i1 [ true, %logic.from1585 ], [ %t97, %logic.rend1588 ] - br label %logic.from1589 -logic.from1589: - br i1 %t98, label %logic.end1591, label %logic.rhs1590 -logic.rhs1590: + br label %logic.rend1647 +logic.rend1647: + br label %logic.end1646 +logic.end1646: + %t98 = phi i1 [ true, %logic.from1644 ], [ %t97, %logic.rend1647 ] + br label %logic.from1648 +logic.from1648: + br i1 %t98, label %logic.end1650, label %logic.rhs1649 +logic.rhs1649: %t99 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.924, i64 1, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.945, i64 1, i64 0 }, ptr %a101 %t102 = call i32 @finch_str_eq(ptr %a100, ptr %a101) %t103 = icmp ne i32 %t102, 0 - br label %logic.rend1592 -logic.rend1592: - br label %logic.end1591 -logic.end1591: - %t104 = phi i1 [ true, %logic.from1589 ], [ %t103, %logic.rend1592 ] - br i1 %t104, label %then1593, label %endif1595 -then1593: + br label %logic.rend1651 +logic.rend1651: + br label %logic.end1650 +logic.end1650: + %t104 = phi i1 [ true, %logic.from1648 ], [ %t103, %logic.rend1651 ] + br i1 %t104, label %then1652, label %endif1654 +then1652: ret i64 5 -endif1595: +endif1654: ret i64 0 } @@ -16285,28 +17740,28 @@ entry: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) %t7 = xor i1 %t6, true - br label %logic.from1596 -logic.from1596: - br i1 %t7, label %logic.end1598, label %logic.rhs1597 -logic.rhs1597: + br label %logic.from1655 +logic.from1655: + br i1 %t7, label %logic.end1657, label %logic.rhs1656 +logic.rhs1656: %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.925, i64 2, i64 0 }) + %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.946, i64 2, i64 0 }) %t10 = xor i1 %t9, true - br label %logic.rend1599 -logic.rend1599: - br label %logic.end1598 -logic.end1598: - %t11 = phi i1 [ true, %logic.from1596 ], [ %t10, %logic.rend1599 ] - br i1 %t11, label %then1600, label %endif1602 -then1600: + br label %logic.rend1658 +logic.rend1658: + br label %logic.end1657 +logic.end1657: + %t11 = phi i1 [ true, %logic.from1655 ], [ %t10, %logic.rend1658 ] + br i1 %t11, label %then1659, label %endif1661 +then1659: %t12 = load %S.ast.Node, ptr %a4 store %S.ast.Node %t12, ptr %a13 call void @finch.copy.S_ast_Node(ptr %a14, ptr %a13) %t15 = load %S.ast.Node, ptr %a14 ret %S.ast.Node %t15 -endif1602: +endif1661: %t16 = load ptr, ptr %a1 - %t17 = call %S.ast.Node @finch.parser.node(ptr %t16, { ptr, i64, i64 } { ptr @.str.926, i64 2, i64 0 }) + %t17 = call %S.ast.Node @finch.parser.node(ptr %t16, { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }) store %S.ast.Node %t17, ptr %a18 %t19 = load ptr, ptr %a1 %t20 = call %S.lexer.Token @finch.parser.next(ptr %t19) @@ -16324,9 +17779,9 @@ endif1602: store %S.ast.Node %t26, ptr %t30 store i64 %t28, ptr %t22 %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t32, label %then1603, label %else1604 -then1603: + %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.948, i64 1, i64 0 }) + br i1 %t32, label %then1662, label %else1663 +then1662: %t33 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 6 store i1 true, ptr %t33 %t34 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 @@ -16340,8 +17795,8 @@ then1603: %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t38 store %S.ast.Node %t37, ptr %t41 store i64 %t39, ptr %t35 - br label %endif1605 -else1604: + br label %endif1664 +else1663: %t42 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 %t44 = load ptr, ptr %a1 @@ -16353,8 +17808,8 @@ else1604: %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 store %S.ast.Node %t45, ptr %t49 store i64 %t47, ptr %t43 - br label %endif1605 -endif1605: + br label %endif1664 +endif1664: %t50 = load %S.ast.Node, ptr %a18 store %S.ast.Node %t50, ptr %a51 call void @finch.copy.S_ast_Node(ptr %a52, ptr %a51) @@ -16380,39 +17835,39 @@ entry: store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1606, label %endif1608 -then1606: + br i1 %t4, label %then1665, label %endif1667 +then1665: %t5 = load ptr, ptr %a1 %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) ret %S.ast.Node %t6 -endif1608: +endif1667: %t7 = load ptr, ptr %a1 %t8 = load i64, ptr %a2 %t9 = add i64 %t8, 1 %t10 = call %S.ast.Node @finch.parser.parseBinary(ptr %t7, i64 %t9) store %S.ast.Node %t10, ptr %a11 - br label %while.cond1609 -while.cond1609: + br label %while.cond1668 +while.cond1668: %t12 = load ptr, ptr %a1 %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1612 -logic.from1612: - br i1 %t13, label %logic.rhs1613, label %logic.end1614 -logic.rhs1613: + br label %logic.from1671 +logic.from1671: + br i1 %t13, label %logic.rhs1672, label %logic.end1673 +logic.rhs1672: %t14 = load ptr, ptr %a1 %t15 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t14) %t16 = call i64 @finch.parser.binaryLevel({ ptr, i64, i64 } %t15) %t17 = load i64, ptr %a2 %t18 = icmp eq i64 %t16, %t17 - br label %logic.rend1615 -logic.rend1615: - br label %logic.end1614 -logic.end1614: - %t19 = phi i1 [ false, %logic.from1612 ], [ %t18, %logic.rend1615 ] - br i1 %t19, label %while.body1610, label %while.end1611 -while.body1610: + br label %logic.rend1674 +logic.rend1674: + br label %logic.end1673 +logic.end1673: + %t19 = phi i1 [ false, %logic.from1671 ], [ %t18, %logic.rend1674 ] + br i1 %t19, label %while.body1669, label %while.end1670 +while.body1669: %t20 = load ptr, ptr %a1 - %t21 = call %S.ast.Node @finch.parser.node(ptr %t20, { ptr, i64, i64 } { ptr @.str.928, i64 6, i64 0 }) + %t21 = call %S.ast.Node @finch.parser.node(ptr %t20, { ptr, i64, i64 } { ptr @.str.949, i64 6, i64 0 }) store %S.ast.Node %t21, ptr %a22 %t23 = load ptr, ptr %a1 %t24 = call %S.lexer.Token @finch.parser.next(ptr %t23) @@ -16453,8 +17908,8 @@ while.body1610: call void @finch.copy.S_ast_Node(ptr %a52, ptr %a51) %t53 = load %S.ast.Node, ptr %a52 store %S.ast.Node %t53, ptr %a11 - br label %while.cond1609 -while.end1611: + br label %while.cond1668 +while.end1670: %t54 = load %S.ast.Node, ptr %a11 store %S.ast.Node %t54, ptr %a55 call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) @@ -16471,11 +17926,11 @@ entry: %a33 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.929, i64 3, i64 0 }) - br i1 %t3, label %then1616, label %endif1618 -then1616: + %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.950, i64 3, i64 0 }) + br i1 %t3, label %then1675, label %endif1677 +then1675: %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.930, i64 3, i64 0 }) + %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.951, i64 3, i64 0 }) store %S.ast.Node %t5, ptr %a6 %t7 = load ptr, ptr %a1 %t8 = call %S.lexer.Token @finch.parser.next(ptr %t7) @@ -16492,35 +17947,35 @@ then1616: store i64 %t14, ptr %t10 %t17 = load %S.ast.Node, ptr %a6 ret %S.ast.Node %t17 -endif1618: +endif1677: %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }) - br label %logic.from1619 -logic.from1619: - br i1 %t19, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: + %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.952, i64 1, i64 0 }) + br label %logic.from1678 +logic.from1678: + br i1 %t19, label %logic.end1680, label %logic.rhs1679 +logic.rhs1679: %t20 = load ptr, ptr %a1 - %t21 = call i1 @finch.parser.at(ptr %t20, { ptr, i64, i64 } { ptr @.str.932, i64 1, i64 0 }) - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t22 = phi i1 [ true, %logic.from1619 ], [ %t21, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t22, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: + %t21 = call i1 @finch.parser.at(ptr %t20, { ptr, i64, i64 } { ptr @.str.953, i64 1, i64 0 }) + br label %logic.rend1681 +logic.rend1681: + br label %logic.end1680 +logic.end1680: + %t22 = phi i1 [ true, %logic.from1678 ], [ %t21, %logic.rend1681 ] + br label %logic.from1682 +logic.from1682: + br i1 %t22, label %logic.end1684, label %logic.rhs1683 +logic.rhs1683: %t23 = load ptr, ptr %a1 - %t24 = call i1 @finch.parser.at(ptr %t23, { ptr, i64, i64 } { ptr @.str.933, i64 1, i64 0 }) - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t25 = phi i1 [ true, %logic.from1623 ], [ %t24, %logic.rend1626 ] - br i1 %t25, label %then1627, label %endif1629 -then1627: + %t24 = call i1 @finch.parser.at(ptr %t23, { ptr, i64, i64 } { ptr @.str.954, i64 1, i64 0 }) + br label %logic.rend1685 +logic.rend1685: + br label %logic.end1684 +logic.end1684: + %t25 = phi i1 [ true, %logic.from1682 ], [ %t24, %logic.rend1685 ] + br i1 %t25, label %then1686, label %endif1688 +then1686: %t26 = load ptr, ptr %a1 - %t27 = call %S.ast.Node @finch.parser.node(ptr %t26, { ptr, i64, i64 } { ptr @.str.934, i64 5, i64 0 }) + %t27 = call %S.ast.Node @finch.parser.node(ptr %t26, { ptr, i64, i64 } { ptr @.str.955, i64 5, i64 0 }) store %S.ast.Node %t27, ptr %a28 %t29 = load ptr, ptr %a1 %t30 = call %S.lexer.Token @finch.parser.next(ptr %t29) @@ -16543,7 +17998,7 @@ then1627: store i64 %t41, ptr %t37 %t44 = load %S.ast.Node, ptr %a28 ret %S.ast.Node %t44 -endif1629: +endif1688: %t45 = load ptr, ptr %a1 %t46 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t45) ret %S.ast.Node %t46 @@ -16563,50 +18018,50 @@ entry: store ptr %p0, ptr %a1 store ptr %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.935, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.936, i64 3, i64 0 }) + %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.956, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.957, i64 3, i64 0 }) %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic1630, label %ok1631 -panic1630: - call void @finch_panic(ptr @.str.937, i64 636, ptr @.str.938) + br i1 %t6, label %panic1689, label %ok1690 +panic1689: + call void @finch_panic(ptr @.str.958, i64 638, ptr @.str.959) unreachable -ok1631: +ok1690: %t7 = getelementptr inbounds %S.parser.Parser, ptr %t5, i32 0, i32 2 %t8 = load i64, ptr %t7 %t9 = add i64 %t8, 1 store i64 %t9, ptr %t7 %t10 = load ptr, ptr %a1 - %t11 = call i1 @finch.parser.at(ptr %t10, { ptr, i64, i64 } { ptr @.str.939, i64 1, i64 0 }) + %t11 = call i1 @finch.parser.at(ptr %t10, { ptr, i64, i64 } { ptr @.str.960, i64 1, i64 0 }) %t12 = xor i1 %t11, true - br i1 %t12, label %then1632, label %endif1634 -then1632: - br label %while.cond1635 -while.cond1635: + br i1 %t12, label %then1691, label %endif1693 +then1691: + br label %while.cond1694 +while.cond1694: %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.940, i64 1, i64 0 }) + %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.961, i64 1, i64 0 }) %t15 = xor i1 %t14, true - br i1 %t15, label %while.body1636, label %while.end1637 -while.body1636: - store { ptr, i64, i64 } { ptr @.str.941, i64 0, i64 0 }, ptr %a16 + br i1 %t15, label %while.body1695, label %while.end1696 +while.body1695: + store { ptr, i64, i64 } { ptr @.str.962, i64 0, i64 0 }, ptr %a16 %t17 = load ptr, ptr %a1 - %t18 = call i1 @finch.parser.at(ptr %t17, { ptr, i64, i64 } { ptr @.str.942, i64 5, i64 0 }) - br label %logic.from1638 -logic.from1638: - br i1 %t18, label %logic.rhs1639, label %logic.end1640 -logic.rhs1639: + %t18 = call i1 @finch.parser.at(ptr %t17, { ptr, i64, i64 } { ptr @.str.963, i64 5, i64 0 }) + br label %logic.from1697 +logic.from1697: + br i1 %t18, label %logic.rhs1698, label %logic.end1699 +logic.rhs1698: %t19 = load ptr, ptr %a1 %t20 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t19, i64 1) store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.943, i64 1, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.964, i64 1, i64 0 }, ptr %a22 %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) %t24 = icmp ne i32 %t23, 0 - br label %logic.rend1641 -logic.rend1641: - br label %logic.end1640 -logic.end1640: - %t25 = phi i1 [ false, %logic.from1638 ], [ %t24, %logic.rend1641 ] - br i1 %t25, label %then1642, label %endif1644 -then1642: + br label %logic.rend1700 +logic.rend1700: + br label %logic.end1699 +logic.end1699: + %t25 = phi i1 [ false, %logic.from1697 ], [ %t24, %logic.rend1700 ] + br i1 %t25, label %then1701, label %endif1703 +then1701: %t26 = load ptr, ptr %a1 %t27 = call %S.lexer.Token @finch.parser.next(ptr %t26) %t28 = extractvalue %S.lexer.Token %t27, 1 @@ -16616,15 +18071,15 @@ then1642: store { ptr, i64, i64 } %t31, ptr %a16 %t32 = load ptr, ptr %a1 %t33 = call %S.lexer.Token @finch.parser.next(ptr %t32) - br label %endif1644 -endif1644: + br label %endif1703 +endif1703: %t34 = load ptr, ptr %a2 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1645, label %ok1646 -panic1645: - call void @finch_panic(ptr @.str.944, i64 644, ptr @.str.945) + br i1 %t35, label %panic1704, label %ok1705 +panic1704: + call void @finch_panic(ptr @.str.965, i64 646, ptr @.str.966) unreachable -ok1646: +ok1705: %t36 = getelementptr inbounds %S.ast.Node, ptr %t34, i32 0, i32 10 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 %t38 = load { ptr, i64, i64 }, ptr %a16 @@ -16640,11 +18095,11 @@ ok1646: store i64 %t43, ptr %t37 %t46 = load ptr, ptr %a2 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic1647, label %ok1648 -panic1647: - call void @finch_panic(ptr @.str.946, i64 645, ptr @.str.947) + br i1 %t47, label %panic1706, label %ok1707 +panic1706: + call void @finch_panic(ptr @.str.967, i64 647, ptr @.str.968) unreachable -ok1648: +ok1707: %t48 = getelementptr inbounds %S.ast.Node, ptr %t46, i32 0, i32 9 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 %t50 = load ptr, ptr %a1 @@ -16657,29 +18112,29 @@ ok1648: store %S.ast.Node %t51, ptr %t55 store i64 %t53, ptr %t49 %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.948, i64 1, i64 0 }) + %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.969, i64 1, i64 0 }) %t58 = xor i1 %t57, true - br i1 %t58, label %then1649, label %endif1651 -then1649: - br label %while.end1637 -endif1651: - br label %while.cond1635 -while.end1637: - br label %endif1634 -endif1634: + br i1 %t58, label %then1708, label %endif1710 +then1708: + br label %while.end1696 +endif1710: + br label %while.cond1694 +while.end1696: + br label %endif1693 +endif1693: %t59 = load ptr, ptr %a1 %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic1652, label %ok1653 -panic1652: - call void @finch_panic(ptr @.str.949, i64 651, ptr @.str.950) + br i1 %t60, label %panic1711, label %ok1712 +panic1711: + call void @finch_panic(ptr @.str.970, i64 653, ptr @.str.971) unreachable -ok1653: +ok1712: %t61 = getelementptr inbounds %S.parser.Parser, ptr %t59, i32 0, i32 2 %t62 = load i64, ptr %t61 %t63 = sub i64 %t62, 1 store i64 %t63, ptr %t61 %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.951, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.952, i64 3, i64 0 }) + %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.972, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.973, i64 3, i64 0 }) ret void } @@ -16707,23 +18162,23 @@ entry: %t2 = load ptr, ptr %a1 %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) store %S.ast.Node %t3, ptr %a4 - br label %while.cond1654 -while.cond1654: + br label %while.cond1713 +while.cond1713: %t5 = load ptr, ptr %a1 %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1655, label %while.end1656 -while.body1655: + br i1 %t6, label %while.body1714, label %while.end1715 +while.body1714: %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.953, i64 1, i64 0 }) - br i1 %t8, label %then1657, label %else1658 -then1657: + %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.974, i64 1, i64 0 }) + br i1 %t8, label %then1716, label %else1717 +then1716: %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.954, i64 6, i64 0 }) + %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.975, i64 6, i64 0 }) store %S.ast.Node %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = call %S.lexer.Token @finch.parser.next(ptr %t12) %t14 = load ptr, ptr %a1 - %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.955, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.956, i64 16, i64 0 }) + %t15 = call %S.lexer.Token @finch.parser.expect(ptr %t14, { ptr, i64, i64 } { ptr @.str.976, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.977, i64 16, i64 0 }) %t16 = extractvalue %S.lexer.Token %t15, 1 store { ptr, i64, i64 } %t16, ptr %a17 call void @finch_str_copy(ptr %a18, ptr %a17) @@ -16744,51 +18199,51 @@ then1657: store %S.ast.Node %t26, ptr %t30 store i64 %t28, ptr %t22 %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.957, i64 1, i64 0 }) - br label %logic.from1660 -logic.from1660: - br i1 %t32, label %logic.rhs1661, label %logic.end1662 -logic.rhs1661: + %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }) + br label %logic.from1719 +logic.from1719: + br i1 %t32, label %logic.rhs1720, label %logic.end1721 +logic.rhs1720: %t33 = load ptr, ptr %a1 %t34 = call %S.lexer.Token @finch.parser.cur(ptr %t33) %t35 = extractvalue %S.lexer.Token %t34, 4 %t36 = xor i1 %t35, true - br label %logic.rend1663 -logic.rend1663: - br label %logic.end1662 -logic.end1662: - %t37 = phi i1 [ false, %logic.from1660 ], [ %t36, %logic.rend1663 ] - br i1 %t37, label %then1664, label %endif1666 -then1664: + br label %logic.rend1722 +logic.rend1722: + br label %logic.end1721 +logic.end1721: + %t37 = phi i1 [ false, %logic.from1719 ], [ %t36, %logic.rend1722 ] + br i1 %t37, label %then1723, label %endif1725 +then1723: %t38 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.958, i64 6, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.979, i64 6, i64 0 }, ptr %t38 %t39 = load ptr, ptr %a1 call void @finch.parser.parseArgs(ptr %t39, ptr %a11) - br label %endif1666 -endif1666: + br label %endif1725 +endif1725: %t40 = load %S.ast.Node, ptr %a11 store %S.ast.Node %t40, ptr %a41 call void @finch.copy.S_ast_Node(ptr %a42, ptr %a41) %t43 = load %S.ast.Node, ptr %a42 store %S.ast.Node %t43, ptr %a4 - br label %endif1659 -else1658: + br label %endif1718 +else1717: %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.at(ptr %t44, { ptr, i64, i64 } { ptr @.str.959, i64 1, i64 0 }) - br i1 %t45, label %then1667, label %else1668 -then1667: + %t45 = call i1 @finch.parser.at(ptr %t44, { ptr, i64, i64 } { ptr @.str.980, i64 1, i64 0 }) + br i1 %t45, label %then1726, label %else1727 +then1726: %t46 = load ptr, ptr %a1 - %t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.960, i64 5, i64 0 }) + %t47 = call %S.ast.Node @finch.parser.node(ptr %t46, { ptr, i64, i64 } { ptr @.str.981, i64 5, i64 0 }) store %S.ast.Node %t47, ptr %a48 %t49 = load ptr, ptr %a1 %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic1670, label %ok1671 -panic1670: - call void @finch_panic(ptr @.str.961, i64 671, ptr @.str.962) + br i1 %t52, label %panic1729, label %ok1730 +panic1729: + call void @finch_panic(ptr @.str.982, i64 673, ptr @.str.983) unreachable -ok1671: +ok1730: %t53 = getelementptr inbounds %S.parser.Parser, ptr %t51, i32 0, i32 2 %t54 = load i64, ptr %t53 %t55 = add i64 %t54, 1 @@ -16819,34 +18274,34 @@ ok1671: store i64 %t71, ptr %t67 %t74 = load ptr, ptr %a1 %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1672, label %ok1673 -panic1672: - call void @finch_panic(ptr @.str.963, i64 674, ptr @.str.964) + br i1 %t75, label %panic1731, label %ok1732 +panic1731: + call void @finch_panic(ptr @.str.984, i64 676, ptr @.str.985) unreachable -ok1673: +ok1732: %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 2 %t77 = load i64, ptr %t76 %t78 = sub i64 %t77, 1 store i64 %t78, ptr %t76 %t79 = load ptr, ptr %a1 - %t80 = call %S.lexer.Token @finch.parser.expect(ptr %t79, { ptr, i64, i64 } { ptr @.str.965, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.966, i64 3, i64 0 }) + %t80 = call %S.lexer.Token @finch.parser.expect(ptr %t79, { ptr, i64, i64 } { ptr @.str.986, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.987, i64 3, i64 0 }) %t81 = load %S.ast.Node, ptr %a48 store %S.ast.Node %t81, ptr %a82 call void @finch.copy.S_ast_Node(ptr %a83, ptr %a82) %t84 = load %S.ast.Node, ptr %a83 store %S.ast.Node %t84, ptr %a4 - br label %endif1669 -else1668: + br label %endif1728 +else1727: %t85 = load %S.ast.Node, ptr %a4 store %S.ast.Node %t85, ptr %a86 call void @finch.copy.S_ast_Node(ptr %a87, ptr %a86) %t88 = load %S.ast.Node, ptr %a87 ret %S.ast.Node %t88 -endif1669: - br label %endif1659 -endif1659: - br label %while.cond1654 -while.end1656: +endif1728: + br label %endif1718 +endif1718: + br label %while.cond1713 +while.end1715: %t89 = load %S.ast.Node, ptr %a4 store %S.ast.Node %t89, ptr %a90 call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) @@ -16930,7 +18385,7 @@ entry: %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) store %S.lexer.Token %t3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.967, i64 0, i64 0 }) + %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.988, i64 0, i64 0 }) store %S.ast.Node %t6, ptr %a7 %t8 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 0 %t9 = load { ptr, i64, i64 }, ptr %t8 @@ -16940,39 +18395,39 @@ entry: store { ptr, i64, i64 } %t12, ptr %a13 %t14 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.968, i64 3, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.989, i64 3, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br label %logic.from1674 -logic.from1674: - br i1 %t18, label %logic.end1676, label %logic.rhs1675 -logic.rhs1675: + br label %logic.from1733 +logic.from1733: + br i1 %t18, label %logic.end1735, label %logic.rhs1734 +logic.rhs1734: %t19 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.969, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.990, i64 5, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.rend1677 -logic.rend1677: - br label %logic.end1676 -logic.end1676: - %t24 = phi i1 [ true, %logic.from1674 ], [ %t23, %logic.rend1677 ] - br label %logic.from1678 -logic.from1678: - br i1 %t24, label %logic.end1680, label %logic.rhs1679 -logic.rhs1679: + br label %logic.rend1736 +logic.rend1736: + br label %logic.end1735 +logic.end1735: + %t24 = phi i1 [ true, %logic.from1733 ], [ %t23, %logic.rend1736 ] + br label %logic.from1737 +logic.from1737: + br i1 %t24, label %logic.end1739, label %logic.rhs1738 +logic.rhs1738: %t25 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.970, i64 4, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.991, i64 4, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend1681 -logic.rend1681: - br label %logic.end1680 -logic.end1680: - %t30 = phi i1 [ true, %logic.from1678 ], [ %t29, %logic.rend1681 ] - br i1 %t30, label %then1682, label %endif1684 -then1682: + br label %logic.rend1740 +logic.rend1740: + br label %logic.end1739 +logic.end1739: + %t30 = phi i1 [ true, %logic.from1737 ], [ %t29, %logic.rend1740 ] + br i1 %t30, label %then1741, label %endif1743 +then1741: %t31 = load ptr, ptr %a1 %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) %t33 = load { ptr, i64, i64 }, ptr %a13 @@ -16993,18 +18448,18 @@ then1682: call void @finch.copy.S_ast_Node(ptr %a46, ptr %a45) %t47 = load %S.ast.Node, ptr %a46 ret %S.ast.Node %t47 -endif1684: +endif1743: %t48 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.971, i64 6, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.992, i64 6, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br i1 %t52, label %then1685, label %endif1687 -then1685: + br i1 %t52, label %then1744, label %endif1746 +then1744: %t53 = load ptr, ptr %a1 %t54 = call %S.lexer.Token @finch.parser.next(ptr %t53) %t55 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.972, i64 3, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.993, i64 3, i64 0 }, ptr %t55 %t56 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 %t57 = load { ptr, i64, i64 }, ptr %t56 %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 @@ -17017,32 +18472,32 @@ then1685: call void @finch.copy.S_ast_Node(ptr %a64, ptr %a63) %t65 = load %S.ast.Node, ptr %a64 ret %S.ast.Node %t65 -endif1687: +endif1746: %t66 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.973, i64 4, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.994, i64 4, i64 0 }, ptr %a68 %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) %t70 = icmp ne i32 %t69, 0 - br label %logic.from1688 -logic.from1688: - br i1 %t70, label %logic.end1690, label %logic.rhs1689 -logic.rhs1689: + br label %logic.from1747 +logic.from1747: + br i1 %t70, label %logic.end1749, label %logic.rhs1748 +logic.rhs1748: %t71 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.974, i64 5, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.995, i64 5, i64 0 }, ptr %a73 %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) %t75 = icmp ne i32 %t74, 0 - br label %logic.rend1691 -logic.rend1691: - br label %logic.end1690 -logic.end1690: - %t76 = phi i1 [ true, %logic.from1688 ], [ %t75, %logic.rend1691 ] - br i1 %t76, label %then1692, label %endif1694 -then1692: + br label %logic.rend1750 +logic.rend1750: + br label %logic.end1749 +logic.end1749: + %t76 = phi i1 [ true, %logic.from1747 ], [ %t75, %logic.rend1750 ] + br i1 %t76, label %then1751, label %endif1753 +then1751: %t77 = load ptr, ptr %a1 %t78 = call %S.lexer.Token @finch.parser.next(ptr %t77) %t79 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.975, i64 4, i64 0 }, ptr %t79 + store { ptr, i64, i64 } { ptr @.str.996, i64 4, i64 0 }, ptr %t79 %t80 = load { ptr, i64, i64 }, ptr %a13 %t81 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 store { ptr, i64, i64 } %t80, ptr %a82 @@ -17054,40 +18509,40 @@ then1692: call void @finch.copy.S_ast_Node(ptr %a87, ptr %a86) %t88 = load %S.ast.Node, ptr %a87 ret %S.ast.Node %t88 -endif1694: +endif1753: %t89 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.976, i64 4, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.997, i64 4, i64 0 }, ptr %a91 %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) %t93 = icmp ne i32 %t92, 0 - br i1 %t93, label %then1695, label %endif1697 -then1695: + br i1 %t93, label %then1754, label %endif1756 +then1754: %t94 = load ptr, ptr %a1 %t95 = call %S.lexer.Token @finch.parser.next(ptr %t94) %t96 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.977, i64 4, i64 0 }, ptr %t96 + store { ptr, i64, i64 } { ptr @.str.998, i64 4, i64 0 }, ptr %t96 %t97 = load %S.ast.Node, ptr %a7 store %S.ast.Node %t97, ptr %a98 call void @finch.copy.S_ast_Node(ptr %a99, ptr %a98) %t100 = load %S.ast.Node, ptr %a99 ret %S.ast.Node %t100 -endif1697: +endif1756: %t101 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.978, i64 1, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.999, i64 1, i64 0 }, ptr %a103 %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) %t105 = icmp ne i32 %t104, 0 - br i1 %t105, label %then1698, label %endif1700 -then1698: + br i1 %t105, label %then1757, label %endif1759 +then1757: %t106 = load ptr, ptr %a1 %t107 = call %S.lexer.Token @finch.parser.next(ptr %t106) %t108 = load ptr, ptr %a1 %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic1701, label %ok1702 -panic1701: - call void @finch_panic(ptr @.str.979, i64 713, ptr @.str.980) + br i1 %t109, label %panic1760, label %ok1761 +panic1760: + call void @finch_panic(ptr @.str.1000, i64 715, ptr @.str.1001) unreachable -ok1702: +ok1761: %t110 = getelementptr inbounds %S.parser.Parser, ptr %t108, i32 0, i32 2 %t111 = load i64, ptr %t110 %t112 = add i64 %t111, 1 @@ -17097,85 +18552,85 @@ ok1702: store %S.ast.Node %t114, ptr %a115 %t116 = load ptr, ptr %a1 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic1703, label %ok1704 -panic1703: - call void @finch_panic(ptr @.str.981, i64 715, ptr @.str.982) + br i1 %t117, label %panic1762, label %ok1763 +panic1762: + call void @finch_panic(ptr @.str.1002, i64 717, ptr @.str.1003) unreachable -ok1704: +ok1763: %t118 = getelementptr inbounds %S.parser.Parser, ptr %t116, i32 0, i32 2 %t119 = load i64, ptr %t118 %t120 = sub i64 %t119, 1 store i64 %t120, ptr %t118 %t121 = load ptr, ptr %a1 - %t122 = call %S.lexer.Token @finch.parser.expect(ptr %t121, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.984, i64 3, i64 0 }) + %t122 = call %S.lexer.Token @finch.parser.expect(ptr %t121, { ptr, i64, i64 } { ptr @.str.1004, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1005, i64 3, i64 0 }) %t123 = load %S.ast.Node, ptr %a115 ret %S.ast.Node %t123 -endif1700: +endif1759: %t124 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.985, i64 5, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1006, i64 5, i64 0 }, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then1705, label %endif1707 -then1705: + br i1 %t128, label %then1764, label %endif1766 +then1764: %t129 = load ptr, ptr %a1 %t130 = call %S.ast.Node @finch.parser.parseMatch(ptr %t129, i1 true) ret %S.ast.Node %t130 -endif1707: +endif1766: %t131 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.986, i64 1, i64 0 }, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }, ptr %a133 %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then1708, label %endif1710 -then1708: + br i1 %t135, label %then1767, label %endif1769 +then1767: %t136 = load ptr, ptr %a1 %t137 = call %S.lexer.Token @finch.parser.next(ptr %t136) %t138 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.987, i64 5, i64 0 }, ptr %t138 + store { ptr, i64, i64 } { ptr @.str.1008, i64 5, i64 0 }, ptr %t138 %t139 = load ptr, ptr %a1 %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic1711, label %ok1712 -panic1711: - call void @finch_panic(ptr @.str.988, i64 725, ptr @.str.989) + br i1 %t140, label %panic1770, label %ok1771 +panic1770: + call void @finch_panic(ptr @.str.1009, i64 727, ptr @.str.1010) unreachable -ok1712: +ok1771: %t141 = getelementptr inbounds %S.parser.Parser, ptr %t139, i32 0, i32 2 %t142 = load i64, ptr %t141 %t143 = add i64 %t142, 1 store i64 %t143, ptr %t141 %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - br label %logic.from1713 -logic.from1713: - br i1 %t145, label %logic.rhs1714, label %logic.end1715 -logic.rhs1714: + %t145 = call i1 @finch.parser.at(ptr %t144, { ptr, i64, i64 } { ptr @.str.1011, i64 1, i64 0 }) + br label %logic.from1772 +logic.from1772: + br i1 %t145, label %logic.rhs1773, label %logic.end1774 +logic.rhs1773: %t146 = load ptr, ptr %a1 %t147 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t146, i64 1) store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.991, i64 1, i64 0 }, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.1012, i64 1, i64 0 }, ptr %a149 %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) %t151 = icmp ne i32 %t150, 0 - br label %logic.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t152 = phi i1 [ false, %logic.from1713 ], [ %t151, %logic.rend1716 ] - br i1 %t152, label %then1717, label %endif1719 -then1717: + br label %logic.rend1775 +logic.rend1775: + br label %logic.end1774 +logic.end1774: + %t152 = phi i1 [ false, %logic.from1772 ], [ %t151, %logic.rend1775 ] + br i1 %t152, label %then1776, label %endif1778 +then1776: %t153 = load ptr, ptr %a1 %t154 = call %S.lexer.Token @finch.parser.next(ptr %t153) %t155 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.992, i64 3, i64 0 }, ptr %t155 - br label %endif1719 -endif1719: - br label %while.cond1720 -while.cond1720: + store { ptr, i64, i64 } { ptr @.str.1013, i64 3, i64 0 }, ptr %t155 + br label %endif1778 +endif1778: + br label %while.cond1779 +while.cond1779: %t156 = load ptr, ptr %a1 - %t157 = call i1 @finch.parser.at(ptr %t156, { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }) + %t157 = call i1 @finch.parser.at(ptr %t156, { ptr, i64, i64 } { ptr @.str.1014, i64 1, i64 0 }) %t158 = xor i1 %t157, true - br i1 %t158, label %while.body1721, label %while.end1722 -while.body1721: + br i1 %t158, label %while.body1780, label %while.end1781 +while.body1780: %t159 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %t159, i32 0, i32 1 %t161 = load ptr, ptr %a1 @@ -17191,33 +18646,33 @@ while.body1721: %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 %t169 = load i64, ptr %t168 %t170 = icmp eq i64 %t169, 1 - br label %logic.from1723 -logic.from1723: - br i1 %t170, label %logic.rhs1724, label %logic.end1725 -logic.rhs1724: + br label %logic.from1782 +logic.from1782: + br i1 %t170, label %logic.rhs1783, label %logic.end1784 +logic.rhs1783: %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.994, i64 1, i64 0 }) - br label %logic.rend1726 -logic.rend1726: - br label %logic.end1725 -logic.end1725: - %t173 = phi i1 [ false, %logic.from1723 ], [ %t172, %logic.rend1726 ] - br i1 %t173, label %then1727, label %endif1729 -then1727: + %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }) + br label %logic.rend1785 +logic.rend1785: + br label %logic.end1784 +logic.end1784: + %t173 = phi i1 [ false, %logic.from1782 ], [ %t172, %logic.rend1785 ] + br i1 %t173, label %then1786, label %endif1788 +then1786: %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.995, i64 3, i64 0 }, ptr %t174 - br label %endif1729 -endif1729: + store { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }, ptr %t174 + br label %endif1788 +endif1788: %t175 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 %t176 = load { ptr, i64, i64 }, ptr %t175 store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.996, i64 3, i64 0 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.1017, i64 3, i64 0 }, ptr %a178 %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1730, label %endif1732 -then1730: + br i1 %t180, label %then1789, label %endif1791 +then1789: %t181 = load ptr, ptr %a1 - %t182 = call %S.lexer.Token @finch.parser.expect(ptr %t181, { ptr, i64, i64 } { ptr @.str.997, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.998, i64 41, i64 0 }) + %t182 = call %S.lexer.Token @finch.parser.expect(ptr %t181, { ptr, i64, i64 } { ptr @.str.1018, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1019, i64 41, i64 0 }) %t183 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 %t185 = load ptr, ptr %a1 @@ -17229,43 +18684,43 @@ then1730: %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 store %S.ast.Node %t186, ptr %t190 store i64 %t188, ptr %t184 - br label %endif1732 -endif1732: + br label %endif1791 +endif1791: %t191 = load ptr, ptr %a1 - %t192 = call i1 @finch.parser.accept(ptr %t191, { ptr, i64, i64 } { ptr @.str.999, i64 1, i64 0 }) + %t192 = call i1 @finch.parser.accept(ptr %t191, { ptr, i64, i64 } { ptr @.str.1020, i64 1, i64 0 }) %t193 = xor i1 %t192, true - br i1 %t193, label %then1733, label %endif1735 -then1733: - br label %while.end1722 -endif1735: - br label %while.cond1720 -while.end1722: + br i1 %t193, label %then1792, label %endif1794 +then1792: + br label %while.end1781 +endif1794: + br label %while.cond1779 +while.end1781: %t194 = load ptr, ptr %a1 %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic1736, label %ok1737 -panic1736: - call void @finch_panic(ptr @.str.1000, i64 743, ptr @.str.1001) + br i1 %t195, label %panic1795, label %ok1796 +panic1795: + call void @finch_panic(ptr @.str.1021, i64 745, ptr @.str.1022) unreachable -ok1737: +ok1796: %t196 = getelementptr inbounds %S.parser.Parser, ptr %t194, i32 0, i32 2 %t197 = load i64, ptr %t196 %t198 = sub i64 %t197, 1 store i64 %t198, ptr %t196 %t199 = load ptr, ptr %a1 - %t200 = call %S.lexer.Token @finch.parser.expect(ptr %t199, { ptr, i64, i64 } { ptr @.str.1002, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1003, i64 3, i64 0 }) + %t200 = call %S.lexer.Token @finch.parser.expect(ptr %t199, { ptr, i64, i64 } { ptr @.str.1023, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1024, i64 3, i64 0 }) %t201 = load %S.ast.Node, ptr %a7 store %S.ast.Node %t201, ptr %a202 call void @finch.copy.S_ast_Node(ptr %a203, ptr %a202) %t204 = load %S.ast.Node, ptr %a203 ret %S.ast.Node %t204 -endif1710: +endif1769: %t205 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.1004, i64 5, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.1025, i64 5, i64 0 }, ptr %a207 %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then1738, label %endif1740 -then1738: + br i1 %t209, label %then1797, label %endif1799 +then1797: %t210 = load ptr, ptr %a1 %t211 = call %S.lexer.Token @finch.parser.next(ptr %t210) %t212 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 @@ -17276,72 +18731,72 @@ then1738: %t217 = load { ptr, i64, i64 }, ptr %a216 store { ptr, i64, i64 } %t217, ptr %t214 %t218 = load ptr, ptr %a1 - %t219 = call i1 @finch.parser.at(ptr %t218, { ptr, i64, i64 } { ptr @.str.1005, i64 1, i64 0 }) - br label %logic.from1741 -logic.from1741: - br i1 %t219, label %logic.rhs1742, label %logic.end1743 -logic.rhs1742: + %t219 = call i1 @finch.parser.at(ptr %t218, { ptr, i64, i64 } { ptr @.str.1026, i64 1, i64 0 }) + br label %logic.from1800 +logic.from1800: + br i1 %t219, label %logic.rhs1801, label %logic.end1802 +logic.rhs1801: %t220 = load ptr, ptr %a1 %t221 = icmp eq ptr %t220, null - br i1 %t221, label %panic1744, label %ok1745 -panic1744: - call void @finch_panic(ptr @.str.1006, i64 750, ptr @.str.1007) + br i1 %t221, label %panic1803, label %ok1804 +panic1803: + call void @finch_panic(ptr @.str.1027, i64 752, ptr @.str.1028) unreachable -ok1745: +ok1804: %t222 = getelementptr inbounds %S.parser.Parser, ptr %t220, i32 0, i32 0 %t223 = load ptr, ptr %a1 %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic1746, label %ok1747 -panic1746: - call void @finch_panic(ptr @.str.1008, i64 750, ptr @.str.1009) + br i1 %t224, label %panic1805, label %ok1806 +panic1805: + call void @finch_panic(ptr @.str.1029, i64 752, ptr @.str.1030) unreachable -ok1747: +ok1806: %t225 = getelementptr inbounds %S.parser.Parser, ptr %t223, i32 0, i32 1 %t226 = load i64, ptr %t225 %t227 = sub i64 %t226, 1 %t228 = load { ptr, i64, i64 }, ptr %t222 %t229 = extractvalue { ptr, i64, i64 } %t228, 1 %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range1748, label %inrange1749 -range1748: - call void @finch_panic_index(ptr @.str.1010, i64 750, i64 %t227, i64 %t229) + br i1 %t230, label %range1807, label %inrange1808 +range1807: + call void @finch_panic_index(ptr @.str.1031, i64 752, i64 %t227, i64 %t229) unreachable -inrange1749: +inrange1808: %t231 = extractvalue { ptr, i64, i64 } %t228, 0 %t232 = getelementptr inbounds %S.lexer.Token, ptr %t231, i64 %t227 %t233 = getelementptr inbounds %S.lexer.Token, ptr %t232, i32 0, i32 0 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.1011, i64 5, i64 0 }, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.1032, i64 5, i64 0 }, ptr %a236 %t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236) %t238 = icmp ne i32 %t237, 0 - br label %logic.rend1750 -logic.rend1750: - br label %logic.end1743 -logic.end1743: - %t239 = phi i1 [ false, %logic.from1741 ], [ %t238, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t239, label %logic.rhs1752, label %logic.end1753 -logic.rhs1752: + br label %logic.rend1809 +logic.rend1809: + br label %logic.end1802 +logic.end1802: + %t239 = phi i1 [ false, %logic.from1800 ], [ %t238, %logic.rend1809 ] + br label %logic.from1810 +logic.from1810: + br i1 %t239, label %logic.rhs1811, label %logic.end1812 +logic.rhs1811: %t240 = load ptr, ptr %a1 %t241 = call i1 @finch.parser.genericCallAheadFrom(ptr %t240) - br label %logic.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t242 = phi i1 [ false, %logic.from1751 ], [ %t241, %logic.rend1754 ] - br i1 %t242, label %then1755, label %endif1757 -then1755: + br label %logic.rend1813 +logic.rend1813: + br label %logic.end1812 +logic.end1812: + %t242 = phi i1 [ false, %logic.from1810 ], [ %t241, %logic.rend1813 ] + br i1 %t242, label %then1814, label %endif1816 +then1814: %t243 = load ptr, ptr %a1 %t244 = call %S.lexer.Token @finch.parser.next(ptr %t243) - %t245 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1012, i64 5, i64 0 }, 0 + %t245 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1033, i64 5, i64 0 }, 0 %t246 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 store %S.ast.Type %t245, ptr %t246 - br label %while.cond1758 -while.cond1758: - br label %while.body1759 -while.body1759: + br label %while.cond1817 +while.cond1817: + br label %while.body1818 +while.body1818: %t247 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i32 0, i32 1 %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 @@ -17355,18 +18810,18 @@ while.body1759: store %S.ast.Type %t251, ptr %t255 store i64 %t253, ptr %t249 %t256 = load ptr, ptr %a1 - %t257 = call i1 @finch.parser.accept(ptr %t256, { ptr, i64, i64 } { ptr @.str.1013, i64 1, i64 0 }) + %t257 = call i1 @finch.parser.accept(ptr %t256, { ptr, i64, i64 } { ptr @.str.1034, i64 1, i64 0 }) %t258 = xor i1 %t257, true - br i1 %t258, label %then1761, label %endif1763 -then1761: - br label %while.end1760 -endif1763: - br label %while.cond1758 -while.end1760: + br i1 %t258, label %then1820, label %endif1822 +then1820: + br label %while.end1819 +endif1822: + br label %while.cond1817 +while.end1819: %t259 = load ptr, ptr %a1 - %t260 = call %S.lexer.Token @finch.parser.expect(ptr %t259, { ptr, i64, i64 } { ptr @.str.1014, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1015, i64 28, i64 0 }) + %t260 = call %S.lexer.Token @finch.parser.expect(ptr %t259, { ptr, i64, i64 } { ptr @.str.1035, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1036, i64 28, i64 0 }) %t261 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1016, i64 4, i64 0 }, ptr %t261 + store { ptr, i64, i64 } { ptr @.str.1037, i64 4, i64 0 }, ptr %t261 %t262 = load ptr, ptr %a1 call void @finch.parser.parseArgs(ptr %t262, ptr %a7) %t263 = load %S.ast.Node, ptr %a7 @@ -17374,26 +18829,26 @@ while.end1760: call void @finch.copy.S_ast_Node(ptr %a265, ptr %a264) %t266 = load %S.ast.Node, ptr %a265 ret %S.ast.Node %t266 -endif1757: +endif1816: %t267 = load ptr, ptr %a1 - %t268 = call i1 @finch.parser.at(ptr %t267, { ptr, i64, i64 } { ptr @.str.1017, i64 1, i64 0 }) - br label %logic.from1764 -logic.from1764: - br i1 %t268, label %logic.rhs1765, label %logic.end1766 -logic.rhs1765: + %t268 = call i1 @finch.parser.at(ptr %t267, { ptr, i64, i64 } { ptr @.str.1038, i64 1, i64 0 }) + br label %logic.from1823 +logic.from1823: + br i1 %t268, label %logic.rhs1824, label %logic.end1825 +logic.rhs1824: %t269 = load ptr, ptr %a1 %t270 = call %S.lexer.Token @finch.parser.cur(ptr %t269) %t271 = extractvalue %S.lexer.Token %t270, 4 %t272 = xor i1 %t271, true - br label %logic.rend1767 -logic.rend1767: - br label %logic.end1766 -logic.end1766: - %t273 = phi i1 [ false, %logic.from1764 ], [ %t272, %logic.rend1767 ] - br i1 %t273, label %then1768, label %endif1770 -then1768: + br label %logic.rend1826 +logic.rend1826: + br label %logic.end1825 +logic.end1825: + %t273 = phi i1 [ false, %logic.from1823 ], [ %t272, %logic.rend1826 ] + br i1 %t273, label %then1827, label %endif1829 +then1827: %t274 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1018, i64 4, i64 0 }, ptr %t274 + store { ptr, i64, i64 } { ptr @.str.1039, i64 4, i64 0 }, ptr %t274 %t275 = load ptr, ptr %a1 call void @finch.parser.parseArgs(ptr %t275, ptr %a7) %t276 = load %S.ast.Node, ptr %a7 @@ -17401,25 +18856,25 @@ then1768: call void @finch.copy.S_ast_Node(ptr %a278, ptr %a277) %t279 = load %S.ast.Node, ptr %a278 ret %S.ast.Node %t279 -endif1770: +endif1829: %t280 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.1019, i64 3, i64 0 }, ptr %t280 + store { ptr, i64, i64 } { ptr @.str.1040, i64 3, i64 0 }, ptr %t280 %t281 = load %S.ast.Node, ptr %a7 store %S.ast.Node %t281, ptr %a282 call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) %t284 = load %S.ast.Node, ptr %a283 ret %S.ast.Node %t284 -endif1740: +endif1799: %t285 = load ptr, ptr %a1 %t286 = load %S.lexer.Token, ptr %a4 %t287 = load %S.lexer.Token, ptr %a4 %t288 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t287) - store { ptr, i64, i64 } { ptr @.str.1020, i64 11, i64 0 }, ptr %a290 + store { ptr, i64, i64 } { ptr @.str.1041, i64 11, i64 0 }, ptr %a290 store { ptr, i64, i64 } %t288, ptr %a291 call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291) %t292 = load { ptr, i64, i64 }, ptr %a289 store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.1021, i64 19, i64 0 }, ptr %a295 + store { ptr, i64, i64 } { ptr @.str.1042, i64 19, i64 0 }, ptr %a295 call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) %t296 = load { ptr, i64, i64 }, ptr %a293 call void @finch.parser.fail(ptr %t285, %S.lexer.Token %t286, { ptr, i64, i64 } %t296) @@ -17462,114 +18917,2213 @@ entry: ret %S.ast.Program %t19 } +define internal { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1045, i64 2, i64 0 }, ptr %a6 + call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1048, i64 2, i64 0 }, ptr %a11 + call void @finch_str_replace(ptr %a9, ptr %a8, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1050, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1051, i64 1, i64 0 }, ptr %a16 + call void @finch_str_replace(ptr %a14, ptr %a13, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t17 +} + +define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store { ptr, i64, i64 } %p4, ptr %a5 + store { ptr, i64, i64 } %p5, ptr %a6 + store i64 %p6, ptr %a7 + store i64 %p7, ptr %a8 + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic1830, label %ok1831 +panic1830: + call void @finch_panic(ptr @.str.1052, i64 195, ptr @.str.1053) + unreachable +ok1831: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 + %t12 = load i1, ptr %t11 + %t13 = xor i1 %t12, true + br i1 %t13, label %then1832, label %endif1834 +then1832: + ret void +endif1834: + %t14 = load ptr, ptr %a1 + %t15 = icmp eq ptr %t14, null + br i1 %t15, label %panic1835, label %ok1836 +panic1835: + call void @finch_panic(ptr @.str.1054, i64 198, ptr @.str.1055) + unreachable +ok1836: + %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 27 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic1837, label %ok1838 +panic1837: + call void @finch_panic(ptr @.str.1057, i64 198, ptr @.str.1058) + unreachable +ok1838: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 1 + %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t22 = load i64, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %t20 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 %t22, %t24 + br i1 %t25, label %range1839, label %inrange1840 +range1839: + call void @finch_panic_index(ptr @.str.1059, i64 198, i64 %t22, i64 %t24) + unreachable +inrange1840: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 + %t28 = load { ptr, i64, i64 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.1056, i64 3, i64 0 }, ptr %a30 + store { ptr, i64, i64 } %t28, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t32, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.1060, i64 1, i64 0 }, ptr %a35 + call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) + %t36 = load { ptr, i64, i64 }, ptr %a33 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t38 = load i64, ptr %t37 + call void @finch_str_from_int(ptr %a39, i64 %t38) + %t40 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t36, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t44, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1061, i64 1, i64 0 }, ptr %a47 + call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) + %t48 = load { ptr, i64, i64 }, ptr %a45 + %t49 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a50, i64 %t49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t48, ptr %a53 + store { ptr, i64, i64 } %t51, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + store { ptr, i64, i64 } %t55, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1062, i64 1, i64 0 }, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a56 + %t60 = load i64, ptr %a4 + call void @finch_str_from_int(ptr %a61, i64 %t60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a64 + store { ptr, i64, i64 } %t62, ptr %a65 + call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) + %t66 = load { ptr, i64, i64 }, ptr %a63 + store { ptr, i64, i64 } %t66, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }, ptr %a69 + call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) + %t70 = load { ptr, i64, i64 }, ptr %a67 + %t71 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t70, ptr %a73 + store { ptr, i64, i64 } %t71, ptr %a74 + call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) + %t75 = load { ptr, i64, i64 }, ptr %a72 + store { ptr, i64, i64 } %t75, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a76 + %t80 = load i64, ptr %a7 + call void @finch_str_from_int(ptr %a81, i64 %t80) + %t82 = load { ptr, i64, i64 }, ptr %a81 + store { ptr, i64, i64 } %t79, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.1065, i64 1, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = load i64, ptr %a8 + call void @finch_str_from_int(ptr %a92, i64 %t91) + %t93 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t90, ptr %a95 + store { ptr, i64, i64 } %t93, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.1066, i64 1, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a98 + %t102 = load { ptr, i64, i64 }, ptr %a5 + %t103 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t102) + store { ptr, i64, i64 } %t101, ptr %a105 + store { ptr, i64, i64 } %t103, ptr %a106 + call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a104 + %t108 = load i64, ptr %t17 + %t109 = add i64 %t108, 1 + call void @finch_arr_reserve(ptr %t16, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t110 = load ptr, ptr %t16 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 + store { ptr, i64, i64 } %t107, ptr %t111 + store i64 %t109, ptr %t17 + ret void +} + +define internal { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %p0) { +entry: + %a1 = alloca %S.gen.FnSig, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca i64, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + store %S.gen.FnSig %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 + %t5 = load i64, ptr %t4 + store i64 0, ptr %a6 + br label %for.cond1841 +for.cond1841: + %t7 = load i64, ptr %a6 + %t8 = icmp slt i64 %t7, %t5 + br i1 %t8, label %for.body1842, label %for.end1844 +for.body1842: + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 + %t11 = load i64, ptr %a6 + %t12 = load { ptr, i64, i64 }, ptr %t10 + %t13 = extractvalue { ptr, i64, i64 } %t12, 1 + %t14 = icmp uge i64 %t11, %t13 + br i1 %t14, label %range1845, label %inrange1846 +range1845: + call void @finch_panic_index(ptr @.str.1067, i64 205, i64 %t11, i64 %t13) + unreachable +inrange1846: + %t15 = extractvalue { ptr, i64, i64 } %t12, 0 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t11 + %t17 = load %S.ast.Type, ptr %t16 + %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) + store { ptr, i64, i64 } %t18, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1068, i64 1, i64 0 }, ptr %a21 + call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) + %t22 = load { ptr, i64, i64 }, ptr %a19 + %t23 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 + %t24 = load i64, ptr %a6 + %t25 = load { ptr, i64, i64 }, ptr %t23 + %t26 = extractvalue { ptr, i64, i64 } %t25, 1 + %t27 = icmp uge i64 %t24, %t26 + br i1 %t27, label %range1847, label %inrange1848 +range1847: + call void @finch_panic_index(ptr @.str.1069, i64 205, i64 %t24, i64 %t26) + unreachable +inrange1848: + %t28 = extractvalue { ptr, i64, i64 } %t25, 0 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t24 + %t30 = load { ptr, i64, i64 }, ptr %t29 + store { ptr, i64, i64 } %t22, ptr %a32 + store { ptr, i64, i64 } %t30, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a31 + %t35 = load i64, ptr %t9 + %t36 = add i64 %t35, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t36, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t37 = load ptr, ptr %a2 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t35 + store { ptr, i64, i64 } %t34, ptr %t38 + store i64 %t36, ptr %t9 + br label %for.step1843 +for.step1843: + %t39 = load i64, ptr %a6 + %t40 = add i64 %t39, 1 + store i64 %t40, ptr %a6 + br label %for.cond1841 +for.end1844: + %t41 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t42 = load { ptr, i64, i64 }, ptr %t41 + store { ptr, i64, i64 } %t42, ptr %a43 + call void @finch_str_copy(ptr %a44, ptr %a43) + %t45 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t45, ptr %a46 + %t47 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 + %t49 = load i64, ptr %t48 + %t50 = icmp sgt i64 %t49, 0 + br i1 %t50, label %then1849, label %endif1851 +then1849: + %t51 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.1070, i64 1, i64 0 }, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a53 + %t57 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 + %t58 = load { ptr, i64, i64 }, ptr %t57 + store { ptr, i64, i64 } %t56, ptr %a60 + store { ptr, i64, i64 } %t58, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a59 + store { ptr, i64, i64 } %t62, ptr %a46 + br label %endif1851 +endif1851: + %t63 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1071, i64 3, i64 0 }, ptr %a65 + store { ptr, i64, i64 } %t63, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1072, i64 1, i64 0 }, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a68 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1073, i64 2, i64 0 }, ptr %a73 + call void @finch_str_join(ptr %a74, ptr %a2, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + store { ptr, i64, i64 } %t71, ptr %a77 + store { ptr, i64, i64 } %t75, ptr %a78 + call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) + %t79 = load { ptr, i64, i64 }, ptr %a76 + store { ptr, i64, i64 } %t79, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.1074, i64 1, i64 0 }, ptr %a82 + call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) + %t83 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t83, ptr %a84 + %t85 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 + %t86 = load i1, ptr %t85 + br i1 %t86, label %then1852, label %else1853 +then1852: + %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 + %t89 = load { ptr, i64, i64 }, ptr %t88 + store { ptr, i64, i64 } %t89, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.1075, i64 4, i64 0 }, ptr %a91 + %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) + %t93 = icmp ne i32 %t92, 0 + br i1 %t93, label %then1855, label %else1856 +then1855: + %t94 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t94, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.1076, i64 5, i64 0 }, ptr %a97 + call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) + %t98 = load { ptr, i64, i64 }, ptr %a95 + store { ptr, i64, i64 } %t98, ptr %a84 + br label %endif1857 +else1856: + %t99 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t99, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.1077, i64 4, i64 0 }, ptr %a102 + call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a100 + %t104 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t105 = load %S.ast.Type, ptr %t104 + %t106 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t105) + store { ptr, i64, i64 } %t103, ptr %a108 + store { ptr, i64, i64 } %t106, ptr %a109 + call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) + %t110 = load { ptr, i64, i64 }, ptr %a107 + store { ptr, i64, i64 } %t110, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.1078, i64 1, i64 0 }, ptr %a113 + call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) + %t114 = load { ptr, i64, i64 }, ptr %a111 + store { ptr, i64, i64 } %t114, ptr %a84 + br label %endif1857 +endif1857: + br label %endif1854 +else1853: + %t115 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 + %t117 = load { ptr, i64, i64 }, ptr %t116 + store { ptr, i64, i64 } %t117, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.1079, i64 4, i64 0 }, ptr %a119 + %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) + %t121 = icmp eq i32 %t120, 0 + br i1 %t121, label %then1858, label %endif1860 +then1858: + %t122 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t122, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.1080, i64 4, i64 0 }, ptr %a125 + call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) + %t126 = load { ptr, i64, i64 }, ptr %a123 + %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 + %t128 = load %S.ast.Type, ptr %t127 + %t129 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t128) + store { ptr, i64, i64 } %t126, ptr %a131 + store { ptr, i64, i64 } %t129, ptr %a132 + call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) + %t133 = load { ptr, i64, i64 }, ptr %a130 + store { ptr, i64, i64 } %t133, ptr %a84 + br label %endif1860 +endif1860: + br label %endif1854 +endif1854: + %t134 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t134, ptr %a135 + call void @finch_str_copy(ptr %a136, ptr %a135) + %t137 = load { ptr, i64, i64 }, ptr %a136 + ret { ptr, i64, i64 } %t137 +} + +define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca %S.gen.FnSig, align 16 + %a11 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca %S.ast.Node, align 16 + %a41 = alloca %S.ast.Node, align 16 + %a43 = alloca %S.ast.Node, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store %S.gen.FnSig %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic1861, label %ok1862 +panic1861: + call void @finch_panic(ptr @.str.1081, i64 226, ptr @.str.1082) + unreachable +ok1862: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + %t8 = xor i1 %t7, true + br i1 %t8, label %then1863, label %endif1865 +then1863: + ret void +endif1865: + %t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t10 = load i64, ptr %t9 + store i64 %t10, ptr %a11 + %t12 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1083, i64 6, i64 0 }, ptr %a15 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp ne i32 %t16, 0 + br i1 %t17, label %then1866, label %endif1868 +then1866: + %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t19 = load i64, ptr %t18 + %t20 = add i64 %t19, 1 + store i64 %t20, ptr %a11 + br label %endif1868 +endif1868: + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic1869, label %ok1870 +panic1869: + call void @finch_panic(ptr @.str.1084, i64 233, ptr @.str.1085) + unreachable +ok1870: + %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 0 + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 16 + %t25 = load i64, ptr %t24 + %t26 = load { ptr, i64, i64 }, ptr %t23 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range1871, label %inrange1872 +range1871: + call void @finch_panic_index(ptr @.str.1086, i64 233, i64 %t25, i64 %t27) + unreachable +inrange1872: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds %S.ast.Program, ptr %t29, i64 %t25 + %t31 = getelementptr inbounds %S.ast.Program, ptr %t30, i32 0, i32 8 + %t32 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 17 + %t33 = load i64, ptr %t32 + %t34 = load { ptr, i64, i64 }, ptr %t31 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range1873, label %inrange1874 +range1873: + call void @finch_panic_index(ptr @.str.1087, i64 233, i64 %t33, i64 %t35) + unreachable +inrange1874: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 + %t39 = load %S.ast.Node, ptr %t38 + store %S.ast.Node %t39, ptr %a40 + call void @finch.copy.S_ast_Node(ptr %a41, ptr %a40) + %t42 = load %S.ast.Node, ptr %a41 + store %S.ast.Node %t42, ptr %a43 + %t44 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 + %t45 = load { ptr, i64, i64 }, ptr %t44 + store { ptr, i64, i64 } %t45, ptr %a46 + call void @finch_str_copy(ptr %a47, ptr %a46) + %t48 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t48, ptr %a49 + %t50 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 7 + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = icmp sgt i64 %t52, 0 + br label %logic.from1875 +logic.from1875: + br i1 %t53, label %logic.rhs1876, label %logic.end1877 +logic.rhs1876: + %t54 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 2 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = icmp eq i64 %t56, 0 + br label %logic.rend1878 +logic.rend1878: + br label %logic.end1877 +logic.end1877: + %t58 = phi i1 [ false, %logic.from1875 ], [ %t57, %logic.rend1878 ] + br i1 %t58, label %then1879, label %endif1881 +then1879: + %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 + %t60 = load { ptr, i64, i64 }, ptr %t59 + store { ptr, i64, i64 } %t60, ptr %a61 + call void @finch_str_copy(ptr %a62, ptr %a61) + %t63 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t63, ptr %a49 + br label %endif1881 +endif1881: + %t64 = load ptr, ptr %a1 + %t65 = load %S.ast.Node, ptr %a2 + %t66 = load i64, ptr %a11 + %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 + %t68 = load i64, ptr %t67 + %t69 = load %S.gen.FnSig, ptr %a3 + %t70 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t69) + store { ptr, i64, i64 } { ptr @.str.1088, i64 9, i64 0 }, ptr %a72 + store { ptr, i64, i64 } %t70, ptr %a73 + call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) + %t74 = load { ptr, i64, i64 }, ptr %a71 + store { ptr, i64, i64 } %t74, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.1089, i64 4, i64 0 }, ptr %a77 + call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) + %t78 = load { ptr, i64, i64 }, ptr %a75 + %t79 = load ptr, ptr %a1 + %t80 = icmp eq ptr %t79, null + br i1 %t80, label %panic1882, label %ok1883 +panic1882: + call void @finch_panic(ptr @.str.1090, i64 238, ptr @.str.1091) + unreachable +ok1883: + %t81 = getelementptr inbounds %S.gen.Gen, ptr %t79, i32 0, i32 1 + %t82 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 + %t83 = load i64, ptr %t82 + %t84 = load { ptr, i64, i64 }, ptr %t81 + %t85 = extractvalue { ptr, i64, i64 } %t84, 1 + %t86 = icmp uge i64 %t83, %t85 + br i1 %t86, label %range1884, label %inrange1885 +range1884: + call void @finch_panic_index(ptr @.str.1092, i64 238, i64 %t83, i64 %t85) + unreachable +inrange1885: + %t87 = extractvalue { ptr, i64, i64 } %t84, 0 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 %t83 + %t89 = load { ptr, i64, i64 }, ptr %t88 + %t90 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 + %t91 = load i64, ptr %t90 + %t92 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 + %t93 = load i64, ptr %t92 + %t94 = add i64 %t93, 3 + call void @finch.gen.noteRef(ptr %t64, %S.ast.Node %t65, i64 %t66, i64 %t68, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t89, i64 %t91, i64 %t94) + ret void +} + +define internal void @finch.copy.arr_bool(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_FnSig(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.FnSig, ptr %src + store %S.gen.FnSig %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 6 + %t11 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 7 + %t13 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 7 + call void @finch.copy.arr_S_ast_Type(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 8 + %t15 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 8 + call void @finch_str_copy(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 11 + %t17 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 11 + call void @finch_str_copy(ptr %t16, ptr %t17) + %t18 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 12 + %t19 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 12 + call void @finch.copy.S_ast_Type(ptr %t18, ptr %t19) + %t20 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 13 + %t21 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 13 + call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) + %t22 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 14 + %t23 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 14 + call void @finch.copy.arr_str(ptr %t22, ptr %t23) + %t24 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 15 + %t25 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 15 + call void @finch.copy.arr_bool(ptr %t24, ptr %t25) + ret void +} + +define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.Template, ptr %src + store %S.gen.Template %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { +entry: + + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + ret void +} + +define internal void @finch.copy.S_gen_StructDef(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.gen.StructDef, ptr %src + store %S.gen.StructDef %t1, ptr %dst + %t2 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 3 + %t7 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_int(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 4 + %t9 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_int(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 5 + %t11 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 6 + %t13 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 7 + %t15 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 7 + call void @finch.copy.arr_S_ast_Type(ptr %t14, ptr %t15) + %t16 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 8 + %t17 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 8 + call void @finch_str_copy(ptr %t16, ptr %t17) + %t18 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 11 + %t19 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 11 + call void @finch.copy.arr_str(ptr %t18, ptr %t19) + %t20 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 12 + %t21 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 12 + call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) + ret void +} + +define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca i64, align 16 + %a38 = alloca %S.gen.FnSig, align 16 + %a39 = alloca %S.gen.FnSig, align 16 + %a41 = alloca %S.gen.FnSig, align 16 + %a61 = alloca %S.ast.Node, align 16 + %a62 = alloca %S.ast.Node, align 16 + %a64 = alloca %S.ast.Node, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca i64, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a166 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a169 = alloca { ptr, i64, i64 }, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a182 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a189 = alloca { ptr, i64, i64 }, align 16 + %a190 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca i64, align 16 + %a233 = alloca %S.gen.Template, align 16 + %a234 = alloca %S.gen.Template, align 16 + %a236 = alloca %S.gen.Template, align 16 + %a258 = alloca %S.ast.Node, align 16 + %a259 = alloca %S.ast.Node, align 16 + %a261 = alloca %S.ast.Node, align 16 + %a268 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a278 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a290 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a321 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a329 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 + %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a363 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca i64, align 16 + %a400 = alloca %S.gen.StructDef, align 16 + %a401 = alloca %S.gen.StructDef, align 16 + %a403 = alloca %S.gen.StructDef, align 16 + %a430 = alloca %S.ast.Node, align 16 + %a431 = alloca %S.ast.Node, align 16 + %a433 = alloca %S.ast.Node, align 16 + %a440 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a454 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a471 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a479 = alloca { ptr, i64, i64 }, align 16 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %a483 = alloca { ptr, i64, i64 }, align 16 + %a485 = alloca { ptr, i64, i64 }, align 16 + %a486 = alloca { ptr, i64, i64 }, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a491 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a504 = alloca i64, align 16 + %a513 = alloca { ptr, i64, i64 }, align 16 + %a514 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 + %a517 = alloca { ptr, i64, i64 }, align 16 + %a518 = alloca { ptr, i64, i64 }, align 16 + %a519 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a525 = alloca { ptr, i64, i64 }, align 16 + %a527 = alloca { ptr, i64, i64 }, align 16 + %a528 = alloca { ptr, i64, i64 }, align 16 + %a529 = alloca { ptr, i64, i64 }, align 16 + %a539 = alloca { ptr, i64, i64 }, align 16 + %a540 = alloca { ptr, i64, i64 }, align 16 + %a541 = alloca { ptr, i64, i64 }, align 16 + %a543 = alloca { ptr, i64, i64 }, align 16 + %a544 = alloca { ptr, i64, i64 }, align 16 + %a545 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 + %a557 = alloca { ptr, i64, i64 }, align 16 + %a558 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca i64, align 16 + %a586 = alloca i64, align 16 + %a594 = alloca %S.ast.Node, align 16 + %a595 = alloca %S.ast.Node, align 16 + %a597 = alloca %S.ast.Node, align 16 + %a598 = alloca { ptr, i64, i64 }, align 16 + %a599 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a609 = alloca %S.ast.Node, align 16 + %a613 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 + %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a643 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a647 = alloca { ptr, i64, i64 }, align 16 + %a651 = alloca { ptr, i64, i64 }, align 16 + %a652 = alloca { ptr, i64, i64 }, align 16 + %a653 = alloca { ptr, i64, i64 }, align 16 + %a655 = alloca { ptr, i64, i64 }, align 16 + %a656 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 + %a670 = alloca { ptr, i64, i64 }, align 16 + %a671 = alloca { ptr, i64, i64 }, align 16 + %a672 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 + %a675 = alloca { ptr, i64, i64 }, align 16 + %a676 = alloca { ptr, i64, i64 }, align 16 + %a680 = alloca { ptr, i64, i64 }, align 16 + %a682 = alloca { ptr, i64, i64 }, align 16 + %a683 = alloca { ptr, i64, i64 }, align 16 + %a684 = alloca { ptr, i64, i64 }, align 16 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a687 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a698 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond1886 +each.cond1886: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body1887, label %each.end1889 +each.body1887: + %t8 = load ptr, ptr %a2 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 %t6 + %t10 = load { ptr, i64, i64 }, ptr %t9 + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic1890, label %ok1891 +panic1890: + call void @finch_panic(ptr @.str.1093, i64 244, ptr @.str.1094) + unreachable +ok1891: + %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 27 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1095, i64 3, i64 0 }, ptr %a18 + store { ptr, i64, i64 } %t16, ptr %a19 + call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) + %t20 = load { ptr, i64, i64 }, ptr %a17 + %t21 = load i64, ptr %t15 + %t22 = add i64 %t21, 1 + call void @finch_arr_reserve(ptr %t14, i64 %t22, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t23 = load ptr, ptr %t14 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i64 %t21 + store { ptr, i64, i64 } %t20, ptr %t24 + store i64 %t22, ptr %t15 + br label %each.step1888 +each.step1888: + %t25 = load i64, ptr %a3 + %t26 = add i64 %t25, 1 + store i64 %t26, ptr %a3 + br label %each.cond1886 +each.end1889: + %t27 = load ptr, ptr %a1 + %t28 = icmp eq ptr %t27, null + br i1 %t28, label %panic1892, label %ok1893 +panic1892: + call void @finch_panic(ptr @.str.1096, i64 246, ptr @.str.1097) + unreachable +ok1893: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 14 + store i64 0, ptr %a30 + br label %each.cond1894 +each.cond1894: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = load i64, ptr %a30 + %t34 = icmp slt i64 %t33, %t32 + br i1 %t34, label %each.body1895, label %each.end1897 +each.body1895: + %t35 = load ptr, ptr %t29 + %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t33 + %t37 = load %S.gen.FnSig, ptr %t36 + store %S.gen.FnSig %t37, ptr %a38 + call void @finch.copy.S_gen_FnSig(ptr %a39, ptr %a38) + %t40 = load %S.gen.FnSig, ptr %a39 + store %S.gen.FnSig %t40, ptr %a41 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic1898, label %ok1899 +panic1898: + call void @finch_panic(ptr @.str.1098, i64 247, ptr @.str.1099) + unreachable +ok1899: + %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 0 + %t45 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 16 + %t46 = load i64, ptr %t45 + %t47 = load { ptr, i64, i64 }, ptr %t44 + %t48 = extractvalue { ptr, i64, i64 } %t47, 1 + %t49 = icmp uge i64 %t46, %t48 + br i1 %t49, label %range1900, label %inrange1901 +range1900: + call void @finch_panic_index(ptr @.str.1100, i64 247, i64 %t46, i64 %t48) + unreachable +inrange1901: + %t50 = extractvalue { ptr, i64, i64 } %t47, 0 + %t51 = getelementptr inbounds %S.ast.Program, ptr %t50, i64 %t46 + %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i32 0, i32 8 + %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 17 + %t54 = load i64, ptr %t53 + %t55 = load { ptr, i64, i64 }, ptr %t52 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range1902, label %inrange1903 +range1902: + call void @finch_panic_index(ptr @.str.1101, i64 247, i64 %t54, i64 %t56) + unreachable +inrange1903: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 + %t60 = load %S.ast.Node, ptr %t59 + store %S.ast.Node %t60, ptr %a61 + call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) + %t63 = load %S.ast.Node, ptr %a62 + store %S.ast.Node %t63, ptr %a64 + %t65 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 7 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 + %t67 = load i64, ptr %t66 + %t68 = icmp sgt i64 %t67, 0 + br i1 %t68, label %then1904, label %endif1906 +then1904: + br label %each.step1896 +endif1906: + store { ptr, i64, i64 } zeroinitializer, ptr %a69 + %t70 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 13 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 + %t72 = load i64, ptr %t71 + store i64 0, ptr %a73 + br label %for.cond1907 +for.cond1907: + %t74 = load i64, ptr %a73 + %t75 = icmp slt i64 %t74, %t72 + br i1 %t75, label %for.body1908, label %for.end1910 +for.body1908: + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + %t77 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 13 + %t78 = load i64, ptr %a73 + %t79 = load { ptr, i64, i64 }, ptr %t77 + %t80 = extractvalue { ptr, i64, i64 } %t79, 1 + %t81 = icmp uge i64 %t78, %t80 + br i1 %t81, label %range1911, label %inrange1912 +range1911: + call void @finch_panic_index(ptr @.str.1102, i64 253, i64 %t78, i64 %t80) + unreachable +inrange1912: + %t82 = extractvalue { ptr, i64, i64 } %t79, 0 + %t83 = getelementptr inbounds %S.ast.Type, ptr %t82, i64 %t78 + %t84 = load %S.ast.Type, ptr %t83 + %t85 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t84) + store { ptr, i64, i64 } %t85, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a88 + call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) + %t89 = load { ptr, i64, i64 }, ptr %a86 + %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 + %t91 = load i64, ptr %a73 + %t92 = load { ptr, i64, i64 }, ptr %t90 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range1913, label %inrange1914 +range1913: + call void @finch_panic_index(ptr @.str.1104, i64 253, i64 %t91, i64 %t93) + unreachable +inrange1914: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t91 + %t97 = load { ptr, i64, i64 }, ptr %t96 + store { ptr, i64, i64 } %t89, ptr %a99 + store { ptr, i64, i64 } %t97, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a98 + %t102 = load i64, ptr %t76 + %t103 = add i64 %t102, 1 + call void @finch_arr_reserve(ptr %a69, i64 %t103, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t104 = load ptr, ptr %a69 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 + store { ptr, i64, i64 } %t101, ptr %t105 + store i64 %t103, ptr %t76 + br label %for.step1909 +for.step1909: + %t106 = load i64, ptr %a73 + %t107 = add i64 %t106, 1 + store i64 %t107, ptr %a73 + br label %for.cond1907 +for.end1910: + %t108 = load ptr, ptr %a1 + %t109 = icmp eq ptr %t108, null + br i1 %t109, label %panic1915, label %ok1916 +panic1915: + call void @finch_panic(ptr @.str.1105, i64 255, ptr @.str.1106) + unreachable +ok1916: + %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 27 + %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 + %t112 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 + %t113 = load { ptr, i64, i64 }, ptr %t112 + store { ptr, i64, i64 } { ptr @.str.1107, i64 3, i64 0 }, ptr %a115 + store { ptr, i64, i64 } %t113, ptr %a116 + call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) + %t117 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t117, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.1108, i64 1, i64 0 }, ptr %a120 + call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) + %t121 = load { ptr, i64, i64 }, ptr %a118 + %t122 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 + %t123 = load { ptr, i64, i64 }, ptr %t122 + store { ptr, i64, i64 } %t121, ptr %a125 + store { ptr, i64, i64 } %t123, ptr %a126 + call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) + %t127 = load { ptr, i64, i64 }, ptr %a124 + store { ptr, i64, i64 } %t127, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.1109, i64 1, i64 0 }, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a128 + %t132 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t131, ptr %a135 + store { ptr, i64, i64 } %t133, ptr %a136 + call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) + %t137 = load { ptr, i64, i64 }, ptr %a134 + store { ptr, i64, i64 } %t137, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.1110, i64 1, i64 0 }, ptr %a140 + call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) + %t141 = load { ptr, i64, i64 }, ptr %a138 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic1917, label %ok1918 +panic1917: + call void @finch_panic(ptr @.str.1111, i64 255, ptr @.str.1112) + unreachable +ok1918: + %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 1 + %t145 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 + %t146 = load i64, ptr %t145 + %t147 = load { ptr, i64, i64 }, ptr %t144 + %t148 = extractvalue { ptr, i64, i64 } %t147, 1 + %t149 = icmp uge i64 %t146, %t148 + br i1 %t149, label %range1919, label %inrange1920 +range1919: + call void @finch_panic_index(ptr @.str.1113, i64 255, i64 %t146, i64 %t148) + unreachable +inrange1920: + %t150 = extractvalue { ptr, i64, i64 } %t147, 0 + %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t146 + %t152 = load { ptr, i64, i64 }, ptr %t151 + store { ptr, i64, i64 } %t141, ptr %a154 + store { ptr, i64, i64 } %t152, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t156, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.1114, i64 1, i64 0 }, ptr %a159 + call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) + %t160 = load { ptr, i64, i64 }, ptr %a157 + %t161 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 + %t162 = load i64, ptr %t161 + call void @finch_str_from_int(ptr %a163, i64 %t162) + %t164 = load { ptr, i64, i64 }, ptr %a163 + store { ptr, i64, i64 } %t160, ptr %a166 + store { ptr, i64, i64 } %t164, ptr %a167 + call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) + %t168 = load { ptr, i64, i64 }, ptr %a165 + store { ptr, i64, i64 } %t168, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.1115, i64 1, i64 0 }, ptr %a171 + call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) + %t172 = load { ptr, i64, i64 }, ptr %a169 + %t173 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 + %t174 = load i64, ptr %t173 + call void @finch_str_from_int(ptr %a175, i64 %t174) + %t176 = load { ptr, i64, i64 }, ptr %a175 + store { ptr, i64, i64 } %t172, ptr %a178 + store { ptr, i64, i64 } %t176, ptr %a179 + call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) + %t180 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t180, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.1116, i64 1, i64 0 }, ptr %a183 + call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) + %t184 = load { ptr, i64, i64 }, ptr %a181 + %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 + %t186 = load i64, ptr %t185 + call void @finch_str_from_int(ptr %a187, i64 %t186) + %t188 = load { ptr, i64, i64 }, ptr %a187 + store { ptr, i64, i64 } %t184, ptr %a190 + store { ptr, i64, i64 } %t188, ptr %a191 + call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) + %t192 = load { ptr, i64, i64 }, ptr %a189 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.1117, i64 1, i64 0 }, ptr %a195 + call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) + %t196 = load { ptr, i64, i64 }, ptr %a193 + %t197 = load %S.gen.FnSig, ptr %a41 + %t198 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t197) + %t199 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t198) + store { ptr, i64, i64 } %t196, ptr %a201 + store { ptr, i64, i64 } %t199, ptr %a202 + call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) + %t203 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.1118, i64 1, i64 0 }, ptr %a206 + call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) + %t207 = load { ptr, i64, i64 }, ptr %a204 + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1119, i64 1, i64 0 }, ptr %a209 + call void @finch_str_join(ptr %a210, ptr %a69, ptr %a209) + %t211 = load { ptr, i64, i64 }, ptr %a210 + store { ptr, i64, i64 } %t207, ptr %a213 + store { ptr, i64, i64 } %t211, ptr %a214 + call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) + %t215 = load { ptr, i64, i64 }, ptr %a212 + %t216 = load i64, ptr %t111 + %t217 = add i64 %t216, 1 + call void @finch_arr_reserve(ptr %t110, i64 %t217, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t218 = load ptr, ptr %t110 + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 + store { ptr, i64, i64 } %t215, ptr %t219 + store i64 %t217, ptr %t111 + br label %each.step1896 +each.step1896: + %t220 = load i64, ptr %a30 + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a30 + br label %each.cond1894 +each.end1897: + %t222 = load ptr, ptr %a1 + %t223 = icmp eq ptr %t222, null + br i1 %t223, label %panic1921, label %ok1922 +panic1921: + call void @finch_panic(ptr @.str.1120, i64 257, ptr @.str.1121) + unreachable +ok1922: + %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 16 + store i64 0, ptr %a225 + br label %each.cond1923 +each.cond1923: + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i32 0, i32 1 + %t227 = load i64, ptr %t226 + %t228 = load i64, ptr %a225 + %t229 = icmp slt i64 %t228, %t227 + br i1 %t229, label %each.body1924, label %each.end1926 +each.body1924: + %t230 = load ptr, ptr %t224 + %t231 = getelementptr inbounds %S.gen.Template, ptr %t230, i64 %t228 + %t232 = load %S.gen.Template, ptr %t231 + store %S.gen.Template %t232, ptr %a233 + call void @finch.copy.S_gen_Template(ptr %a234, ptr %a233) + %t235 = load %S.gen.Template, ptr %a234 + store %S.gen.Template %t235, ptr %a236 + %t237 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 6 + %t238 = load i1, ptr %t237 + br i1 %t238, label %then1927, label %endif1929 +then1927: + br label %each.step1925 +endif1929: + %t239 = load ptr, ptr %a1 + %t240 = icmp eq ptr %t239, null + br i1 %t240, label %panic1930, label %ok1931 +panic1930: + call void @finch_panic(ptr @.str.1122, i64 261, ptr @.str.1123) + unreachable +ok1931: + %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 0 + %t242 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 4 + %t243 = load i64, ptr %t242 + %t244 = load { ptr, i64, i64 }, ptr %t241 + %t245 = extractvalue { ptr, i64, i64 } %t244, 1 + %t246 = icmp uge i64 %t243, %t245 + br i1 %t246, label %range1932, label %inrange1933 +range1932: + call void @finch_panic_index(ptr @.str.1124, i64 261, i64 %t243, i64 %t245) + unreachable +inrange1933: + %t247 = extractvalue { ptr, i64, i64 } %t244, 0 + %t248 = getelementptr inbounds %S.ast.Program, ptr %t247, i64 %t243 + %t249 = getelementptr inbounds %S.ast.Program, ptr %t248, i32 0, i32 8 + %t250 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 5 + %t251 = load i64, ptr %t250 + %t252 = load { ptr, i64, i64 }, ptr %t249 + %t253 = extractvalue { ptr, i64, i64 } %t252, 1 + %t254 = icmp uge i64 %t251, %t253 + br i1 %t254, label %range1934, label %inrange1935 +range1934: + call void @finch_panic_index(ptr @.str.1125, i64 261, i64 %t251, i64 %t253) + unreachable +inrange1935: + %t255 = extractvalue { ptr, i64, i64 } %t252, 0 + %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 + %t257 = load %S.ast.Node, ptr %t256 + store %S.ast.Node %t257, ptr %a258 + call void @finch.copy.S_ast_Node(ptr %a259, ptr %a258) + %t260 = load %S.ast.Node, ptr %a259 + store %S.ast.Node %t260, ptr %a261 + %t262 = load ptr, ptr %a1 + %t263 = icmp eq ptr %t262, null + br i1 %t263, label %panic1936, label %ok1937 +panic1936: + call void @finch_panic(ptr @.str.1126, i64 262, ptr @.str.1127) + unreachable +ok1937: + %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 27 + %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %t264, i32 0, i32 1 + %t266 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 0 + %t267 = load { ptr, i64, i64 }, ptr %t266 + store { ptr, i64, i64 } { ptr @.str.1128, i64 3, i64 0 }, ptr %a269 + store { ptr, i64, i64 } %t267, ptr %a270 + call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) + %t271 = load { ptr, i64, i64 }, ptr %a268 + store { ptr, i64, i64 } %t271, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.1129, i64 1, i64 0 }, ptr %a274 + call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) + %t275 = load { ptr, i64, i64 }, ptr %a272 + %t276 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 1 + %t277 = load { ptr, i64, i64 }, ptr %t276 + store { ptr, i64, i64 } %t275, ptr %a279 + store { ptr, i64, i64 } %t277, ptr %a280 + call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) + %t281 = load { ptr, i64, i64 }, ptr %a278 + store { ptr, i64, i64 } %t281, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.1130, i64 1, i64 0 }, ptr %a284 + call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) + %t285 = load { ptr, i64, i64 }, ptr %a282 + %t286 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 2 + %t287 = load { ptr, i64, i64 }, ptr %t286 + store { ptr, i64, i64 } %t285, ptr %a289 + store { ptr, i64, i64 } %t287, ptr %a290 + call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) + %t291 = load { ptr, i64, i64 }, ptr %a288 + store { ptr, i64, i64 } %t291, ptr %a293 + store { ptr, i64, i64 } { ptr @.str.1131, i64 1, i64 0 }, ptr %a294 + call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) + %t295 = load { ptr, i64, i64 }, ptr %a292 + %t296 = load ptr, ptr %a1 + %t297 = icmp eq ptr %t296, null + br i1 %t297, label %panic1938, label %ok1939 +panic1938: + call void @finch_panic(ptr @.str.1132, i64 262, ptr @.str.1133) + unreachable +ok1939: + %t298 = getelementptr inbounds %S.gen.Gen, ptr %t296, i32 0, i32 1 + %t299 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 13 + %t300 = load i64, ptr %t299 + %t301 = load { ptr, i64, i64 }, ptr %t298 + %t302 = extractvalue { ptr, i64, i64 } %t301, 1 + %t303 = icmp uge i64 %t300, %t302 + br i1 %t303, label %range1940, label %inrange1941 +range1940: + call void @finch_panic_index(ptr @.str.1134, i64 262, i64 %t300, i64 %t302) + unreachable +inrange1941: + %t304 = extractvalue { ptr, i64, i64 } %t301, 0 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i64 %t300 + %t306 = load { ptr, i64, i64 }, ptr %t305 + store { ptr, i64, i64 } %t295, ptr %a308 + store { ptr, i64, i64 } %t306, ptr %a309 + call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) + %t310 = load { ptr, i64, i64 }, ptr %a307 + store { ptr, i64, i64 } %t310, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.1135, i64 1, i64 0 }, ptr %a313 + call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) + %t314 = load { ptr, i64, i64 }, ptr %a311 + %t315 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 11 + %t316 = load i64, ptr %t315 + call void @finch_str_from_int(ptr %a317, i64 %t316) + %t318 = load { ptr, i64, i64 }, ptr %a317 + store { ptr, i64, i64 } %t314, ptr %a320 + store { ptr, i64, i64 } %t318, ptr %a321 + call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) + %t322 = load { ptr, i64, i64 }, ptr %a319 + store { ptr, i64, i64 } %t322, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.1136, i64 1, i64 0 }, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a323 + %t327 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 12 + %t328 = load i64, ptr %t327 + call void @finch_str_from_int(ptr %a329, i64 %t328) + %t330 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t326, ptr %a332 + store { ptr, i64, i64 } %t330, ptr %a333 + call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) + %t334 = load { ptr, i64, i64 }, ptr %a331 + store { ptr, i64, i64 } %t334, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a337 + call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) + %t338 = load { ptr, i64, i64 }, ptr %a335 + %t339 = getelementptr inbounds %S.ast.Node, ptr %a261, i32 0, i32 14 + %t340 = load i64, ptr %t339 + call void @finch_str_from_int(ptr %a341, i64 %t340) + %t342 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t338, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a347 + %t351 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 1 + %t352 = load { ptr, i64, i64 }, ptr %t351 + store { ptr, i64, i64 } { ptr @.str.1139, i64 3, i64 0 }, ptr %a354 + store { ptr, i64, i64 } %t352, ptr %a355 + call void @finch_str_concat(ptr %a353, ptr %a354, ptr %a355) + %t356 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t356, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.1140, i64 1, i64 0 }, ptr %a359 + call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) + %t360 = load { ptr, i64, i64 }, ptr %a357 + %t361 = getelementptr inbounds %S.gen.Template, ptr %a236, i32 0, i32 3 + %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1141, i64 2, i64 0 }, ptr %a363 + call void @finch_str_join(ptr %a364, ptr %t361, ptr %a363) + %t365 = load { ptr, i64, i64 }, ptr %a364 + store { ptr, i64, i64 } %t360, ptr %a367 + store { ptr, i64, i64 } %t365, ptr %a368 + call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) + %t369 = load { ptr, i64, i64 }, ptr %a366 + store { ptr, i64, i64 } %t369, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.1142, i64 6, i64 0 }, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a370 + %t374 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t373) + store { ptr, i64, i64 } %t350, ptr %a376 + store { ptr, i64, i64 } %t374, ptr %a377 + call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) + %t378 = load { ptr, i64, i64 }, ptr %a375 + store { ptr, i64, i64 } %t378, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a381 + call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a379 + %t383 = load i64, ptr %t265 + %t384 = add i64 %t383, 1 + call void @finch_arr_reserve(ptr %t264, i64 %t384, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t385 = load ptr, ptr %t264 + %t386 = getelementptr inbounds { ptr, i64, i64 }, ptr %t385, i64 %t383 + store { ptr, i64, i64 } %t382, ptr %t386 + store i64 %t384, ptr %t265 + br label %each.step1925 +each.step1925: + %t387 = load i64, ptr %a225 + %t388 = add i64 %t387, 1 + store i64 %t388, ptr %a225 + br label %each.cond1923 +each.end1926: + %t389 = load ptr, ptr %a1 + %t390 = icmp eq ptr %t389, null + br i1 %t390, label %panic1942, label %ok1943 +panic1942: + call void @finch_panic(ptr @.str.1144, i64 264, ptr @.str.1145) + unreachable +ok1943: + %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 15 + store i64 0, ptr %a392 + br label %each.cond1944 +each.cond1944: + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t391, i32 0, i32 1 + %t394 = load i64, ptr %t393 + %t395 = load i64, ptr %a392 + %t396 = icmp slt i64 %t395, %t394 + br i1 %t396, label %each.body1945, label %each.end1947 +each.body1945: + %t397 = load ptr, ptr %t391 + %t398 = getelementptr inbounds %S.gen.StructDef, ptr %t397, i64 %t395 + %t399 = load %S.gen.StructDef, ptr %t398 + store %S.gen.StructDef %t399, ptr %a400 + call void @finch.copy.S_gen_StructDef(ptr %a401, ptr %a400) + %t402 = load %S.gen.StructDef, ptr %a401 + store %S.gen.StructDef %t402, ptr %a403 + %t404 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 2 + %t405 = load i1, ptr %t404 + br label %logic.from1948 +logic.from1948: + br i1 %t405, label %logic.end1950, label %logic.rhs1949 +logic.rhs1949: + %t406 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 5 + %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i32 0, i32 1 + %t408 = load i64, ptr %t407 + %t409 = icmp sgt i64 %t408, 0 + br label %logic.rend1951 +logic.rend1951: + br label %logic.end1950 +logic.end1950: + %t410 = phi i1 [ true, %logic.from1948 ], [ %t409, %logic.rend1951 ] + br i1 %t410, label %then1952, label %endif1954 +then1952: + br label %each.step1946 +endif1954: + %t411 = load ptr, ptr %a1 + %t412 = icmp eq ptr %t411, null + br i1 %t412, label %panic1955, label %ok1956 +panic1955: + call void @finch_panic(ptr @.str.1146, i64 268, ptr @.str.1147) + unreachable +ok1956: + %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 0 + %t414 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 13 + %t415 = load i64, ptr %t414 + %t416 = load { ptr, i64, i64 }, ptr %t413 + %t417 = extractvalue { ptr, i64, i64 } %t416, 1 + %t418 = icmp uge i64 %t415, %t417 + br i1 %t418, label %range1957, label %inrange1958 +range1957: + call void @finch_panic_index(ptr @.str.1148, i64 268, i64 %t415, i64 %t417) + unreachable +inrange1958: + %t419 = extractvalue { ptr, i64, i64 } %t416, 0 + %t420 = getelementptr inbounds %S.ast.Program, ptr %t419, i64 %t415 + %t421 = getelementptr inbounds %S.ast.Program, ptr %t420, i32 0, i32 6 + %t422 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 14 + %t423 = load i64, ptr %t422 + %t424 = load { ptr, i64, i64 }, ptr %t421 + %t425 = extractvalue { ptr, i64, i64 } %t424, 1 + %t426 = icmp uge i64 %t423, %t425 + br i1 %t426, label %range1959, label %inrange1960 +range1959: + call void @finch_panic_index(ptr @.str.1149, i64 268, i64 %t423, i64 %t425) + unreachable +inrange1960: + %t427 = extractvalue { ptr, i64, i64 } %t424, 0 + %t428 = getelementptr inbounds %S.ast.Node, ptr %t427, i64 %t423 + %t429 = load %S.ast.Node, ptr %t428 + store %S.ast.Node %t429, ptr %a430 + call void @finch.copy.S_ast_Node(ptr %a431, ptr %a430) + %t432 = load %S.ast.Node, ptr %a431 + store %S.ast.Node %t432, ptr %a433 + %t434 = load ptr, ptr %a1 + %t435 = icmp eq ptr %t434, null + br i1 %t435, label %panic1961, label %ok1962 +panic1961: + call void @finch_panic(ptr @.str.1150, i64 269, ptr @.str.1151) + unreachable +ok1962: + %t436 = getelementptr inbounds %S.gen.Gen, ptr %t434, i32 0, i32 27 + %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t436, i32 0, i32 1 + %t438 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 0 + %t439 = load { ptr, i64, i64 }, ptr %t438 + store { ptr, i64, i64 } { ptr @.str.1152, i64 3, i64 0 }, ptr %a441 + store { ptr, i64, i64 } %t439, ptr %a442 + call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) + %t443 = load { ptr, i64, i64 }, ptr %a440 + store { ptr, i64, i64 } %t443, ptr %a445 + store { ptr, i64, i64 } { ptr @.str.1153, i64 1, i64 0 }, ptr %a446 + call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) + %t447 = load { ptr, i64, i64 }, ptr %a444 + %t448 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 1 + %t449 = load { ptr, i64, i64 }, ptr %t448 + store { ptr, i64, i64 } %t447, ptr %a451 + store { ptr, i64, i64 } %t449, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + %t453 = load { ptr, i64, i64 }, ptr %a450 + store { ptr, i64, i64 } %t453, ptr %a455 + store { ptr, i64, i64 } { ptr @.str.1154, i64 1, i64 0 }, ptr %a456 + call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) + %t457 = load { ptr, i64, i64 }, ptr %a454 + %t458 = load ptr, ptr %a1 + %t459 = icmp eq ptr %t458, null + br i1 %t459, label %panic1963, label %ok1964 +panic1963: + call void @finch_panic(ptr @.str.1155, i64 269, ptr @.str.1156) + unreachable +ok1964: + %t460 = getelementptr inbounds %S.gen.Gen, ptr %t458, i32 0, i32 1 + %t461 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 13 + %t462 = load i64, ptr %t461 + %t463 = load { ptr, i64, i64 }, ptr %t460 + %t464 = extractvalue { ptr, i64, i64 } %t463, 1 + %t465 = icmp uge i64 %t462, %t464 + br i1 %t465, label %range1965, label %inrange1966 +range1965: + call void @finch_panic_index(ptr @.str.1157, i64 269, i64 %t462, i64 %t464) + unreachable +inrange1966: + %t466 = extractvalue { ptr, i64, i64 } %t463, 0 + %t467 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i64 %t462 + %t468 = load { ptr, i64, i64 }, ptr %t467 + store { ptr, i64, i64 } %t457, ptr %a470 + store { ptr, i64, i64 } %t468, ptr %a471 + call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) + %t472 = load { ptr, i64, i64 }, ptr %a469 + store { ptr, i64, i64 } %t472, ptr %a474 + store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a475 + call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) + %t476 = load { ptr, i64, i64 }, ptr %a473 + %t477 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 11 + %t478 = load i64, ptr %t477 + call void @finch_str_from_int(ptr %a479, i64 %t478) + %t480 = load { ptr, i64, i64 }, ptr %a479 + store { ptr, i64, i64 } %t476, ptr %a482 + store { ptr, i64, i64 } %t480, ptr %a483 + call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) + %t484 = load { ptr, i64, i64 }, ptr %a481 + store { ptr, i64, i64 } %t484, ptr %a486 + store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a487 + call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) + %t488 = load { ptr, i64, i64 }, ptr %a485 + %t489 = getelementptr inbounds %S.ast.Node, ptr %a433, i32 0, i32 12 + %t490 = load i64, ptr %t489 + call void @finch_str_from_int(ptr %a491, i64 %t490) + %t492 = load { ptr, i64, i64 }, ptr %a491 + store { ptr, i64, i64 } %t488, ptr %a494 + store { ptr, i64, i64 } %t492, ptr %a495 + call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) + %t496 = load { ptr, i64, i64 }, ptr %a493 + %t497 = load i64, ptr %t437 + %t498 = add i64 %t497, 1 + call void @finch_arr_reserve(ptr %t436, i64 %t498, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t499 = load ptr, ptr %t436 + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i64 %t497 + store { ptr, i64, i64 } %t496, ptr %t500 + store i64 %t498, ptr %t437 + %t501 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 11 + %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 + %t503 = load i64, ptr %t502 + store i64 0, ptr %a504 + br label %for.cond1967 +for.cond1967: + %t505 = load i64, ptr %a504 + %t506 = icmp slt i64 %t505, %t503 + br i1 %t506, label %for.body1968, label %for.end1970 +for.body1968: + %t507 = load ptr, ptr %a1 + %t508 = icmp eq ptr %t507, null + br i1 %t508, label %panic1971, label %ok1972 +panic1971: + call void @finch_panic(ptr @.str.1160, i64 271, ptr @.str.1161) + unreachable +ok1972: + %t509 = getelementptr inbounds %S.gen.Gen, ptr %t507, i32 0, i32 27 + %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 + %t511 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 0 + %t512 = load { ptr, i64, i64 }, ptr %t511 + store { ptr, i64, i64 } { ptr @.str.1162, i64 4, i64 0 }, ptr %a514 + store { ptr, i64, i64 } %t512, ptr %a515 + call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) + %t516 = load { ptr, i64, i64 }, ptr %a513 + store { ptr, i64, i64 } %t516, ptr %a518 + store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a519 + call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519) + %t520 = load { ptr, i64, i64 }, ptr %a517 + %t521 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 1 + %t522 = load { ptr, i64, i64 }, ptr %t521 + store { ptr, i64, i64 } %t520, ptr %a524 + store { ptr, i64, i64 } %t522, ptr %a525 + call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) + %t526 = load { ptr, i64, i64 }, ptr %a523 + store { ptr, i64, i64 } %t526, ptr %a528 + store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a529 + call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) + %t530 = load { ptr, i64, i64 }, ptr %a527 + %t531 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 11 + %t532 = load i64, ptr %a504 + %t533 = load { ptr, i64, i64 }, ptr %t531 + %t534 = extractvalue { ptr, i64, i64 } %t533, 1 + %t535 = icmp uge i64 %t532, %t534 + br i1 %t535, label %range1973, label %inrange1974 +range1973: + call void @finch_panic_index(ptr @.str.1165, i64 271, i64 %t532, i64 %t534) + unreachable +inrange1974: + %t536 = extractvalue { ptr, i64, i64 } %t533, 0 + %t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t532 + %t538 = load { ptr, i64, i64 }, ptr %t537 + store { ptr, i64, i64 } %t530, ptr %a540 + store { ptr, i64, i64 } %t538, ptr %a541 + call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541) + %t542 = load { ptr, i64, i64 }, ptr %a539 + store { ptr, i64, i64 } %t542, ptr %a544 + store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a545 + call void @finch_str_concat(ptr %a543, ptr %a544, ptr %a545) + %t546 = load { ptr, i64, i64 }, ptr %a543 + %t547 = getelementptr inbounds %S.gen.StructDef, ptr %a403, i32 0, i32 12 + %t548 = load i64, ptr %a504 + %t549 = load { ptr, i64, i64 }, ptr %t547 + %t550 = extractvalue { ptr, i64, i64 } %t549, 1 + %t551 = icmp uge i64 %t548, %t550 + br i1 %t551, label %range1975, label %inrange1976 +range1975: + call void @finch_panic_index(ptr @.str.1167, i64 271, i64 %t548, i64 %t550) + unreachable +inrange1976: + %t552 = extractvalue { ptr, i64, i64 } %t549, 0 + %t553 = getelementptr inbounds %S.ast.Type, ptr %t552, i64 %t548 + %t554 = load %S.ast.Type, ptr %t553 + %t555 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t554) + store { ptr, i64, i64 } %t546, ptr %a557 + store { ptr, i64, i64 } %t555, ptr %a558 + call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) + %t559 = load { ptr, i64, i64 }, ptr %a556 + %t560 = load i64, ptr %t510 + %t561 = add i64 %t560, 1 + call void @finch_arr_reserve(ptr %t509, i64 %t561, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t562 = load ptr, ptr %t509 + %t563 = getelementptr inbounds { ptr, i64, i64 }, ptr %t562, i64 %t560 + store { ptr, i64, i64 } %t559, ptr %t563 + store i64 %t561, ptr %t510 + br label %for.step1969 +for.step1969: + %t564 = load i64, ptr %a504 + %t565 = add i64 %t564, 1 + store i64 %t565, ptr %a504 + br label %for.cond1967 +for.end1970: + br label %each.step1946 +each.step1946: + %t566 = load i64, ptr %a392 + %t567 = add i64 %t566, 1 + store i64 %t567, ptr %a392 + br label %each.cond1944 +each.end1947: + %t568 = load ptr, ptr %a1 + %t569 = icmp eq ptr %t568, null + br i1 %t569, label %panic1977, label %ok1978 +panic1977: + call void @finch_panic(ptr @.str.1168, i64 274, ptr @.str.1169) + unreachable +ok1978: + %t570 = getelementptr inbounds %S.gen.Gen, ptr %t568, i32 0, i32 0 + %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %t570, i32 0, i32 1 + %t572 = load i64, ptr %t571 + store i64 0, ptr %a573 + br label %for.cond1979 +for.cond1979: + %t574 = load i64, ptr %a573 + %t575 = icmp slt i64 %t574, %t572 + br i1 %t575, label %for.body1980, label %for.end1982 +for.body1980: + %t576 = load ptr, ptr %a1 + %t577 = icmp eq ptr %t576, null + br i1 %t577, label %panic1983, label %ok1984 +panic1983: + call void @finch_panic(ptr @.str.1170, i64 275, ptr @.str.1171) + unreachable +ok1984: + %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 0 + %t579 = load i64, ptr %a573 + %t580 = load { ptr, i64, i64 }, ptr %t578 + %t581 = extractvalue { ptr, i64, i64 } %t580, 1 + %t582 = icmp uge i64 %t579, %t581 + br i1 %t582, label %range1985, label %inrange1986 +range1985: + call void @finch_panic_index(ptr @.str.1172, i64 275, i64 %t579, i64 %t581) + unreachable +inrange1986: + %t583 = extractvalue { ptr, i64, i64 } %t580, 0 + %t584 = getelementptr inbounds %S.ast.Program, ptr %t583, i64 %t579 + %t585 = getelementptr inbounds %S.ast.Program, ptr %t584, i32 0, i32 7 + store i64 0, ptr %a586 + br label %each.cond1987 +each.cond1987: + %t587 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i32 0, i32 1 + %t588 = load i64, ptr %t587 + %t589 = load i64, ptr %a586 + %t590 = icmp slt i64 %t589, %t588 + br i1 %t590, label %each.body1988, label %each.end1990 +each.body1988: + %t591 = load ptr, ptr %t585 + %t592 = getelementptr inbounds %S.ast.Node, ptr %t591, i64 %t589 + %t593 = load %S.ast.Node, ptr %t592 + store %S.ast.Node %t593, ptr %a594 + call void @finch.copy.S_ast_Node(ptr %a595, ptr %a594) + %t596 = load %S.ast.Node, ptr %a595 + store %S.ast.Node %t596, ptr %a597 + store { ptr, i64, i64 } { ptr @.str.1173, i64 0, i64 0 }, ptr %a598 + store { ptr, i64, i64 } zeroinitializer, ptr %a599 + %t600 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 9 + store i64 0, ptr %a601 + br label %each.cond1991 +each.cond1991: + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i32 0, i32 1 + %t603 = load i64, ptr %t602 + %t604 = load i64, ptr %a601 + %t605 = icmp slt i64 %t604, %t603 + br i1 %t605, label %each.body1992, label %each.end1994 +each.body1992: + %t606 = load ptr, ptr %t600 + %t607 = getelementptr inbounds %S.ast.Node, ptr %t606, i64 %t604 + %t608 = load %S.ast.Node, ptr %t607 + store %S.ast.Node %t608, ptr %a609 + %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a599, i32 0, i32 1 + %t611 = getelementptr inbounds %S.ast.Node, ptr %a609, i32 0, i32 1 + %t612 = load { ptr, i64, i64 }, ptr %t611 + store { ptr, i64, i64 } %t612, ptr %a613 + call void @finch_str_copy(ptr %a614, ptr %a613) + %t615 = load { ptr, i64, i64 }, ptr %a614 + %t616 = load i64, ptr %t610 + %t617 = add i64 %t616, 1 + call void @finch_arr_reserve(ptr %a599, i64 %t617, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t618 = load ptr, ptr %a599 + %t619 = getelementptr inbounds { ptr, i64, i64 }, ptr %t618, i64 %t616 + store { ptr, i64, i64 } %t615, ptr %t619 + store i64 %t617, ptr %t610 + br label %each.step1993 +each.step1993: + %t620 = load i64, ptr %a601 + %t621 = add i64 %t620, 1 + store i64 %t621, ptr %a601 + br label %each.cond1991 +each.end1994: + %t622 = getelementptr inbounds { ptr, i64, i64 }, ptr %a599, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1174, i64 1, i64 0 }, ptr %a623 + call void @finch_str_join(ptr %a624, ptr %a599, ptr %a623) + %t625 = load { ptr, i64, i64 }, ptr %a624 + store { ptr, i64, i64 } %t625, ptr %a598 + %t626 = load ptr, ptr %a1 + %t627 = icmp eq ptr %t626, null + br i1 %t627, label %panic1995, label %ok1996 +panic1995: + call void @finch_panic(ptr @.str.1175, i64 282, ptr @.str.1176) + unreachable +ok1996: + %t628 = getelementptr inbounds %S.gen.Gen, ptr %t626, i32 0, i32 27 + %t629 = getelementptr inbounds { ptr, i64, i64 }, ptr %t628, i32 0, i32 1 + %t630 = load ptr, ptr %a1 + %t631 = icmp eq ptr %t630, null + br i1 %t631, label %panic1997, label %ok1998 +panic1997: + call void @finch_panic(ptr @.str.1178, i64 282, ptr @.str.1179) + unreachable +ok1998: + %t632 = getelementptr inbounds %S.gen.Gen, ptr %t630, i32 0, i32 0 + %t633 = load i64, ptr %a573 + %t634 = load { ptr, i64, i64 }, ptr %t632 + %t635 = extractvalue { ptr, i64, i64 } %t634, 1 + %t636 = icmp uge i64 %t633, %t635 + br i1 %t636, label %range1999, label %inrange2000 +range1999: + call void @finch_panic_index(ptr @.str.1180, i64 282, i64 %t633, i64 %t635) + unreachable +inrange2000: + %t637 = extractvalue { ptr, i64, i64 } %t634, 0 + %t638 = getelementptr inbounds %S.ast.Program, ptr %t637, i64 %t633 + %t639 = getelementptr inbounds %S.ast.Program, ptr %t638, i32 0, i32 0 + %t640 = load { ptr, i64, i64 }, ptr %t639 + store { ptr, i64, i64 } { ptr @.str.1177, i64 3, i64 0 }, ptr %a642 + store { ptr, i64, i64 } %t640, ptr %a643 + call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a641 + store { ptr, i64, i64 } %t644, ptr %a646 + store { ptr, i64, i64 } { ptr @.str.1181, i64 1, i64 0 }, ptr %a647 + call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) + %t648 = load { ptr, i64, i64 }, ptr %a645 + %t649 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 1 + %t650 = load { ptr, i64, i64 }, ptr %t649 + store { ptr, i64, i64 } %t648, ptr %a652 + store { ptr, i64, i64 } %t650, ptr %a653 + call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) + %t654 = load { ptr, i64, i64 }, ptr %a651 + store { ptr, i64, i64 } %t654, ptr %a656 + store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a657 + call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) + %t658 = load { ptr, i64, i64 }, ptr %a655 + %t659 = load ptr, ptr %a1 + %t660 = icmp eq ptr %t659, null + br i1 %t660, label %panic2001, label %ok2002 +panic2001: + call void @finch_panic(ptr @.str.1183, i64 282, ptr @.str.1184) + unreachable +ok2002: + %t661 = getelementptr inbounds %S.gen.Gen, ptr %t659, i32 0, i32 1 + %t662 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 13 + %t663 = load i64, ptr %t662 + %t664 = load { ptr, i64, i64 }, ptr %t661 + %t665 = extractvalue { ptr, i64, i64 } %t664, 1 + %t666 = icmp uge i64 %t663, %t665 + br i1 %t666, label %range2003, label %inrange2004 +range2003: + call void @finch_panic_index(ptr @.str.1185, i64 282, i64 %t663, i64 %t665) + unreachable +inrange2004: + %t667 = extractvalue { ptr, i64, i64 } %t664, 0 + %t668 = getelementptr inbounds { ptr, i64, i64 }, ptr %t667, i64 %t663 + %t669 = load { ptr, i64, i64 }, ptr %t668 + store { ptr, i64, i64 } %t658, ptr %a671 + store { ptr, i64, i64 } %t669, ptr %a672 + call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) + %t673 = load { ptr, i64, i64 }, ptr %a670 + store { ptr, i64, i64 } %t673, ptr %a675 + store { ptr, i64, i64 } { ptr @.str.1186, i64 1, i64 0 }, ptr %a676 + call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) + %t677 = load { ptr, i64, i64 }, ptr %a674 + %t678 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 11 + %t679 = load i64, ptr %t678 + call void @finch_str_from_int(ptr %a680, i64 %t679) + %t681 = load { ptr, i64, i64 }, ptr %a680 + store { ptr, i64, i64 } %t677, ptr %a683 + store { ptr, i64, i64 } %t681, ptr %a684 + call void @finch_str_concat(ptr %a682, ptr %a683, ptr %a684) + %t685 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t685, ptr %a687 + store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a688 + call void @finch_str_concat(ptr %a686, ptr %a687, ptr %a688) + %t689 = load { ptr, i64, i64 }, ptr %a686 + %t690 = getelementptr inbounds %S.ast.Node, ptr %a597, i32 0, i32 12 + %t691 = load i64, ptr %t690 + call void @finch_str_from_int(ptr %a692, i64 %t691) + %t693 = load { ptr, i64, i64 }, ptr %a692 + store { ptr, i64, i64 } %t689, ptr %a695 + store { ptr, i64, i64 } %t693, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a694 + store { ptr, i64, i64 } %t697, ptr %a699 + store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a700 + call void @finch_str_concat(ptr %a698, ptr %a699, ptr %a700) + %t701 = load { ptr, i64, i64 }, ptr %a698 + %t702 = load { ptr, i64, i64 }, ptr %a598 + store { ptr, i64, i64 } %t701, ptr %a704 + store { ptr, i64, i64 } %t702, ptr %a705 + call void @finch_str_concat(ptr %a703, ptr %a704, ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a703 + %t707 = load i64, ptr %t629 + %t708 = add i64 %t707, 1 + call void @finch_arr_reserve(ptr %t628, i64 %t708, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t709 = load ptr, ptr %t628 + %t710 = getelementptr inbounds { ptr, i64, i64 }, ptr %t709, i64 %t707 + store { ptr, i64, i64 } %t706, ptr %t710 + store i64 %t708, ptr %t629 + br label %each.step1989 +each.step1989: + %t711 = load i64, ptr %a586 + %t712 = add i64 %t711, 1 + store i64 %t712, ptr %a586 + br label %each.cond1987 +each.end1990: + br label %for.step1981 +for.step1981: + %t713 = load i64, ptr %a573 + %t714 = add i64 %t713, 1 + store i64 %t714, ptr %a573 + br label %for.cond1979 +for.end1982: + ret void +} + define internal void @finch.gen.fail(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 %a3 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 %a40 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a52 = alloca { ptr, i64, i64 }, align 16 %a53 = alloca { ptr, i64, i64 }, align 16 %a54 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a78 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1771, label %ok1772 -panic1771: - call void @finch_panic(ptr @.str.1022, i64 172, ptr @.str.1023) + br i1 %t5, label %panic2005, label %ok2006 +panic2005: + call void @finch_panic(ptr @.str.1189, i64 288, ptr @.str.1190) unreachable -ok1772: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 1 - %t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t8 = load i64, ptr %t7 - %t9 = load { ptr, i64, i64 }, ptr %t6 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range1773, label %inrange1774 -range1773: - call void @finch_panic_index(ptr @.str.1024, i64 172, i64 %t8, i64 %t10) +ok2006: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + br label %logic.from2007 +logic.from2007: + br i1 %t7, label %logic.rhs2008, label %logic.end2009 +logic.rhs2008: + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic2010, label %ok2011 +panic2010: + call void @finch_panic(ptr @.str.1191, i64 288, ptr @.str.1192) unreachable -inrange1774: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i64 %t8 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1025, i64 1, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t20 = load i64, ptr %t19 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1026, i64 1, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t32 = load i64, ptr %t31 - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t30, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1027, i64 9, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a39 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic1775, label %ok1776 -panic1775: - call void @finch_panic(ptr @.str.1028, i64 172, ptr @.str.1029) +ok2011: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 27 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = icmp sgt i64 %t12, 0 + br label %logic.rend2012 +logic.rend2012: + br label %logic.end2009 +logic.end2009: + %t14 = phi i1 [ false, %logic.from2007 ], [ %t13, %logic.rend2012 ] + br i1 %t14, label %then2013, label %endif2015 +then2013: + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic2016, label %ok2017 +panic2016: + call void @finch_panic(ptr @.str.1193, i64 289, ptr @.str.1194) unreachable -ok1776: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 19 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t47, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 +ok2017: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 27 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a19 + call void @finch_str_join(ptr %a20, ptr %t17, ptr %a19) + %t21 = load { ptr, i64, i64 }, ptr %a20 + %t22 = extractvalue { ptr, i64, i64 } %t21, 1 + %t23 = trunc i64 %t22 to i32 + %t24 = extractvalue { ptr, i64, i64 } %t21, 0 + %t25 = icmp eq ptr %t24, null + %t26 = select i1 %t25, ptr @.str.1196, ptr %t24 + %t27 = call i32 (ptr, ...) @printf(ptr @.str.1197, i32 %t23, ptr %t26) + %t28 = call i32 (ptr, ...) @printf(ptr @.str.1198) + br label %endif2015 +endif2015: + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic2018, label %ok2019 +panic2018: + call void @finch_panic(ptr @.str.1199, i64 291, ptr @.str.1200) + unreachable +ok2019: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 1 + %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t33 = load i64, ptr %t32 + %t34 = load { ptr, i64, i64 }, ptr %t31 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range2020, label %inrange2021 +range2020: + call void @finch_panic_index(ptr @.str.1201, i64 291, i64 %t33, i64 %t35) + unreachable +inrange2021: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t33 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1202, i64 1, i64 0 }, ptr %a42 + call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) + %t43 = load { ptr, i64, i64 }, ptr %a40 + %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t45 = load i64, ptr %t44 + call void @finch_str_from_int(ptr %a46, i64 %t45) + %t47 = load { ptr, i64, i64 }, ptr %a46 + store { ptr, i64, i64 } %t43, ptr %a49 + store { ptr, i64, i64 } %t47, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t51, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a54 call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) %t55 = load { ptr, i64, i64 }, ptr %a52 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = trunc i64 %t56 to i32 - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = icmp eq ptr %t58, null - %t60 = select i1 %t59, ptr @.str.1030, ptr %t58 - %t61 = call i32 (ptr, ...) @printf(ptr @.str.1031, i32 %t57, ptr %t60) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.1032) - %t63 = trunc i64 1 to i32 - %t64 = call i32 @fflush(ptr null) - call void @exit(i32 %t63) + %t56 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t57 = load i64, ptr %t56 + call void @finch_str_from_int(ptr %a58, i64 %t57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t55, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.1204, i64 9, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + %t68 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t67, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = load ptr, ptr %a1 + %t74 = icmp eq ptr %t73, null + br i1 %t74, label %panic2022, label %ok2023 +panic2022: + call void @finch_panic(ptr @.str.1205, i64 291, ptr @.str.1206) + unreachable +ok2023: + %t75 = getelementptr inbounds %S.gen.Gen, ptr %t73, i32 0, i32 19 + %t76 = load { ptr, i64, i64 }, ptr %t75 + store { ptr, i64, i64 } %t72, ptr %a78 + store { ptr, i64, i64 } %t76, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a77 + %t81 = extractvalue { ptr, i64, i64 } %t80, 1 + %t82 = trunc i64 %t81 to i32 + %t83 = extractvalue { ptr, i64, i64 } %t80, 0 + %t84 = icmp eq ptr %t83, null + %t85 = select i1 %t84, ptr @.str.1207, ptr %t83 + %t86 = call i32 (ptr, ...) @printf(ptr @.str.1208, i32 %t82, ptr %t85) + %t87 = call i32 (ptr, ...) @printf(ptr @.str.1209) + %t88 = trunc i64 1 to i32 + %t89 = call i32 @fflush(ptr null) + call void @exit(i32 %t88) ret void } @@ -17597,46 +21151,46 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1777, label %ok1778 -panic1777: - call void @finch_panic(ptr @.str.1033, i64 178, ptr @.str.1034) + br i1 %t4, label %panic2024, label %ok2025 +panic2024: + call void @finch_panic(ptr @.str.1210, i64 297, ptr @.str.1211) unreachable -ok1778: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 32 +ok2025: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 34 %t6 = load i64, ptr %t5 %t7 = icmp sge i64 %t6, 0 - br label %logic.from1779 -logic.from1779: - br i1 %t7, label %logic.rhs1780, label %logic.end1781 -logic.rhs1780: + br label %logic.from2026 +logic.from2026: + br i1 %t7, label %logic.rhs2027, label %logic.end2028 +logic.rhs2027: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1036, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1213, i64 5, i64 0 }, ptr %a11 %t12 = call i64 @finch_str_find(ptr %a9, ptr %a11) %t13 = icmp sge i64 %t12, 0 - br label %logic.rend1782 -logic.rend1782: - br label %logic.end1781 -logic.end1781: - %t14 = phi i1 [ false, %logic.from1779 ], [ %t13, %logic.rend1782 ] - br i1 %t14, label %then1783, label %endif1785 -then1783: + br label %logic.rend2029 +logic.rend2029: + br label %logic.end2028 +logic.end2028: + %t14 = phi i1 [ false, %logic.from2026 ], [ %t13, %logic.rend2029 ] + br i1 %t14, label %then2030, label %endif2032 +then2030: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic1786, label %ok1787 -panic1786: - call void @finch_panic(ptr @.str.1037, i64 179, ptr @.str.1038) + br i1 %t16, label %panic2033, label %ok2034 +panic2033: + call void @finch_panic(ptr @.str.1214, i64 298, ptr @.str.1215) unreachable -ok1787: +ok2034: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 4 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1039, i64 2, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1216, i64 2, i64 0 }, ptr %a21 store { ptr, i64, i64 } %t19, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1040, i64 8, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1217, i64 8, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 %t28 = load ptr, ptr %a1 @@ -17655,18 +21209,18 @@ ok1787: store { ptr, i64, i64 } %t35, ptr %t39 store i64 %t37, ptr %t18 ret void -endif1785: +endif2032: %t40 = load ptr, ptr %a1 %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1788, label %ok1789 -panic1788: - call void @finch_panic(ptr @.str.1041, i64 182, ptr @.str.1042) + br i1 %t41, label %panic2035, label %ok2036 +panic2035: + call void @finch_panic(ptr @.str.1218, i64 301, ptr @.str.1219) unreachable -ok1789: +ok2036: %t42 = getelementptr inbounds %S.gen.Gen, ptr %t40, i32 0, i32 4 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1043, i64 2, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1220, i64 2, i64 0 }, ptr %a46 store { ptr, i64, i64 } %t44, ptr %a47 call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) %t48 = load { ptr, i64, i64 }, ptr %a45 @@ -17690,27 +21244,27 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1790, label %ok1791 -panic1790: - call void @finch_panic(ptr @.str.1044, i64 186, ptr @.str.1045) + br i1 %t3, label %panic2037, label %ok2038 +panic2037: + call void @finch_panic(ptr @.str.1221, i64 305, ptr @.str.1222) unreachable -ok1791: +ok2038: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 6 %t5 = load i64, ptr %t4 %t6 = add i64 %t5, 1 store i64 %t6, ptr %t4 %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.1047, i64 187, ptr @.str.1048) + br i1 %t8, label %panic2039, label %ok2040 +panic2039: + call void @finch_panic(ptr @.str.1224, i64 306, ptr @.str.1225) unreachable -ok1793: +ok2040: %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 6 %t10 = load i64, ptr %t9 call void @finch_str_from_int(ptr %a11, i64 %t10) %t12 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1046, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1223, i64 2, i64 0 }, ptr %a14 store { ptr, i64, i64 } %t12, ptr %a15 call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) %t16 = load { ptr, i64, i64 }, ptr %a13 @@ -17729,11 +21283,11 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1794, label %ok1795 -panic1794: - call void @finch_panic(ptr @.str.1049, i64 191, ptr @.str.1050) + br i1 %t4, label %panic2041, label %ok2042 +panic2041: + call void @finch_panic(ptr @.str.1226, i64 310, ptr @.str.1227) unreachable -ok1795: +ok2042: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 7 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 @@ -17741,11 +21295,11 @@ ok1795: %t8 = load { ptr, i64, i64 }, ptr %a2 %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1796, label %ok1797 -panic1796: - call void @finch_panic(ptr @.str.1051, i64 192, ptr @.str.1052) + br i1 %t10, label %panic2043, label %ok2044 +panic2043: + call void @finch_panic(ptr @.str.1228, i64 311, ptr @.str.1229) unreachable -ok1797: +ok2044: %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 7 %t12 = load i64, ptr %t11 call void @finch_str_from_int(ptr %a13, i64 %t12) @@ -17768,16 +21322,16 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1798, label %ok1799 -panic1798: - call void @finch_panic(ptr @.str.1053, i64 196, ptr @.str.1054) + br i1 %t4, label %panic2045, label %ok2046 +panic2045: + call void @finch_panic(ptr @.str.1230, i64 315, ptr @.str.1231) unreachable -ok1799: +ok2046: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 4 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 %t12 = load i64, ptr %t6 @@ -17789,11 +21343,11 @@ ok1799: store i64 %t13, ptr %t6 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic1800, label %ok1801 -panic1800: - call void @finch_panic(ptr @.str.1056, i64 197, ptr @.str.1057) + br i1 %t17, label %panic2047, label %ok2048 +panic2047: + call void @finch_panic(ptr @.str.1233, i64 316, ptr @.str.1234) unreachable -ok1801: +ok2048: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 store i1 false, ptr %t18 ret void @@ -17810,34 +21364,34 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1802, label %ok1803 -panic1802: - call void @finch_panic(ptr @.str.1058, i64 201, ptr @.str.1059) + br i1 %t4, label %panic2049, label %ok2050 +panic2049: + call void @finch_panic(ptr @.str.1235, i64 320, ptr @.str.1236) unreachable -ok1803: +ok2050: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 9 %t6 = load i1, ptr %t5 %t7 = xor i1 %t6, true - br i1 %t7, label %then1804, label %endif1806 -then1804: + br i1 %t7, label %then2051, label %endif2053 +then2051: %t8 = load ptr, ptr %a1 %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1060, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1237, i64 10, i64 0 }, ptr %a11 store { ptr, i64, i64 } %t9, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 call void @finch.gen.emit(ptr %t8, { ptr, i64, i64 } %t13) %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.1061, i64 203, ptr @.str.1062) + br i1 %t15, label %panic2054, label %ok2055 +panic2054: + call void @finch_panic(ptr @.str.1238, i64 322, ptr @.str.1239) unreachable -ok1808: +ok2055: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 9 store i1 true, ptr %t16 - br label %endif1806 -endif1806: + br label %endif2053 +endif2053: ret void } @@ -17868,12 +21422,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1063, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1240, i64 6, i64 0 }, ptr %a8 store { ptr, i64, i64 } %t6, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1064, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1241, i64 9, i64 0 }, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 %t15 = load { ptr, i64, i64 }, ptr %a3 @@ -17882,7 +21436,7 @@ entry: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1065, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.1242, i64 9, i64 0 }, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 %t24 = load { ptr, i64, i64 }, ptr %a4 @@ -17893,11 +21447,11 @@ entry: call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t28) %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.1066, i64 209, ptr @.str.1067) + br i1 %t30, label %panic2056, label %ok2057 +panic2056: + call void @finch_panic(ptr @.str.1243, i64 328, ptr @.str.1244) unreachable -ok1810: +ok2057: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 9 store i1 true, ptr %t31 ret void @@ -17930,47 +21484,47 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1811, label %ok1812 -panic1811: - call void @finch_panic(ptr @.str.1068, i64 213, ptr @.str.1069) + br i1 %t4, label %panic2058, label %ok2059 +panic2058: + call void @finch_panic(ptr @.str.1245, i64 332, ptr @.str.1246) unreachable -ok1812: +ok2059: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 6 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 store i64 %t7, ptr %t5 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1813, label %ok1814 -panic1813: - call void @finch_panic(ptr @.str.1071, i64 214, ptr @.str.1072) + br i1 %t9, label %panic2060, label %ok2061 +panic2060: + call void @finch_panic(ptr @.str.1248, i64 333, ptr @.str.1249) unreachable -ok1814: +ok2061: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 6 %t11 = load i64, ptr %t10 call void @finch_str_from_int(ptr %a12, i64 %t11) %t13 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1070, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1247, i64 2, i64 0 }, ptr %a15 store { ptr, i64, i64 } %t13, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a18 %t19 = load ptr, ptr %a1 %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic1815, label %ok1816 -panic1815: - call void @finch_panic(ptr @.str.1073, i64 215, ptr @.str.1074) + br i1 %t20, label %panic2062, label %ok2063 +panic2062: + call void @finch_panic(ptr @.str.1250, i64 334, ptr @.str.1251) unreachable -ok1816: +ok2063: %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 5 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.1075, i64 2, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.1252, i64 2, i64 0 }, ptr %a25 store { ptr, i64, i64 } %t23, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1076, i64 10, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.1253, i64 10, i64 0 }, ptr %a30 call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 %t32 = load { ptr, i64, i64 }, ptr %a2 @@ -17979,7 +21533,7 @@ ok1816: call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.1077, i64 10, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.1254, i64 10, i64 0 }, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 %t41 = load i64, ptr %t22 @@ -18025,7 +21579,7 @@ entry: %t7 = load ptr, ptr %a1 %t8 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1078, i64 8, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1255, i64 8, i64 0 }, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 %t13 = load { ptr, i64, i64 }, ptr %a2 @@ -18034,7 +21588,7 @@ entry: call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1079, i64 6, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1256, i64 6, i64 0 }, ptr %a20 call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 %t22 = load { ptr, i64, i64 }, ptr %a3 @@ -18077,12 +21631,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1080, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1257, i64 6, i64 0 }, ptr %a8 store { ptr, i64, i64 } %t6, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1081, i64 1, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1258, i64 1, i64 0 }, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 %t15 = load { ptr, i64, i64 }, ptr %a3 @@ -18091,7 +21645,7 @@ entry: call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1082, i64 6, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.1259, i64 6, i64 0 }, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 %t24 = load { ptr, i64, i64 }, ptr %a4 @@ -18156,7 +21710,7 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1083, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1260, i64 3, i64 0 }, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 %t12 = load { ptr, i64, i64 }, ptr %a2 @@ -18188,27 +21742,27 @@ entry: %t6 = load i64, ptr %t3 %t7 = load ptr, ptr %a1 store i64 0, ptr %a8 - br label %find.cond1817 -find.cond1817: + br label %find.cond2064 +find.cond2064: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body1818, label %find.end1821 -find.body1818: + br i1 %t10, label %find.body2065, label %find.end2068 +find.body2065: %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 %t9 %t12 = load { ptr, i64, i64 }, ptr %t11 store { ptr, i64, i64 } %t12, ptr %a13 store { ptr, i64, i64 } %t4, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br i1 %t16, label %find.hit1819, label %find.next1820 -find.hit1819: + br i1 %t16, label %find.hit2066, label %find.next2067 +find.hit2066: store i64 %t9, ptr %a5 - br label %find.end1821 -find.next1820: + br label %find.end2068 +find.next2067: %t17 = add i64 %t9, 1 store i64 %t17, ptr %a8 - br label %find.cond1817 -find.end1821: + br label %find.cond2064 +find.end2068: %t18 = load i64, ptr %a5 %t19 = icmp sge i64 %t18, 0 ret i1 %t19 @@ -18246,51 +21800,51 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1084, i64 3, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1261, i64 3, i64 0 }, ptr %a10 %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br label %logic.from1822 -logic.from1822: - br i1 %t12, label %logic.end1824, label %logic.rhs1823 -logic.rhs1823: + br label %logic.from2069 +logic.from2069: + br i1 %t12, label %logic.end2071, label %logic.rhs2070 +logic.rhs2070: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1085, i64 2, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1262, i64 2, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp ne i32 %t16, 0 - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t18 = phi i1 [ true, %logic.from1822 ], [ %t17, %logic.rend1825 ] - br label %logic.from1826 -logic.from1826: - br i1 %t18, label %logic.end1828, label %logic.rhs1827 -logic.rhs1827: + br label %logic.rend2072 +logic.rend2072: + br label %logic.end2071 +logic.end2071: + %t18 = phi i1 [ true, %logic.from2069 ], [ %t17, %logic.rend2072 ] + br label %logic.from2073 +logic.from2073: + br i1 %t18, label %logic.end2075, label %logic.rhs2074 +logic.rhs2074: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1086, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1263, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.rend1829 -logic.rend1829: - br label %logic.end1828 -logic.end1828: - %t24 = phi i1 [ true, %logic.from1826 ], [ %t23, %logic.rend1829 ] - br label %logic.from1830 -logic.from1830: - br i1 %t24, label %logic.end1832, label %logic.rhs1831 -logic.rhs1831: + br label %logic.rend2076 +logic.rend2076: + br label %logic.end2075 +logic.end2075: + %t24 = phi i1 [ true, %logic.from2073 ], [ %t23, %logic.rend2076 ] + br label %logic.from2077 +logic.from2077: + br i1 %t24, label %logic.end2079, label %logic.rhs2078 +logic.rhs2078: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1087, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1264, i64 3, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend1833 -logic.rend1833: - br label %logic.end1832 -logic.end1832: - %t30 = phi i1 [ true, %logic.from1830 ], [ %t29, %logic.rend1833 ] + br label %logic.rend2080 +logic.rend2080: + br label %logic.end2079 +logic.end2079: + %t30 = phi i1 [ true, %logic.from2077 ], [ %t29, %logic.rend2080 ] ret i1 %t30 } @@ -18317,51 +21871,51 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1088, i64 2, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1265, i64 2, i64 0 }, ptr %a10 %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br label %logic.from1834 -logic.from1834: - br i1 %t12, label %logic.end1836, label %logic.rhs1835 -logic.rhs1835: + br label %logic.from2081 +logic.from2081: + br i1 %t12, label %logic.end2083, label %logic.rhs2082 +logic.rhs2082: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1089, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1266, i64 3, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp ne i32 %t16, 0 - br label %logic.rend1837 -logic.rend1837: - br label %logic.end1836 -logic.end1836: - %t18 = phi i1 [ true, %logic.from1834 ], [ %t17, %logic.rend1837 ] - br label %logic.from1838 -logic.from1838: - br i1 %t18, label %logic.end1840, label %logic.rhs1839 -logic.rhs1839: + br label %logic.rend2084 +logic.rend2084: + br label %logic.end2083 +logic.end2083: + %t18 = phi i1 [ true, %logic.from2081 ], [ %t17, %logic.rend2084 ] + br label %logic.from2085 +logic.from2085: + br i1 %t18, label %logic.end2087, label %logic.rhs2086 +logic.rhs2086: %t19 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1090, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1267, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.rend1841 -logic.rend1841: - br label %logic.end1840 -logic.end1840: - %t24 = phi i1 [ true, %logic.from1838 ], [ %t23, %logic.rend1841 ] - br label %logic.from1842 -logic.from1842: - br i1 %t24, label %logic.end1844, label %logic.rhs1843 -logic.rhs1843: + br label %logic.rend2088 +logic.rend2088: + br label %logic.end2087 +logic.end2087: + %t24 = phi i1 [ true, %logic.from2085 ], [ %t23, %logic.rend2088 ] + br label %logic.from2089 +logic.from2089: + br i1 %t24, label %logic.end2091, label %logic.rhs2090 +logic.rhs2090: %t25 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1091, i64 3, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1268, i64 3, i64 0 }, ptr %a27 %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) %t29 = icmp ne i32 %t28, 0 - br label %logic.rend1845 -logic.rend1845: - br label %logic.end1844 -logic.end1844: - %t30 = phi i1 [ true, %logic.from1842 ], [ %t29, %logic.rend1845 ] + br label %logic.rend2092 +logic.rend2092: + br label %logic.end2091 +logic.end2091: + %t30 = phi i1 [ true, %logic.from2089 ], [ %t29, %logic.rend2092 ] ret i1 %t30 } @@ -18371,17 +21925,17 @@ entry: store %S.ast.Type %p0, ptr %a1 %t2 = load %S.ast.Type, ptr %a1 %t3 = call i1 @finch.gen.isSigned(%S.ast.Type %t2) - br label %logic.from1846 -logic.from1846: - br i1 %t3, label %logic.end1848, label %logic.rhs1847 -logic.rhs1847: + br label %logic.from2093 +logic.from2093: + br i1 %t3, label %logic.end2095, label %logic.rhs2094 +logic.rhs2094: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend1849 -logic.rend1849: - br label %logic.end1848 -logic.end1848: - %t6 = phi i1 [ true, %logic.from1846 ], [ %t5, %logic.rend1849 ] + br label %logic.rend2096 +logic.rend2096: + br label %logic.end2095 +logic.end2095: + %t6 = phi i1 [ true, %logic.from2093 ], [ %t5, %logic.rend2096 ] ret i1 %t6 } @@ -18396,24 +21950,24 @@ entry: %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1092, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1269, i64 5, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t7, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: + br label %logic.from2097 +logic.from2097: + br i1 %t7, label %logic.end2099, label %logic.rhs2098 +logic.rhs2098: %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t9 = load { ptr, i64, i64 }, ptr %t8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1093, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1270, i64 3, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t14 = phi i1 [ true, %logic.from1850 ], [ %t13, %logic.rend1853 ] + br label %logic.rend2100 +logic.rend2100: + br label %logic.end2099 +logic.end2099: + %t14 = phi i1 [ true, %logic.from2097 ], [ %t13, %logic.rend2100 ] ret i1 %t14 } @@ -18423,17 +21977,17 @@ entry: store %S.ast.Type %p0, ptr %a1 %t2 = load %S.ast.Type, ptr %a1 %t3 = call i1 @finch.gen.isInt(%S.ast.Type %t2) - br label %logic.from1854 -logic.from1854: - br i1 %t3, label %logic.end1856, label %logic.rhs1855 -logic.rhs1855: + br label %logic.from2101 +logic.from2101: + br i1 %t3, label %logic.end2103, label %logic.rhs2102 +logic.rhs2102: %t4 = load %S.ast.Type, ptr %a1 %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend1857 -logic.rend1857: - br label %logic.end1856 -logic.end1856: - %t6 = phi i1 [ true, %logic.from1854 ], [ %t5, %logic.rend1857 ] + br label %logic.rend2104 +logic.rend2104: + br label %logic.end2103 +logic.end2103: + %t6 = phi i1 [ true, %logic.from2101 ], [ %t5, %logic.rend2104 ] ret i1 %t6 } @@ -18470,110 +22024,110 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1094, i64 4, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1271, i64 4, i64 0 }, ptr %a10 %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br i1 %t12, label %then1858, label %endif1860 -then1858: + br i1 %t12, label %then2105, label %endif2107 +then2105: ret i64 1 -endif1860: +endif2107: %t13 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1095, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1272, i64 4, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp ne i32 %t16, 0 - br label %logic.from1861 -logic.from1861: - br i1 %t17, label %logic.end1863, label %logic.rhs1862 -logic.rhs1862: + br label %logic.from2108 +logic.from2108: + br i1 %t17, label %logic.end2110, label %logic.rhs2109 +logic.rhs2109: %t18 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1096, i64 2, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1273, i64 2, i64 0 }, ptr %a20 %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) %t22 = icmp ne i32 %t21, 0 - br label %logic.rend1864 -logic.rend1864: - br label %logic.end1863 -logic.end1863: - %t23 = phi i1 [ true, %logic.from1861 ], [ %t22, %logic.rend1864 ] - br label %logic.from1865 -logic.from1865: - br i1 %t23, label %logic.end1867, label %logic.rhs1866 -logic.rhs1866: + br label %logic.rend2111 +logic.rend2111: + br label %logic.end2110 +logic.end2110: + %t23 = phi i1 [ true, %logic.from2108 ], [ %t22, %logic.rend2111 ] + br label %logic.from2112 +logic.from2112: + br i1 %t23, label %logic.end2114, label %logic.rhs2113 +logic.rhs2113: %t24 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1097, i64 2, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1274, i64 2, i64 0 }, ptr %a26 %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) %t28 = icmp ne i32 %t27, 0 - br label %logic.rend1868 -logic.rend1868: - br label %logic.end1867 -logic.end1867: - %t29 = phi i1 [ true, %logic.from1865 ], [ %t28, %logic.rend1868 ] - br i1 %t29, label %then1869, label %endif1871 -then1869: + br label %logic.rend2115 +logic.rend2115: + br label %logic.end2114 +logic.end2114: + %t29 = phi i1 [ true, %logic.from2112 ], [ %t28, %logic.rend2115 ] + br i1 %t29, label %then2116, label %endif2118 +then2116: ret i64 8 -endif1871: +endif2118: %t30 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1098, i64 3, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1275, i64 3, i64 0 }, ptr %a32 %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) %t34 = icmp ne i32 %t33, 0 - br label %logic.from1872 -logic.from1872: - br i1 %t34, label %logic.end1874, label %logic.rhs1873 -logic.rhs1873: + br label %logic.from2119 +logic.from2119: + br i1 %t34, label %logic.end2121, label %logic.rhs2120 +logic.rhs2120: %t35 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1099, i64 3, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1276, i64 3, i64 0 }, ptr %a37 %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) %t39 = icmp ne i32 %t38, 0 - br label %logic.rend1875 -logic.rend1875: - br label %logic.end1874 -logic.end1874: - %t40 = phi i1 [ true, %logic.from1872 ], [ %t39, %logic.rend1875 ] - br i1 %t40, label %then1876, label %endif1878 -then1876: + br label %logic.rend2122 +logic.rend2122: + br label %logic.end2121 +logic.end2121: + %t40 = phi i1 [ true, %logic.from2119 ], [ %t39, %logic.rend2122 ] + br i1 %t40, label %then2123, label %endif2125 +then2123: ret i64 16 -endif1878: +endif2125: %t41 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1277, i64 3, i64 0 }, ptr %a43 %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) %t45 = icmp ne i32 %t44, 0 - br label %logic.from1879 -logic.from1879: - br i1 %t45, label %logic.end1881, label %logic.rhs1880 -logic.rhs1880: + br label %logic.from2126 +logic.from2126: + br i1 %t45, label %logic.end2128, label %logic.rhs2127 +logic.rhs2127: %t46 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1101, i64 3, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.1278, i64 3, i64 0 }, ptr %a48 %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) %t50 = icmp ne i32 %t49, 0 - br label %logic.rend1882 -logic.rend1882: - br label %logic.end1881 -logic.end1881: - %t51 = phi i1 [ true, %logic.from1879 ], [ %t50, %logic.rend1882 ] - br label %logic.from1883 -logic.from1883: - br i1 %t51, label %logic.end1885, label %logic.rhs1884 -logic.rhs1884: + br label %logic.rend2129 +logic.rend2129: + br label %logic.end2128 +logic.end2128: + %t51 = phi i1 [ true, %logic.from2126 ], [ %t50, %logic.rend2129 ] + br label %logic.from2130 +logic.from2130: + br i1 %t51, label %logic.end2132, label %logic.rhs2131 +logic.rhs2131: %t52 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1102, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.1279, i64 3, i64 0 }, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br label %logic.rend1886 -logic.rend1886: - br label %logic.end1885 -logic.end1885: - %t57 = phi i1 [ true, %logic.from1883 ], [ %t56, %logic.rend1886 ] - br i1 %t57, label %then1887, label %endif1889 -then1887: + br label %logic.rend2133 +logic.rend2133: + br label %logic.end2132 +logic.end2132: + %t57 = phi i1 [ true, %logic.from2130 ], [ %t56, %logic.rend2133 ] + br i1 %t57, label %then2134, label %endif2136 +then2134: ret i64 32 -endif1889: +endif2136: ret i64 64 } @@ -18586,39 +22140,39 @@ entry: %t3 = load %S.ast.Type, ptr %a1 %t4 = call i1 @finch.gen.isInt(%S.ast.Type %t3) %t5 = xor i1 %t4, true - br label %logic.from1890 -logic.from1890: - br i1 %t5, label %logic.end1892, label %logic.rhs1891 -logic.rhs1891: + br label %logic.from2137 +logic.from2137: + br i1 %t5, label %logic.end2139, label %logic.rhs2138 +logic.rhs2138: %t6 = load %S.ast.Type, ptr %a2 %t7 = call i1 @finch.gen.isInt(%S.ast.Type %t6) %t8 = xor i1 %t7, true - br label %logic.rend1893 -logic.rend1893: - br label %logic.end1892 -logic.end1892: - %t9 = phi i1 [ true, %logic.from1890 ], [ %t8, %logic.rend1893 ] - br i1 %t9, label %then1894, label %endif1896 -then1894: + br label %logic.rend2140 +logic.rend2140: + br label %logic.end2139 +logic.end2139: + %t9 = phi i1 [ true, %logic.from2137 ], [ %t8, %logic.rend2140 ] + br i1 %t9, label %then2141, label %endif2143 +then2141: ret i1 false -endif1896: +endif2143: %t10 = load %S.ast.Type, ptr %a1 %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from1897 -logic.from1897: - br i1 %t11, label %logic.rhs1898, label %logic.end1899 -logic.rhs1898: + br label %logic.from2144 +logic.from2144: + br i1 %t11, label %logic.rhs2145, label %logic.end2146 +logic.rhs2145: %t12 = load %S.ast.Type, ptr %a2 %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend1900 -logic.rend1900: - br label %logic.end1899 -logic.end1899: - %t14 = phi i1 [ false, %logic.from1897 ], [ %t13, %logic.rend1900 ] - br i1 %t14, label %then1901, label %endif1903 -then1901: + br label %logic.rend2147 +logic.rend2147: + br label %logic.end2146 +logic.end2146: + %t14 = phi i1 [ false, %logic.from2144 ], [ %t13, %logic.rend2147 ] + br i1 %t14, label %then2148, label %endif2150 +then2148: ret i1 false -endif1903: +endif2150: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i64 @finch.gen.bitsOf(%S.ast.Type %t15) %t17 = load %S.ast.Type, ptr %a1 @@ -18642,33 +22196,33 @@ entry: %t4 = load %S.ast.Type, ptr %a3 %t5 = call i1 @finch.gen.isInt(%S.ast.Type %t4) %t6 = xor i1 %t5, true - br i1 %t6, label %then1904, label %endif1906 -then1904: + br i1 %t6, label %then2151, label %endif2153 +then2151: ret i1 false -endif1906: +endif2153: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - %t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1103, i64 308) + %t9 = call i64 @finch_str_to_int(ptr %a8, ptr @.str.1280, i64 427) store i64 %t9, ptr %a10 %t11 = load %S.ast.Type, ptr %a3 %t12 = call i64 @finch.gen.bitsOf(%S.ast.Type %t11) store i64 %t12, ptr %a13 %t14 = load i64, ptr %a10 %t15 = icmp slt i64 %t14, 0 - br i1 %t15, label %then1907, label %endif1909 -then1907: + br i1 %t15, label %then2154, label %endif2156 +then2154: %t16 = load %S.ast.Type, ptr %a3 %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then1910, label %endif1912 -then1910: + br i1 %t17, label %then2157, label %endif2159 +then2157: ret i1 false -endif1912: +endif2159: %t18 = load i64, ptr %a13 %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then1913, label %endif1915 -then1913: + br i1 %t19, label %then2160, label %endif2162 +then2160: ret i1 true -endif1915: +endif2162: %t20 = load i64, ptr %a10 %t21 = load i64, ptr %a13 %t22 = sub i64 %t21, 1 @@ -18676,28 +22230,28 @@ endif1915: %t24 = sub i64 0, %t23 %t25 = icmp sge i64 %t20, %t24 ret i1 %t25 -endif1909: +endif2156: %t26 = load i64, ptr %a13 %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then1916, label %endif1918 -then1916: + br i1 %t27, label %then2163, label %endif2165 +then2163: ret i1 true -endif1918: +endif2165: %t28 = load i64, ptr %a13 %t29 = shl i64 1, %t28 %t30 = sub i64 %t29, 1 store i64 %t30, ptr %a31 %t32 = load %S.ast.Type, ptr %a3 %t33 = call i1 @finch.gen.isSigned(%S.ast.Type %t32) - br i1 %t33, label %then1919, label %endif1921 -then1919: + br i1 %t33, label %then2166, label %endif2168 +then2166: %t34 = load i64, ptr %a13 %t35 = sub i64 %t34, 1 %t36 = shl i64 1, %t35 %t37 = sub i64 %t36, 1 store i64 %t37, ptr %a31 - br label %endif1921 -endif1921: + br label %endif2168 +endif2168: %t38 = load i64, ptr %a10 %t39 = load i64, ptr %a31 %t40 = icmp sle i64 %t38, %t39 @@ -18719,38 +22273,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1922, label %ok1923 -panic1922: - call void @finch_panic(ptr @.str.1104, i64 330, ptr @.str.1105) + br i1 %t5, label %panic2169, label %ok2170 +panic2169: + call void @finch_panic(ptr @.str.1281, i64 449, ptr @.str.1282) unreachable -ok1923: +ok2170: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load i64, ptr %t7 store i64 0, ptr %a9 - br label %for.cond1924 -for.cond1924: + br label %for.cond2171 +for.cond2171: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body1925, label %for.end1927 -for.body1925: + br i1 %t11, label %for.body2172, label %for.end2174 +for.body2172: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1928, label %ok1929 -panic1928: - call void @finch_panic(ptr @.str.1106, i64 331, ptr @.str.1107) + br i1 %t13, label %panic2175, label %ok2176 +panic2175: + call void @finch_panic(ptr @.str.1283, i64 450, ptr @.str.1284) unreachable -ok1929: +ok2176: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 %t15 = load i64, ptr %a9 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range1930, label %inrange1931 -range1930: - call void @finch_panic_index(ptr @.str.1108, i64 331, i64 %t15, i64 %t17) + br i1 %t18, label %range2177, label %inrange2178 +range2177: + call void @finch_panic_index(ptr @.str.1285, i64 450, i64 %t15, i64 %t17) unreachable -inrange1931: +inrange2178: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.StructDef, ptr %t19, i64 %t15 %t21 = getelementptr inbounds %S.gen.StructDef, ptr %t20, i32 0, i32 0 @@ -18760,27 +22314,27 @@ inrange1931: store { ptr, i64, i64 } %t23, ptr %a25 %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.from1932 -logic.from1932: - br i1 %t27, label %logic.rhs1933, label %logic.end1934 -logic.rhs1933: + br label %logic.from2179 +logic.from2179: + br i1 %t27, label %logic.rhs2180, label %logic.end2181 +logic.rhs2180: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic1935, label %ok1936 -panic1935: - call void @finch_panic(ptr @.str.1109, i64 331, ptr @.str.1110) + br i1 %t29, label %panic2182, label %ok2183 +panic2182: + call void @finch_panic(ptr @.str.1286, i64 450, ptr @.str.1287) unreachable -ok1936: +ok2183: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 %t31 = load i64, ptr %a9 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1937, label %inrange1938 -range1937: - call void @finch_panic_index(ptr @.str.1111, i64 331, i64 %t31, i64 %t33) + br i1 %t34, label %range2184, label %inrange2185 +range2184: + call void @finch_panic_index(ptr @.str.1288, i64 450, i64 %t31, i64 %t33) unreachable -inrange1938: +inrange2185: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.StructDef, ptr %t35, i64 %t31 %t37 = getelementptr inbounds %S.gen.StructDef, ptr %t36, i32 0, i32 1 @@ -18790,23 +22344,23 @@ inrange1938: store { ptr, i64, i64 } %t39, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br label %logic.rend1939 -logic.rend1939: - br label %logic.end1934 -logic.end1934: - %t44 = phi i1 [ false, %logic.from1932 ], [ %t43, %logic.rend1939 ] - br i1 %t44, label %then1940, label %endif1942 -then1940: + br label %logic.rend2186 +logic.rend2186: + br label %logic.end2181 +logic.end2181: + %t44 = phi i1 [ false, %logic.from2179 ], [ %t43, %logic.rend2186 ] + br i1 %t44, label %then2187, label %endif2189 +then2187: %t45 = load i64, ptr %a9 ret i64 %t45 -endif1942: - br label %for.step1926 -for.step1926: +endif2189: + br label %for.step2173 +for.step2173: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond1924 -for.end1927: + br label %for.cond2171 +for.end2174: ret i64 -1 } @@ -18825,38 +22379,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1112, i64 339, ptr @.str.1113) + br i1 %t5, label %panic2190, label %ok2191 +panic2190: + call void @finch_panic(ptr @.str.1289, i64 458, ptr @.str.1290) unreachable -ok1944: +ok2191: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load i64, ptr %t7 store i64 0, ptr %a9 - br label %for.cond1945 -for.cond1945: + br label %for.cond2192 +for.cond2192: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body1946, label %for.end1948 -for.body1946: + br i1 %t11, label %for.body2193, label %for.end2195 +for.body2193: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1949, label %ok1950 -panic1949: - call void @finch_panic(ptr @.str.1114, i64 340, ptr @.str.1115) + br i1 %t13, label %panic2196, label %ok2197 +panic2196: + call void @finch_panic(ptr @.str.1291, i64 459, ptr @.str.1292) unreachable -ok1950: +ok2197: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 20 %t15 = load i64, ptr %a9 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1116, i64 340, i64 %t15, i64 %t17) + br i1 %t18, label %range2198, label %inrange2199 +range2198: + call void @finch_panic_index(ptr @.str.1293, i64 459, i64 %t15, i64 %t17) unreachable -inrange1952: +inrange2199: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.EnumDef, ptr %t19, i64 %t15 %t21 = getelementptr inbounds %S.gen.EnumDef, ptr %t20, i32 0, i32 0 @@ -18866,27 +22420,27 @@ inrange1952: store { ptr, i64, i64 } %t23, ptr %a25 %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.from1953 -logic.from1953: - br i1 %t27, label %logic.rhs1954, label %logic.end1955 -logic.rhs1954: + br label %logic.from2200 +logic.from2200: + br i1 %t27, label %logic.rhs2201, label %logic.end2202 +logic.rhs2201: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic1956, label %ok1957 -panic1956: - call void @finch_panic(ptr @.str.1117, i64 340, ptr @.str.1118) + br i1 %t29, label %panic2203, label %ok2204 +panic2203: + call void @finch_panic(ptr @.str.1294, i64 459, ptr @.str.1295) unreachable -ok1957: +ok2204: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 20 %t31 = load i64, ptr %a9 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1958, label %inrange1959 -range1958: - call void @finch_panic_index(ptr @.str.1119, i64 340, i64 %t31, i64 %t33) + br i1 %t34, label %range2205, label %inrange2206 +range2205: + call void @finch_panic_index(ptr @.str.1296, i64 459, i64 %t31, i64 %t33) unreachable -inrange1959: +inrange2206: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 %t37 = getelementptr inbounds %S.gen.EnumDef, ptr %t36, i32 0, i32 1 @@ -18896,23 +22450,23 @@ inrange1959: store { ptr, i64, i64 } %t39, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br label %logic.rend1960 -logic.rend1960: - br label %logic.end1955 -logic.end1955: - %t44 = phi i1 [ false, %logic.from1953 ], [ %t43, %logic.rend1960 ] - br i1 %t44, label %then1961, label %endif1963 -then1961: + br label %logic.rend2207 +logic.rend2207: + br label %logic.end2202 +logic.end2202: + %t44 = phi i1 [ false, %logic.from2200 ], [ %t43, %logic.rend2207 ] + br i1 %t44, label %then2208, label %endif2210 +then2208: %t45 = load i64, ptr %a9 ret i64 %t45 -endif1963: - br label %for.step1947 -for.step1947: +endif2210: + br label %for.step2194 +for.step2194: %t46 = load i64, ptr %a9 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a9 - br label %for.cond1945 -for.end1948: + br label %for.cond2192 +for.end2195: ret i64 -1 } @@ -18927,38 +22481,38 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1964, label %ok1965 -panic1964: - call void @finch_panic(ptr @.str.1120, i64 348, ptr @.str.1121) + br i1 %t4, label %panic2211, label %ok2212 +panic2211: + call void @finch_panic(ptr @.str.1297, i64 467, ptr @.str.1298) unreachable -ok1965: +ok2212: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load i64, ptr %t6 store i64 0, ptr %a8 - br label %for.cond1966 -for.cond1966: + br label %for.cond2213 +for.cond2213: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body1967, label %for.end1969 -for.body1967: + br i1 %t10, label %for.body2214, label %for.end2216 +for.body2214: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic1970, label %ok1971 -panic1970: - call void @finch_panic(ptr @.str.1122, i64 349, ptr @.str.1123) + br i1 %t12, label %panic2217, label %ok2218 +panic2217: + call void @finch_panic(ptr @.str.1299, i64 468, ptr @.str.1300) unreachable -ok1971: +ok2218: %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 0 %t14 = load i64, ptr %a8 %t15 = load { ptr, i64, i64 }, ptr %t13 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 %t14, %t16 - br i1 %t17, label %range1972, label %inrange1973 -range1972: - call void @finch_panic_index(ptr @.str.1124, i64 349, i64 %t14, i64 %t16) + br i1 %t17, label %range2219, label %inrange2220 +range2219: + call void @finch_panic_index(ptr @.str.1301, i64 468, i64 %t14, i64 %t16) unreachable -inrange1973: +inrange2220: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds %S.ast.Program, ptr %t18, i64 %t14 %t20 = getelementptr inbounds %S.ast.Program, ptr %t19, i32 0, i32 0 @@ -18968,18 +22522,18 @@ inrange1973: store { ptr, i64, i64 } %t22, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then1974, label %endif1976 -then1974: + br i1 %t26, label %then2221, label %endif2223 +then2221: %t27 = load i64, ptr %a8 ret i64 %t27 -endif1976: - br label %for.step1968 -for.step1968: +endif2223: + br label %for.step2215 +for.step2215: %t28 = load i64, ptr %a8 %t29 = add i64 %t28, 1 store i64 %t29, ptr %a8 - br label %for.cond1966 -for.end1969: + br label %for.cond2213 +for.end2216: ret i64 -1 } @@ -18995,31 +22549,31 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic1977, label %ok1978 -panic1977: - call void @finch_panic(ptr @.str.1125, i64 357, ptr @.str.1126) + br i1 %t4, label %panic2224, label %ok2225 +panic2224: + call void @finch_panic(ptr @.str.1302, i64 476, ptr @.str.1303) unreachable -ok1978: +ok2225: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 %t6 = load ptr, ptr %a1 %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1979, label %ok1980 -panic1979: - call void @finch_panic(ptr @.str.1127, i64 357, ptr @.str.1128) + br i1 %t8, label %panic2226, label %ok2227 +panic2226: + call void @finch_panic(ptr @.str.1304, i64 476, ptr @.str.1305) unreachable -ok1980: +ok2227: %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 13 %t10 = load { ptr, i64, i64 }, ptr %t9 %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) %t12 = load { ptr, i64, i64 }, ptr %t5 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range1981, label %inrange1982 -range1981: - call void @finch_panic_index(ptr @.str.1129, i64 357, i64 %t11, i64 %t13) + br i1 %t14, label %range2228, label %inrange2229 +range2228: + call void @finch_panic_index(ptr @.str.1306, i64 476, i64 %t11, i64 %t13) unreachable -inrange1982: +inrange2229: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Program, ptr %t15, i64 %t11 %t17 = getelementptr inbounds %S.ast.Program, ptr %t16, i32 0, i32 2 @@ -19029,27 +22583,27 @@ inrange1982: %t21 = load i64, ptr %t18 %t22 = load ptr, ptr %t17 store i64 0, ptr %a23 - br label %find.cond1983 -find.cond1983: + br label %find.cond2230 +find.cond2230: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body1984, label %find.end1987 -find.body1984: + br i1 %t25, label %find.body2231, label %find.end2234 +find.body2231: %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t24 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 store { ptr, i64, i64 } %t19, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br i1 %t31, label %find.hit1985, label %find.next1986 -find.hit1985: + br i1 %t31, label %find.hit2232, label %find.next2233 +find.hit2232: store i64 %t24, ptr %a20 - br label %find.end1987 -find.next1986: + br label %find.end2234 +find.next2233: %t32 = add i64 %t24, 1 store i64 %t32, ptr %a23 - br label %find.cond1983 -find.end1987: + br label %find.cond2230 +find.end2234: %t33 = load i64, ptr %a20 %t34 = icmp sge i64 %t33, 0 ret i1 %t34 @@ -19169,21 +22723,21 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1130, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1307, i64 5, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br i1 %t9, label %then1988, label %endif1990 -then1988: + br i1 %t9, label %then2235, label %endif2237 +then2235: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 0, %t13 - br i1 %t14, label %range1991, label %inrange1992 -range1991: - call void @finch_panic_index(ptr @.str.1131, i64 362, i64 0, i64 %t13) + br i1 %t14, label %range2238, label %inrange2239 +range2238: + call void @finch_panic_index(ptr @.str.1308, i64 481, i64 0, i64 %t13) unreachable -inrange1992: +inrange2239: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -19191,25 +22745,25 @@ inrange1992: %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) ret %S.ast.Type %t20 -endif1990: +endif2237: %t21 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1132, i64 3, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1309, i64 3, i64 0 }, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then1993, label %endif1995 -then1993: + br i1 %t26, label %then2240, label %endif2242 +then2240: %t27 = load ptr, ptr %a1 %t28 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t29 = load { ptr, i64, i64 }, ptr %t28 %t30 = extractvalue { ptr, i64, i64 } %t29, 1 %t31 = icmp uge i64 0, %t30 - br i1 %t31, label %range1996, label %inrange1997 -range1996: - call void @finch_panic_index(ptr @.str.1133, i64 365, i64 0, i64 %t30) + br i1 %t31, label %range2243, label %inrange2244 +range2243: + call void @finch_panic_index(ptr @.str.1310, i64 484, i64 0, i64 %t30) unreachable -inrange1997: +inrange2244: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.ast.Type, ptr %t32, i64 0 %t34 = load %S.ast.Type, ptr %t33 @@ -19219,89 +22773,89 @@ inrange1997: %t38 = load %S.ast.Type, ptr %a37 %t39 = call i1 @finch.gen.isInt(%S.ast.Type %t38) %t40 = xor i1 %t39, true - br label %logic.from1998 -logic.from1998: - br i1 %t40, label %logic.rhs1999, label %logic.end2000 -logic.rhs1999: + br label %logic.from2245 +logic.from2245: + br i1 %t40, label %logic.rhs2246, label %logic.end2247 +logic.rhs2246: %t41 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0 %t42 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1134, i64 4, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1311, i64 4, i64 0 }, ptr %a44 %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) %t46 = icmp eq i32 %t45, 0 - br label %logic.rend2001 -logic.rend2001: - br label %logic.end2000 -logic.end2000: - %t47 = phi i1 [ false, %logic.from1998 ], [ %t46, %logic.rend2001 ] - br label %logic.from2002 -logic.from2002: - br i1 %t47, label %logic.rhs2003, label %logic.end2004 -logic.rhs2003: + br label %logic.rend2248 +logic.rend2248: + br label %logic.end2247 +logic.end2247: + %t47 = phi i1 [ false, %logic.from2245 ], [ %t46, %logic.rend2248 ] + br label %logic.from2249 +logic.from2249: + br i1 %t47, label %logic.rhs2250, label %logic.end2251 +logic.rhs2250: %t48 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0 %t49 = load { ptr, i64, i64 }, ptr %t48 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1135, i64 4, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1312, i64 4, i64 0 }, ptr %a51 %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) %t53 = icmp eq i32 %t52, 0 - br label %logic.rend2005 -logic.rend2005: - br label %logic.end2004 -logic.end2004: - %t54 = phi i1 [ false, %logic.from2002 ], [ %t53, %logic.rend2005 ] - br label %logic.from2006 -logic.from2006: - br i1 %t54, label %logic.rhs2007, label %logic.end2008 -logic.rhs2007: + br label %logic.rend2252 +logic.rend2252: + br label %logic.end2251 +logic.end2251: + %t54 = phi i1 [ false, %logic.from2249 ], [ %t53, %logic.rend2252 ] + br label %logic.from2253 +logic.from2253: + br i1 %t54, label %logic.rhs2254, label %logic.end2255 +logic.rhs2254: %t55 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0 %t56 = load { ptr, i64, i64 }, ptr %t55 store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1313, i64 3, i64 0 }, ptr %a58 %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) %t60 = icmp eq i32 %t59, 0 - br label %logic.rend2009 -logic.rend2009: - br label %logic.end2008 -logic.end2008: - %t61 = phi i1 [ false, %logic.from2006 ], [ %t60, %logic.rend2009 ] - br label %logic.from2010 -logic.from2010: - br i1 %t61, label %logic.rhs2011, label %logic.end2012 -logic.rhs2011: + br label %logic.rend2256 +logic.rend2256: + br label %logic.end2255 +logic.end2255: + %t61 = phi i1 [ false, %logic.from2253 ], [ %t60, %logic.rend2256 ] + br label %logic.from2257 +logic.from2257: + br i1 %t61, label %logic.rhs2258, label %logic.end2259 +logic.rhs2258: %t62 = getelementptr inbounds %S.ast.Type, ptr %a37, i32 0, i32 0 %t63 = load { ptr, i64, i64 }, ptr %t62 store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1137, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.1314, i64 4, i64 0 }, ptr %a65 %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) %t67 = icmp eq i32 %t66, 0 - br label %logic.rend2013 -logic.rend2013: - br label %logic.end2012 -logic.end2012: - %t68 = phi i1 [ false, %logic.from2010 ], [ %t67, %logic.rend2013 ] - br i1 %t68, label %then2014, label %endif2016 -then2014: + br label %logic.rend2260 +logic.rend2260: + br label %logic.end2259 +logic.end2259: + %t68 = phi i1 [ false, %logic.from2257 ], [ %t67, %logic.rend2260 ] + br i1 %t68, label %then2261, label %endif2263 +then2261: %t69 = load ptr, ptr %a1 %t70 = load %S.ast.Node, ptr %a3 %t71 = load %S.ast.Type, ptr %a37 %t72 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t71) - store { ptr, i64, i64 } { ptr @.str.1138, i64 63, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1315, i64 63, i64 0 }, ptr %a74 store { ptr, i64, i64 } %t72, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 call void @finch.gen.fail(ptr %t69, %S.ast.Node %t70, { ptr, i64, i64 } %t76) - br label %endif2016 -endif2016: + br label %endif2263 +endif2263: %t77 = load ptr, ptr %a1 %t78 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t79 = load { ptr, i64, i64 }, ptr %t78 %t80 = extractvalue { ptr, i64, i64 } %t79, 1 %t81 = icmp uge i64 1, %t80 - br i1 %t81, label %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1139, i64 369, i64 1, i64 %t80) + br i1 %t81, label %range2264, label %inrange2265 +range2264: + call void @finch_panic_index(ptr @.str.1316, i64 488, i64 1, i64 %t80) unreachable -inrange2018: +inrange2265: %t82 = extractvalue { ptr, i64, i64 } %t79, 0 %t83 = getelementptr inbounds %S.ast.Type, ptr %t82, i64 1 %t84 = load %S.ast.Type, ptr %t83 @@ -19311,30 +22865,30 @@ inrange2018: %t88 = getelementptr inbounds %S.ast.Type, ptr %a87, i32 0, i32 0 %t89 = load { ptr, i64, i64 }, ptr %t88 store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1140, i64 4, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1317, i64 4, i64 0 }, ptr %a91 %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) %t93 = icmp ne i32 %t92, 0 - br i1 %t93, label %then2019, label %endif2021 -then2019: + br i1 %t93, label %then2266, label %endif2268 +then2266: %t94 = load ptr, ptr %a1 %t95 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t94, %S.ast.Node %t95, { ptr, i64, i64 } { ptr @.str.1141, i64 41, i64 0 }) - br label %endif2021 -endif2021: + call void @finch.gen.fail(ptr %t94, %S.ast.Node %t95, { ptr, i64, i64 } { ptr @.str.1318, i64 41, i64 0 }) + br label %endif2268 +endif2268: %t96 = load %S.ast.Type, ptr %a37 %t97 = load %S.ast.Type, ptr %a87 %t98 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t96, %S.ast.Type %t97) ret %S.ast.Type %t98 -endif1995: +endif2242: %t99 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t100 = load { ptr, i64, i64 }, ptr %t99 store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1142, i64 5, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1319, i64 5, i64 0 }, ptr %a102 %t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102) %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then2022, label %endif2024 -then2022: - %t105 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1143, i64 5, i64 0 }, 0 + br i1 %t104, label %then2269, label %endif2271 +then2269: + %t105 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1320, i64 5, i64 0 }, 0 %t106 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t107 = load i64, ptr %t106 %t108 = insertvalue %S.ast.Type %t105, i64 %t107, 4 @@ -19346,11 +22900,11 @@ then2022: %t114 = load { ptr, i64, i64 }, ptr %t113 %t115 = extractvalue { ptr, i64, i64 } %t114, 1 %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1144, i64 377, i64 0, i64 %t115) + br i1 %t116, label %range2272, label %inrange2273 +range2272: + call void @finch_panic_index(ptr @.str.1321, i64 496, i64 0, i64 %t115) unreachable -inrange2026: +inrange2273: %t117 = extractvalue { ptr, i64, i64 } %t114, 0 %t118 = getelementptr inbounds %S.ast.Type, ptr %t117, i64 0 %t119 = load %S.ast.Type, ptr %t118 @@ -19365,37 +22919,37 @@ inrange2026: store i64 %t123, ptr %t111 %t126 = load %S.ast.Type, ptr %a109 ret %S.ast.Type %t126 -endif2024: +endif2271: %t127 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t128 = load { ptr, i64, i64 }, ptr %t127 store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.1145, i64 3, i64 0 }, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.1322, i64 3, i64 0 }, ptr %a130 %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) %t132 = icmp ne i32 %t131, 0 - br i1 %t132, label %then2027, label %endif2029 -then2027: + br i1 %t132, label %then2274, label %endif2276 +then2274: %t133 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 %t135 = load i64, ptr %t134 %t136 = icmp eq i64 %t135, 0 - br i1 %t136, label %then2030, label %endif2032 -then2030: + br i1 %t136, label %then2277, label %endif2279 +then2277: %t137 = load %S.ast.Type, ptr %a2 store %S.ast.Type %t137, ptr %a138 call void @finch.copy.S_ast_Type(ptr %a139, ptr %a138) %t140 = load %S.ast.Type, ptr %a139 ret %S.ast.Type %t140 -endif2032: +endif2279: %t141 = load ptr, ptr %a1 %t142 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t143 = load { ptr, i64, i64 }, ptr %t142 %t144 = extractvalue { ptr, i64, i64 } %t143, 1 %t145 = icmp uge i64 0, %t144 - br i1 %t145, label %range2033, label %inrange2034 -range2033: - call void @finch_panic_index(ptr @.str.1146, i64 384, i64 0, i64 %t144) + br i1 %t145, label %range2280, label %inrange2281 +range2280: + call void @finch_panic_index(ptr @.str.1323, i64 503, i64 0, i64 %t144) unreachable -inrange2034: +inrange2281: %t146 = extractvalue { ptr, i64, i64 } %t143, 0 %t147 = getelementptr inbounds %S.ast.Type, ptr %t146, i64 0 %t148 = load %S.ast.Type, ptr %t147 @@ -19403,49 +22957,49 @@ inrange2034: %t150 = call %S.ast.Type @finch.gen.resolve(ptr %t141, %S.ast.Type %t148, %S.ast.Node %t149) %t151 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t150) ret %S.ast.Type %t151 -endif2029: +endif2276: %t152 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t153 = load { ptr, i64, i64 }, ptr %t152 store { ptr, i64, i64 } %t153, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.1147, i64 5, i64 0 }, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.1324, i64 5, i64 0 }, ptr %a155 %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) %t157 = icmp eq i32 %t156, 0 - br i1 %t157, label %then2035, label %endif2037 -then2035: + br i1 %t157, label %then2282, label %endif2284 +then2282: %t158 = load %S.ast.Type, ptr %a2 store %S.ast.Type %t158, ptr %a159 call void @finch.copy.S_ast_Type(ptr %a160, ptr %a159) %t161 = load %S.ast.Type, ptr %a160 ret %S.ast.Type %t161 -endif2037: +endif2284: %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 %t164 = load i64, ptr %t163 %t165 = icmp eq i64 %t164, 0 - br label %logic.from2038 -logic.from2038: - br i1 %t165, label %logic.rhs2039, label %logic.end2040 -logic.rhs2039: + br label %logic.from2285 +logic.from2285: + br i1 %t165, label %logic.rhs2286, label %logic.end2287 +logic.rhs2286: %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 %t168 = load i64, ptr %t167 %t169 = icmp eq i64 %t168, 0 - br label %logic.rend2041 -logic.rend2041: - br label %logic.end2040 -logic.end2040: - %t170 = phi i1 [ false, %logic.from2038 ], [ %t169, %logic.rend2041 ] - br label %logic.from2042 -logic.from2042: - br i1 %t170, label %logic.rhs2043, label %logic.end2044 -logic.rhs2043: + br label %logic.rend2288 +logic.rend2288: + br label %logic.end2287 +logic.end2287: + %t170 = phi i1 [ false, %logic.from2285 ], [ %t169, %logic.rend2288 ] + br label %logic.from2289 +logic.from2289: + br i1 %t170, label %logic.rhs2290, label %logic.end2291 +logic.rhs2290: %t171 = load ptr, ptr %a1 %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic2045, label %ok2046 -panic2045: - call void @finch_panic(ptr @.str.1148, i64 390, ptr @.str.1149) + br i1 %t172, label %panic2292, label %ok2293 +panic2292: + call void @finch_panic(ptr @.str.1325, i64 509, ptr @.str.1326) unreachable -ok2046: +ok2293: %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 17 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 %t175 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 @@ -19454,51 +23008,51 @@ ok2046: %t178 = load i64, ptr %t174 %t179 = load ptr, ptr %t173 store i64 0, ptr %a180 - br label %find.cond2047 -find.cond2047: + br label %find.cond2294 +find.cond2294: %t181 = load i64, ptr %a180 %t182 = icmp slt i64 %t181, %t178 - br i1 %t182, label %find.body2048, label %find.end2051 -find.body2048: + br i1 %t182, label %find.body2295, label %find.end2298 +find.body2295: %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t181 %t184 = load { ptr, i64, i64 }, ptr %t183 store { ptr, i64, i64 } %t184, ptr %a185 store { ptr, i64, i64 } %t176, ptr %a186 %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) %t188 = icmp ne i32 %t187, 0 - br i1 %t188, label %find.hit2049, label %find.next2050 -find.hit2049: + br i1 %t188, label %find.hit2296, label %find.next2297 +find.hit2296: store i64 %t181, ptr %a177 - br label %find.end2051 -find.next2050: + br label %find.end2298 +find.next2297: %t189 = add i64 %t181, 1 store i64 %t189, ptr %a180 - br label %find.cond2047 -find.end2051: + br label %find.cond2294 +find.end2298: %t190 = load i64, ptr %a177 %t191 = icmp sge i64 %t190, 0 - br label %logic.rend2052 -logic.rend2052: - br label %logic.end2044 -logic.end2044: - %t192 = phi i1 [ false, %logic.from2042 ], [ %t191, %logic.rend2052 ] - br i1 %t192, label %then2053, label %endif2055 -then2053: + br label %logic.rend2299 +logic.rend2299: + br label %logic.end2291 +logic.end2291: + %t192 = phi i1 [ false, %logic.from2289 ], [ %t191, %logic.rend2299 ] + br i1 %t192, label %then2300, label %endif2302 +then2300: %t193 = load ptr, ptr %a1 %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic2056, label %ok2057 -panic2056: - call void @finch_panic(ptr @.str.1150, i64 391, ptr @.str.1151) + br i1 %t194, label %panic2303, label %ok2304 +panic2303: + call void @finch_panic(ptr @.str.1327, i64 510, ptr @.str.1328) unreachable -ok2057: +ok2304: %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 18 %t196 = load ptr, ptr %a1 %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic2058, label %ok2059 -panic2058: - call void @finch_panic(ptr @.str.1152, i64 391, ptr @.str.1153) + br i1 %t197, label %panic2305, label %ok2306 +panic2305: + call void @finch_panic(ptr @.str.1329, i64 510, ptr @.str.1330) unreachable -ok2059: +ok2306: %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 17 %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 %t200 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 @@ -19507,36 +23061,36 @@ ok2059: %t203 = load i64, ptr %t199 %t204 = load ptr, ptr %t198 store i64 0, ptr %a205 - br label %find.cond2060 -find.cond2060: + br label %find.cond2307 +find.cond2307: %t206 = load i64, ptr %a205 %t207 = icmp slt i64 %t206, %t203 - br i1 %t207, label %find.body2061, label %find.end2064 -find.body2061: + br i1 %t207, label %find.body2308, label %find.end2311 +find.body2308: %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t204, i64 %t206 %t209 = load { ptr, i64, i64 }, ptr %t208 store { ptr, i64, i64 } %t209, ptr %a210 store { ptr, i64, i64 } %t201, ptr %a211 %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %find.hit2062, label %find.next2063 -find.hit2062: + br i1 %t213, label %find.hit2309, label %find.next2310 +find.hit2309: store i64 %t206, ptr %a202 - br label %find.end2064 -find.next2063: + br label %find.end2311 +find.next2310: %t214 = add i64 %t206, 1 store i64 %t214, ptr %a205 - br label %find.cond2060 -find.end2064: + br label %find.cond2307 +find.end2311: %t215 = load i64, ptr %a202 %t216 = load { ptr, i64, i64 }, ptr %t195 %t217 = extractvalue { ptr, i64, i64 } %t216, 1 %t218 = icmp uge i64 %t215, %t217 - br i1 %t218, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1154, i64 391, i64 %t215, i64 %t217) + br i1 %t218, label %range2312, label %inrange2313 +range2312: + call void @finch_panic_index(ptr @.str.1331, i64 510, i64 %t215, i64 %t217) unreachable -inrange2066: +inrange2313: %t219 = extractvalue { ptr, i64, i64 } %t216, 0 %t220 = getelementptr inbounds %S.ast.Type, ptr %t219, i64 %t215 %t221 = load %S.ast.Type, ptr %t220 @@ -19544,24 +23098,24 @@ inrange2066: call void @finch.copy.S_ast_Type(ptr %a223, ptr %a222) %t224 = load %S.ast.Type, ptr %a223 ret %S.ast.Type %t224 -endif2055: +endif2302: %t225 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1 %t227 = load i64, ptr %t226 %t228 = icmp sgt i64 %t227, 0 - br i1 %t228, label %then2067, label %endif2069 -then2067: + br i1 %t228, label %then2314, label %endif2316 +then2314: store { ptr, i64, i64 } zeroinitializer, ptr %a229 %t230 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 store i64 0, ptr %a231 - br label %each.cond2070 -each.cond2070: + br label %each.cond2317 +each.cond2317: %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t230, i32 0, i32 1 %t233 = load i64, ptr %t232 %t234 = load i64, ptr %a231 %t235 = icmp slt i64 %t234, %t233 - br i1 %t235, label %each.body2071, label %each.end2073 -each.body2071: + br i1 %t235, label %each.body2318, label %each.end2320 +each.body2318: %t236 = load ptr, ptr %t230 %t237 = getelementptr inbounds %S.ast.Type, ptr %t236, i64 %t234 %t238 = load %S.ast.Type, ptr %t237 @@ -19578,20 +23132,20 @@ each.body2071: %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 store %S.ast.Type %t244, ptr %t248 store i64 %t246, ptr %t240 - br label %each.step2072 -each.step2072: + br label %each.step2319 +each.step2319: %t249 = load i64, ptr %a231 %t250 = add i64 %t249, 1 store i64 %t250, ptr %a231 - br label %each.cond2070 -each.end2073: + br label %each.cond2317 +each.end2320: %t251 = load ptr, ptr %a1 %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic2074, label %ok2075 -panic2074: - call void @finch_panic(ptr @.str.1155, i64 399, ptr @.str.1156) + br i1 %t252, label %panic2321, label %ok2322 +panic2321: + call void @finch_panic(ptr @.str.1332, i64 518, ptr @.str.1333) unreachable -ok2075: +ok2322: %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 13 %t254 = load { ptr, i64, i64 }, ptr %t253 store { ptr, i64, i64 } %t254, ptr %a255 @@ -19602,25 +23156,25 @@ ok2075: %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i32 0, i32 1 %t261 = load i64, ptr %t260 %t262 = icmp sgt i64 %t261, 0 - br i1 %t262, label %then2076, label %endif2078 -then2076: + br i1 %t262, label %then2323, label %endif2325 +then2323: %t263 = load ptr, ptr %a1 %t264 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t265 = load { ptr, i64, i64 }, ptr %t264 %t266 = call i1 @finch.gen.imports(ptr %t263, { ptr, i64, i64 } %t265) %t267 = xor i1 %t266, true - br i1 %t267, label %then2079, label %endif2081 -then2079: + br i1 %t267, label %then2326, label %endif2328 +then2326: %t268 = load ptr, ptr %a1 %t269 = load %S.ast.Node, ptr %a3 %t270 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t271 = load { ptr, i64, i64 }, ptr %t270 - store { ptr, i64, i64 } { ptr @.str.1157, i64 1, i64 0 }, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.1334, i64 1, i64 0 }, ptr %a273 store { ptr, i64, i64 } %t271, ptr %a274 call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) %t275 = load { ptr, i64, i64 }, ptr %a272 store { ptr, i64, i64 } %t275, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1158, i64 36, i64 0 }, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.1335, i64 36, i64 0 }, ptr %a278 call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) %t279 = load { ptr, i64, i64 }, ptr %a276 %t280 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -19630,20 +23184,20 @@ then2079: call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) %t285 = load { ptr, i64, i64 }, ptr %a282 store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.1336, i64 1, i64 0 }, ptr %a288 call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) %t289 = load { ptr, i64, i64 }, ptr %a286 call void @finch.gen.fail(ptr %t268, %S.ast.Node %t269, { ptr, i64, i64 } %t289) - br label %endif2081 -endif2081: + br label %endif2328 +endif2328: %t290 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t291 = load { ptr, i64, i64 }, ptr %t290 store { ptr, i64, i64 } %t291, ptr %a292 call void @finch_str_copy(ptr %a293, ptr %a292) %t294 = load { ptr, i64, i64 }, ptr %a293 store { ptr, i64, i64 } %t294, ptr %a258 - br label %endif2078 -endif2078: + br label %endif2325 +endif2325: %t295 = load ptr, ptr %a1 %t296 = load { ptr, i64, i64 }, ptr %a258 %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 @@ -19652,54 +23206,54 @@ endif2078: %t300 = load %S.ast.Node, ptr %a3 %t301 = call %S.ast.Type @finch.gen.instStruct(ptr %t295, { ptr, i64, i64 } %t296, { ptr, i64, i64 } %t298, { ptr, i64, i64 } %t299, %S.ast.Node %t300) ret %S.ast.Type %t301 -endif2069: +endif2316: %t302 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t303 = load { ptr, i64, i64 }, ptr %t302 store { ptr, i64, i64 } %t303, ptr %a304 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.1337, i64 1, i64 0 }, ptr %a305 %t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305) %t307 = icmp ne i32 %t306, 0 - br i1 %t307, label %then2082, label %endif2084 -then2082: + br i1 %t307, label %then2329, label %endif2331 +then2329: %t308 = load ptr, ptr %a1 %t309 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t310 = load { ptr, i64, i64 }, ptr %t309 - %t311 = call i64 @finch.gen.findStruct(ptr %t308, { ptr, i64, i64 } { ptr @.str.1161, i64 1, i64 0 }, { ptr, i64, i64 } %t310) + %t311 = call i64 @finch.gen.findStruct(ptr %t308, { ptr, i64, i64 } { ptr @.str.1338, i64 1, i64 0 }, { ptr, i64, i64 } %t310) %t312 = icmp slt i64 %t311, 0 - br i1 %t312, label %then2085, label %endif2087 -then2085: + br i1 %t312, label %then2332, label %endif2334 +then2332: %t313 = load ptr, ptr %a1 %t314 = load %S.ast.Node, ptr %a3 %t315 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t316 = load { ptr, i64, i64 }, ptr %t315 - store { ptr, i64, i64 } { ptr @.str.1162, i64 28, i64 0 }, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.1339, i64 28, i64 0 }, ptr %a318 store { ptr, i64, i64 } %t316, ptr %a319 call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) %t320 = load { ptr, i64, i64 }, ptr %a317 store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1163, i64 1, i64 0 }, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.1340, i64 1, i64 0 }, ptr %a323 call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) %t324 = load { ptr, i64, i64 }, ptr %a321 call void @finch.gen.fail(ptr %t313, %S.ast.Node %t314, { ptr, i64, i64 } %t324) - br label %endif2087 -endif2087: - %t325 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1164, i64 6, i64 0 }, 0 + br label %endif2334 +endif2334: + %t325 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1341, i64 6, i64 0 }, 0 %t326 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t327 = load { ptr, i64, i64 }, ptr %t326 store { ptr, i64, i64 } %t327, ptr %a328 call void @finch_str_copy(ptr %a329, ptr %a328) %t330 = load { ptr, i64, i64 }, ptr %a329 %t331 = insertvalue %S.ast.Type %t325, { ptr, i64, i64 } %t330, 2 - %t332 = insertvalue %S.ast.Type %t331, { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, 3 + %t332 = insertvalue %S.ast.Type %t331, { ptr, i64, i64 } { ptr @.str.1342, i64 1, i64 0 }, 3 ret %S.ast.Type %t332 -endif2084: +endif2331: %t333 = load ptr, ptr %a1 %t334 = icmp eq ptr %t333, null - br i1 %t334, label %panic2088, label %ok2089 -panic2088: - call void @finch_panic(ptr @.str.1166, i64 414, ptr @.str.1167) + br i1 %t334, label %panic2335, label %ok2336 +panic2335: + call void @finch_panic(ptr @.str.1343, i64 533, ptr @.str.1344) unreachable -ok2089: +ok2336: %t335 = getelementptr inbounds %S.gen.Gen, ptr %t333, i32 0, i32 13 %t336 = load { ptr, i64, i64 }, ptr %t335 store { ptr, i64, i64 } %t336, ptr %a337 @@ -19710,25 +23264,25 @@ ok2089: %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i32 0, i32 1 %t343 = load i64, ptr %t342 %t344 = icmp sgt i64 %t343, 0 - br i1 %t344, label %then2090, label %endif2092 -then2090: + br i1 %t344, label %then2337, label %endif2339 +then2337: %t345 = load ptr, ptr %a1 %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t347 = load { ptr, i64, i64 }, ptr %t346 %t348 = call i1 @finch.gen.imports(ptr %t345, { ptr, i64, i64 } %t347) %t349 = xor i1 %t348, true - br i1 %t349, label %then2093, label %endif2095 -then2093: + br i1 %t349, label %then2340, label %endif2342 +then2340: %t350 = load ptr, ptr %a1 %t351 = load %S.ast.Node, ptr %a3 %t352 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t353 = load { ptr, i64, i64 }, ptr %t352 - store { ptr, i64, i64 } { ptr @.str.1168, i64 1, i64 0 }, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.1345, i64 1, i64 0 }, ptr %a355 store { ptr, i64, i64 } %t353, ptr %a356 call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) %t357 = load { ptr, i64, i64 }, ptr %a354 store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.1169, i64 36, i64 0 }, ptr %a360 + store { ptr, i64, i64 } { ptr @.str.1346, i64 36, i64 0 }, ptr %a360 call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) %t361 = load { ptr, i64, i64 }, ptr %a358 %t362 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -19738,29 +23292,29 @@ then2093: call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) %t367 = load { ptr, i64, i64 }, ptr %a364 store { ptr, i64, i64 } %t367, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.1170, i64 1, i64 0 }, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.1347, i64 1, i64 0 }, ptr %a370 call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) %t371 = load { ptr, i64, i64 }, ptr %a368 call void @finch.gen.fail(ptr %t350, %S.ast.Node %t351, { ptr, i64, i64 } %t371) - br label %endif2095 -endif2095: + br label %endif2342 +endif2342: %t372 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t373 = load { ptr, i64, i64 }, ptr %t372 store { ptr, i64, i64 } %t373, ptr %a374 call void @finch_str_copy(ptr %a375, ptr %a374) %t376 = load { ptr, i64, i64 }, ptr %a375 store { ptr, i64, i64 } %t376, ptr %a340 - br label %endif2092 -endif2092: + br label %endif2339 +endif2339: %t377 = load ptr, ptr %a1 %t378 = load { ptr, i64, i64 }, ptr %a340 %t379 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t380 = load { ptr, i64, i64 }, ptr %t379 %t381 = call i64 @finch.gen.findEnum(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t380) %t382 = icmp sge i64 %t381, 0 - br i1 %t382, label %then2096, label %endif2098 -then2096: - %t383 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1171, i64 4, i64 0 }, 0 + br i1 %t382, label %then2343, label %endif2345 +then2343: + %t383 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, 0 %t384 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t385 = load { ptr, i64, i64 }, ptr %t384 store { ptr, i64, i64 } %t385, ptr %a386 @@ -19773,61 +23327,61 @@ then2096: %t393 = load { ptr, i64, i64 }, ptr %a392 %t394 = insertvalue %S.ast.Type %t389, { ptr, i64, i64 } %t393, 3 ret %S.ast.Type %t394 -endif2098: +endif2345: %t395 = load ptr, ptr %a1 %t396 = load { ptr, i64, i64 }, ptr %a340 %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t398 = load { ptr, i64, i64 }, ptr %t397 %t399 = call i64 @finch.gen.findStruct(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) %t400 = icmp slt i64 %t399, 0 - br i1 %t400, label %then2099, label %endif2101 -then2099: + br i1 %t400, label %then2346, label %endif2348 +then2346: %t401 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t401, i32 0, i32 1 %t403 = load i64, ptr %t402 %t404 = icmp eq i64 %t403, 0 - br label %logic.from2102 -logic.from2102: - br i1 %t404, label %logic.rhs2103, label %logic.end2104 -logic.rhs2103: + br label %logic.from2349 +logic.from2349: + br i1 %t404, label %logic.rhs2350, label %logic.end2351 +logic.rhs2350: %t405 = load ptr, ptr %a1 %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = call i64 @finch.gen.findStruct(ptr %t405, { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, { ptr, i64, i64 } %t407) + %t408 = call i64 @finch.gen.findStruct(ptr %t405, { ptr, i64, i64 } { ptr @.str.1349, i64 1, i64 0 }, { ptr, i64, i64 } %t407) %t409 = icmp sge i64 %t408, 0 - br label %logic.rend2105 -logic.rend2105: - br label %logic.end2104 -logic.end2104: - %t410 = phi i1 [ false, %logic.from2102 ], [ %t409, %logic.rend2105 ] - br i1 %t410, label %then2106, label %endif2108 -then2106: - %t411 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1173, i64 6, i64 0 }, 0 + br label %logic.rend2352 +logic.rend2352: + br label %logic.end2351 +logic.end2351: + %t410 = phi i1 [ false, %logic.from2349 ], [ %t409, %logic.rend2352 ] + br i1 %t410, label %then2353, label %endif2355 +then2353: + %t411 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1350, i64 6, i64 0 }, 0 %t412 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t413 = load { ptr, i64, i64 }, ptr %t412 store { ptr, i64, i64 } %t413, ptr %a414 call void @finch_str_copy(ptr %a415, ptr %a414) %t416 = load { ptr, i64, i64 }, ptr %a415 %t417 = insertvalue %S.ast.Type %t411, { ptr, i64, i64 } %t416, 2 - %t418 = insertvalue %S.ast.Type %t417, { ptr, i64, i64 } { ptr @.str.1174, i64 1, i64 0 }, 3 + %t418 = insertvalue %S.ast.Type %t417, { ptr, i64, i64 } { ptr @.str.1351, i64 1, i64 0 }, 3 ret %S.ast.Type %t418 -endif2108: +endif2355: %t419 = load ptr, ptr %a1 %t420 = load %S.ast.Node, ptr %a3 %t421 = load %S.ast.Type, ptr %a2 %t422 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t421) - store { ptr, i64, i64 } { ptr @.str.1175, i64 24, i64 0 }, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.1352, i64 24, i64 0 }, ptr %a424 store { ptr, i64, i64 } %t422, ptr %a425 call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) %t426 = load { ptr, i64, i64 }, ptr %a423 store { ptr, i64, i64 } %t426, ptr %a428 - store { ptr, i64, i64 } { ptr @.str.1176, i64 1, i64 0 }, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.1353, i64 1, i64 0 }, ptr %a429 call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429) %t430 = load { ptr, i64, i64 }, ptr %a427 call void @finch.gen.fail(ptr %t419, %S.ast.Node %t420, { ptr, i64, i64 } %t430) - br label %endif2101 -endif2101: - %t431 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1177, i64 6, i64 0 }, 0 + br label %endif2348 +endif2348: + %t431 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1354, i64 6, i64 0 }, 0 %t432 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t433 = load { ptr, i64, i64 }, ptr %t432 store { ptr, i64, i64 } %t433, ptr %a434 @@ -19864,23 +23418,23 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1179, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1180, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1356, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1357, i64 1, i64 0 }, ptr %a6 call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6) %t7 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1183, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1359, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.1360, i64 0, i64 0 }, ptr %a11 call void @finch_str_replace(ptr %a9, ptr %a8, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.1185, i64 1, i64 0 }, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.1186, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1362, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1363, i64 1, i64 0 }, ptr %a16 call void @finch_str_replace(ptr %a14, ptr %a13, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1189, i64 0, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1365, i64 1, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1366, i64 0, i64 0 }, ptr %a21 call void @finch_str_replace(ptr %a19, ptr %a18, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 ret { ptr, i64, i64 } %t22 @@ -19895,10 +23449,10 @@ entry: %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t3 = load i64, ptr %t2 %t4 = icmp eq i64 %t3, 0 - br i1 %t4, label %then2109, label %endif2111 -then2109: - ret { ptr, i64, i64 } { ptr @.str.1190, i64 4, i64 0 } -endif2111: + br i1 %t4, label %then2356, label %endif2358 +then2356: + ret { ptr, i64, i64 } { ptr @.str.1367, i64 4, i64 0 } +endif2358: %t5 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t5, ptr %a6 call void @finch_str_copy(ptr %a7, ptr %a6) @@ -19973,108 +23527,108 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1368, i64 4, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br i1 %t13, label %then2112, label %endif2114 -then2112: - ret { ptr, i64, i64 } { ptr @.str.1192, i64 2, i64 0 } -endif2114: + br i1 %t13, label %then2359, label %endif2361 +then2359: + ret { ptr, i64, i64 } { ptr @.str.1369, i64 2, i64 0 } +endif2361: %t14 = load %S.ast.Type, ptr %a2 %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2115 -logic.from2115: - br i1 %t15, label %logic.end2117, label %logic.rhs2116 -logic.rhs2116: + br label %logic.from2362 +logic.from2362: + br i1 %t15, label %logic.end2364, label %logic.rhs2363 +logic.rhs2363: %t16 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1193, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1370, i64 4, i64 0 }, ptr %a18 %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) %t20 = icmp ne i32 %t19, 0 - br label %logic.rend2118 -logic.rend2118: - br label %logic.end2117 -logic.end2117: - %t21 = phi i1 [ true, %logic.from2115 ], [ %t20, %logic.rend2118 ] - br i1 %t21, label %then2119, label %endif2121 -then2119: + br label %logic.rend2365 +logic.rend2365: + br label %logic.end2364 +logic.end2364: + %t21 = phi i1 [ true, %logic.from2362 ], [ %t20, %logic.rend2365 ] + br i1 %t21, label %then2366, label %endif2368 +then2366: %t22 = load %S.ast.Type, ptr %a2 %t23 = call i64 @finch.gen.bitsOf(%S.ast.Type %t22) call void @finch_str_from_int(ptr %a24, i64 %t23) %t25 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1194, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a27 store { ptr, i64, i64 } %t25, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 ret { ptr, i64, i64 } %t29 -endif2121: +endif2368: %t30 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1195, i64 5, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1372, i64 5, i64 0 }, ptr %a32 %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then2122, label %endif2124 -then2122: - ret { ptr, i64, i64 } { ptr @.str.1196, i64 6, i64 0 } -endif2124: + br i1 %t34, label %then2369, label %endif2371 +then2369: + ret { ptr, i64, i64 } { ptr @.str.1373, i64 6, i64 0 } +endif2371: %t35 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1197, i64 3, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1374, i64 3, i64 0 }, ptr %a37 %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) %t39 = icmp ne i32 %t38, 0 - br i1 %t39, label %then2125, label %endif2127 -then2125: - ret { ptr, i64, i64 } { ptr @.str.1198, i64 5, i64 0 } -endif2127: + br i1 %t39, label %then2372, label %endif2374 +then2372: + ret { ptr, i64, i64 } { ptr @.str.1375, i64 5, i64 0 } +endif2374: %t40 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1199, i64 3, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.1376, i64 3, i64 0 }, ptr %a42 %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) %t44 = icmp ne i32 %t43, 0 - br label %logic.from2128 -logic.from2128: - br i1 %t44, label %logic.end2130, label %logic.rhs2129 -logic.rhs2129: + br label %logic.from2375 +logic.from2375: + br i1 %t44, label %logic.end2377, label %logic.rhs2376 +logic.rhs2376: %t45 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1200, i64 5, i64 0 }, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1377, i64 5, i64 0 }, ptr %a47 %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) %t49 = icmp ne i32 %t48, 0 - br label %logic.rend2131 -logic.rend2131: - br label %logic.end2130 -logic.end2130: - %t50 = phi i1 [ true, %logic.from2128 ], [ %t49, %logic.rend2131 ] - br i1 %t50, label %then2132, label %endif2134 -then2132: - ret { ptr, i64, i64 } { ptr @.str.1201, i64 17, i64 0 } -endif2134: + br label %logic.rend2378 +logic.rend2378: + br label %logic.end2377 +logic.end2377: + %t50 = phi i1 [ true, %logic.from2375 ], [ %t49, %logic.rend2378 ] + br i1 %t50, label %then2379, label %endif2381 +then2379: + ret { ptr, i64, i64 } { ptr @.str.1378, i64 17, i64 0 } +endif2381: %t51 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1202, i64 3, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1379, i64 3, i64 0 }, ptr %a53 %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then2135, label %endif2137 -then2135: - ret { ptr, i64, i64 } { ptr @.str.1203, i64 37, i64 0 } -endif2137: + br i1 %t55, label %then2382, label %endif2384 +then2382: + ret { ptr, i64, i64 } { ptr @.str.1380, i64 37, i64 0 } +endif2384: %t56 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1204, i64 5, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1381, i64 5, i64 0 }, ptr %a58 %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2138, label %endif2140 -then2138: + br i1 %t60, label %then2385, label %endif2387 +then2385: %t61 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t62 = load i64, ptr %t61 call void @finch_str_from_int(ptr %a63, i64 %t62) %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1205, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a66 store { ptr, i64, i64 } %t64, ptr %a67 call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1383, i64 3, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = load ptr, ptr %a1 @@ -20082,11 +23636,11 @@ then2138: %t75 = load { ptr, i64, i64 }, ptr %t74 %t76 = extractvalue { ptr, i64, i64 } %t75, 1 %t77 = icmp uge i64 0, %t76 - br i1 %t77, label %range2141, label %inrange2142 -range2141: - call void @finch_panic_index(ptr @.str.1207, i64 467, i64 0, i64 %t76) + br i1 %t77, label %range2388, label %inrange2389 +range2388: + call void @finch_panic_index(ptr @.str.1384, i64 586, i64 0, i64 %t76) unreachable -inrange2142: +inrange2389: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 0 %t80 = load %S.ast.Type, ptr %t79 @@ -20096,61 +23650,61 @@ inrange2142: call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1208, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.1385, i64 1, i64 0 }, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 ret { ptr, i64, i64 } %t89 -endif2140: +endif2387: %t90 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1209, i64 4, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.1386, i64 4, i64 0 }, ptr %a92 %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then2143, label %endif2145 -then2143: - ret { ptr, i64, i64 } { ptr @.str.1210, i64 3, i64 0 } -endif2145: + br i1 %t94, label %then2390, label %endif2392 +then2390: + ret { ptr, i64, i64 } { ptr @.str.1387, i64 3, i64 0 } +endif2392: %t95 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1211, i64 3, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.1388, i64 3, i64 0 }, ptr %a97 %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) %t99 = icmp ne i32 %t98, 0 - br label %logic.from2146 -logic.from2146: - br i1 %t99, label %logic.end2148, label %logic.rhs2147 -logic.rhs2147: + br label %logic.from2393 +logic.from2393: + br i1 %t99, label %logic.end2395, label %logic.rhs2394 +logic.rhs2394: %t100 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1212, i64 4, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1389, i64 4, i64 0 }, ptr %a102 %t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102) %t104 = icmp ne i32 %t103, 0 - br label %logic.rend2149 -logic.rend2149: - br label %logic.end2148 -logic.end2148: - %t105 = phi i1 [ true, %logic.from2146 ], [ %t104, %logic.rend2149 ] - br i1 %t105, label %then2150, label %endif2152 -then2150: - ret { ptr, i64, i64 } { ptr @.str.1213, i64 3, i64 0 } -endif2152: + br label %logic.rend2396 +logic.rend2396: + br label %logic.end2395 +logic.end2395: + %t105 = phi i1 [ true, %logic.from2393 ], [ %t104, %logic.rend2396 ] + br i1 %t105, label %then2397, label %endif2399 +then2397: + ret { ptr, i64, i64 } { ptr @.str.1390, i64 3, i64 0 } +endif2399: %t106 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1214, i64 4, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.1391, i64 4, i64 0 }, ptr %a108 %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then2153, label %endif2155 -then2153: - ret { ptr, i64, i64 } { ptr @.str.1215, i64 4, i64 0 } -endif2155: + br i1 %t110, label %then2400, label %endif2402 +then2400: + ret { ptr, i64, i64 } { ptr @.str.1392, i64 4, i64 0 } +endif2402: %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t112 = load { ptr, i64, i64 }, ptr %t111 %t113 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t112) - store { ptr, i64, i64 } { ptr @.str.1216, i64 3, i64 0 }, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.1393, i64 3, i64 0 }, ptr %a115 store { ptr, i64, i64 } %t113, ptr %a116 call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.1394, i64 1, i64 0 }, ptr %a120 call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) %t121 = load { ptr, i64, i64 }, ptr %a118 %t122 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 @@ -20181,38 +23735,38 @@ entry: %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then2156, label %endif2158 -then2156: + br i1 %t5, label %then2403, label %endif2405 +then2403: %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t8 = load %S.ast.Type, ptr %t7 %t9 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t6, %S.ast.Type %t8) ret { ptr, i64, i64 } %t9 -endif2158: - store { ptr, i64, i64 } { ptr @.str.1218, i64 2, i64 0 }, ptr %a10 +endif2405: + store { ptr, i64, i64 } { ptr @.str.1395, i64 2, i64 0 }, ptr %a10 %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t12 = getelementptr inbounds %S.ast.Type, ptr %t11, i32 0, i32 0 %t13 = load { ptr, i64, i64 }, ptr %t12 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1219, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1396, i64 4, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp eq i32 %t16, 0 - br i1 %t17, label %then2159, label %endif2161 -then2159: + br i1 %t17, label %then2406, label %endif2408 +then2406: %t18 = load ptr, ptr %a1 %t19 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t20 = load %S.ast.Type, ptr %t19 %t21 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t18, %S.ast.Type %t20) store { ptr, i64, i64 } %t21, ptr %a10 - br label %endif2161 -endif2161: + br label %endif2408 +endif2408: %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1220, i64 6, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1397, i64 6, i64 0 }, ptr %a24 store { ptr, i64, i64 } %t22, ptr %a25 call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) %t26 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1221, i64 21, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.1398, i64 21, i64 0 }, ptr %a29 call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 ret { ptr, i64, i64 } %t30 @@ -20246,7 +23800,7 @@ entry: %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1222, i64 1, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a6 call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) %t7 = load { ptr, i64, i64 }, ptr %a4 %t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 @@ -20258,7 +23812,7 @@ entry: call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1223, i64 1, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 %t20 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 @@ -20270,7 +23824,7 @@ entry: call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1224, i64 1, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.1401, i64 1, i64 0 }, ptr %a30 call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 %t32 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 @@ -20309,77 +23863,77 @@ entry: store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load %S.ast.Type, ptr %a1 %t9 = call i1 @finch.gen.isInt(%S.ast.Type %t8) - br label %logic.from2162 -logic.from2162: - br i1 %t9, label %logic.end2164, label %logic.rhs2163 -logic.rhs2163: + br label %logic.from2409 +logic.from2409: + br i1 %t9, label %logic.end2411, label %logic.rhs2410 +logic.rhs2410: %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1225, i64 4, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1402, i64 4, i64 0 }, ptr %a12 %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) %t14 = icmp ne i32 %t13, 0 - br label %logic.rend2165 -logic.rend2165: - br label %logic.end2164 -logic.end2164: - %t15 = phi i1 [ true, %logic.from2162 ], [ %t14, %logic.rend2165 ] - br label %logic.from2166 -logic.from2166: - br i1 %t15, label %logic.end2168, label %logic.rhs2167 -logic.rhs2167: + br label %logic.rend2412 +logic.rend2412: + br label %logic.end2411 +logic.end2411: + %t15 = phi i1 [ true, %logic.from2409 ], [ %t14, %logic.rend2412 ] + br label %logic.from2413 +logic.from2413: + br i1 %t15, label %logic.end2415, label %logic.rhs2414 +logic.rhs2414: %t16 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1226, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1403, i64 4, i64 0 }, ptr %a18 %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) %t20 = icmp ne i32 %t19, 0 - br label %logic.rend2169 -logic.rend2169: - br label %logic.end2168 -logic.end2168: - %t21 = phi i1 [ true, %logic.from2166 ], [ %t20, %logic.rend2169 ] - br i1 %t21, label %then2170, label %endif2172 -then2170: - ret { ptr, i64, i64 } { ptr @.str.1227, i64 1, i64 0 } -endif2172: + br label %logic.rend2416 +logic.rend2416: + br label %logic.end2415 +logic.end2415: + %t21 = phi i1 [ true, %logic.from2413 ], [ %t20, %logic.rend2416 ] + br i1 %t21, label %then2417, label %endif2419 +then2417: + ret { ptr, i64, i64 } { ptr @.str.1404, i64 1, i64 0 } +endif2419: %t22 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1228, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1405, i64 4, i64 0 }, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then2173, label %endif2175 -then2173: - ret { ptr, i64, i64 } { ptr @.str.1229, i64 5, i64 0 } -endif2175: + br i1 %t26, label %then2420, label %endif2422 +then2420: + ret { ptr, i64, i64 } { ptr @.str.1406, i64 5, i64 0 } +endif2422: %t27 = load %S.ast.Type, ptr %a1 %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2176, label %endif2178 -then2176: - ret { ptr, i64, i64 } { ptr @.str.1230, i64 3, i64 0 } -endif2178: + br i1 %t28, label %then2423, label %endif2425 +then2423: + ret { ptr, i64, i64 } { ptr @.str.1407, i64 3, i64 0 } +endif2425: %t29 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1231, i64 3, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1408, i64 3, i64 0 }, ptr %a31 %t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31) %t33 = icmp ne i32 %t32, 0 - br label %logic.from2179 -logic.from2179: - br i1 %t33, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: + br label %logic.from2426 +logic.from2426: + br i1 %t33, label %logic.end2428, label %logic.rhs2427 +logic.rhs2427: %t34 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1232, i64 4, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.1409, i64 4, i64 0 }, ptr %a36 %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) %t38 = icmp ne i32 %t37, 0 - br label %logic.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t39 = phi i1 [ true, %logic.from2179 ], [ %t38, %logic.rend2182 ] - br i1 %t39, label %then2183, label %endif2185 -then2183: - ret { ptr, i64, i64 } { ptr @.str.1233, i64 4, i64 0 } -endif2185: - ret { ptr, i64, i64 } { ptr @.str.1234, i64 15, i64 0 } + br label %logic.rend2429 +logic.rend2429: + br label %logic.end2428 +logic.end2428: + %t39 = phi i1 [ true, %logic.from2426 ], [ %t38, %logic.rend2429 ] + br i1 %t39, label %then2430, label %endif2432 +then2430: + ret { ptr, i64, i64 } { ptr @.str.1410, i64 4, i64 0 } +endif2432: + ret { ptr, i64, i64 } { ptr @.str.1411, i64 15, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.sizeOf(ptr %p0, %S.ast.Type %p1) { @@ -20397,12 +23951,12 @@ entry: %t3 = load ptr, ptr %a1 %t4 = load %S.ast.Type, ptr %a2 %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1235, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1412, i64 29, i64 0 }, ptr %a7 store { ptr, i64, i64 } %t5, ptr %a8 call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) %t9 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1236, i64 26, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1413, i64 26, i64 0 }, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 ret { ptr, i64, i64 } %t13 @@ -20425,58 +23979,58 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1237, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1414, i64 3, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br label %logic.from2186 -logic.from2186: - br i1 %t8, label %logic.end2188, label %logic.rhs2187 -logic.rhs2187: + br label %logic.from2433 +logic.from2433: + br i1 %t8, label %logic.end2435, label %logic.rhs2434 +logic.rhs2434: %t9 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t10 = load { ptr, i64, i64 }, ptr %t9 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1238, i64 5, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1415, i64 5, i64 0 }, ptr %a12 %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) %t14 = icmp ne i32 %t13, 0 - br label %logic.rend2189 -logic.rend2189: - br label %logic.end2188 -logic.end2188: - %t15 = phi i1 [ true, %logic.from2186 ], [ %t14, %logic.rend2189 ] - br label %logic.from2190 -logic.from2190: - br i1 %t15, label %logic.end2192, label %logic.rhs2191 -logic.rhs2191: + br label %logic.rend2436 +logic.rend2436: + br label %logic.end2435 +logic.end2435: + %t15 = phi i1 [ true, %logic.from2433 ], [ %t14, %logic.rend2436 ] + br label %logic.from2437 +logic.from2437: + br i1 %t15, label %logic.end2439, label %logic.rhs2438 +logic.rhs2438: %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t17 = load { ptr, i64, i64 }, ptr %t16 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.1239, i64 3, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1416, i64 3, i64 0 }, ptr %a19 %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) %t21 = icmp ne i32 %t20, 0 - br label %logic.rend2193 -logic.rend2193: - br label %logic.end2192 -logic.end2192: - %t22 = phi i1 [ true, %logic.from2190 ], [ %t21, %logic.rend2193 ] - br i1 %t22, label %then2194, label %endif2196 -then2194: + br label %logic.rend2440 +logic.rend2440: + br label %logic.end2439 +logic.end2439: + %t22 = phi i1 [ true, %logic.from2437 ], [ %t21, %logic.rend2440 ] + br i1 %t22, label %then2441, label %endif2443 +then2441: ret i1 true -endif2196: +endif2443: %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t24 = load { ptr, i64, i64 }, ptr %t23 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1240, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1417, i64 6, i64 0 }, ptr %a26 %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) %t28 = icmp ne i32 %t27, 0 - br i1 %t28, label %then2197, label %endif2199 -then2197: + br i1 %t28, label %then2444, label %endif2446 +then2444: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2200, label %ok2201 -panic2200: - call void @finch_panic(ptr @.str.1241, i64 525, ptr @.str.1242) + br i1 %t30, label %panic2447, label %ok2448 +panic2447: + call void @finch_panic(ptr @.str.1418, i64 644, ptr @.str.1419) unreachable -ok2201: +ok2448: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 %t32 = load ptr, ptr %a1 %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -20487,17 +24041,17 @@ ok2201: %t38 = load { ptr, i64, i64 }, ptr %t31 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 %t37, %t39 - br i1 %t40, label %range2202, label %inrange2203 -range2202: - call void @finch_panic_index(ptr @.str.1243, i64 525, i64 %t37, i64 %t39) + br i1 %t40, label %range2449, label %inrange2450 +range2449: + call void @finch_panic_index(ptr @.str.1420, i64 644, i64 %t37, i64 %t39) unreachable -inrange2203: +inrange2450: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds %S.gen.StructDef, ptr %t41, i64 %t37 %t43 = getelementptr inbounds %S.gen.StructDef, ptr %t42, i32 0, i32 16 %t44 = load i1, ptr %t43 ret i1 %t44 -endif2199: +endif2446: ret i1 false } @@ -20548,68 +24102,68 @@ entry: %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1244, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.1421, i64 5, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then2204, label %endif2206 -then2204: + br i1 %t7, label %then2451, label %endif2453 +then2451: %t8 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t9 = load { ptr, i64, i64 }, ptr %t8 %t10 = extractvalue { ptr, i64, i64 } %t9, 1 %t11 = icmp uge i64 0, %t10 - br i1 %t11, label %range2207, label %inrange2208 -range2207: - call void @finch_panic_index(ptr @.str.1246, i64 532, i64 0, i64 %t10) + br i1 %t11, label %range2454, label %inrange2455 +range2454: + call void @finch_panic_index(ptr @.str.1423, i64 651, i64 0, i64 %t10) unreachable -inrange2208: +inrange2455: %t12 = extractvalue { ptr, i64, i64 } %t9, 0 %t13 = getelementptr inbounds %S.ast.Type, ptr %t12, i64 0 %t14 = load %S.ast.Type, ptr %t13 %t15 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t14) - store { ptr, i64, i64 } { ptr @.str.1245, i64 4, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1422, i64 4, i64 0 }, ptr %a17 store { ptr, i64, i64 } %t15, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 ret { ptr, i64, i64 } %t19 -endif2206: +endif2453: %t20 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1247, i64 3, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 }, ptr %a23 %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) %t25 = icmp ne i32 %t24, 0 - br i1 %t25, label %then2209, label %endif2211 -then2209: + br i1 %t25, label %then2456, label %endif2458 +then2456: %t26 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t27 = load { ptr, i64, i64 }, ptr %t26 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 0, %t28 - br i1 %t29, label %range2212, label %inrange2213 -range2212: - call void @finch_panic_index(ptr @.str.1249, i64 535, i64 0, i64 %t28) + br i1 %t29, label %range2459, label %inrange2460 +range2459: + call void @finch_panic_index(ptr @.str.1426, i64 654, i64 0, i64 %t28) unreachable -inrange2213: +inrange2460: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Type, ptr %t30, i64 0 %t32 = load %S.ast.Type, ptr %t31 %t33 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t32) - store { ptr, i64, i64 } { ptr @.str.1248, i64 4, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1425, i64 4, i64 0 }, ptr %a35 store { ptr, i64, i64 } %t33, ptr %a36 call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.1250, i64 1, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.1427, i64 1, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 %t43 = load { ptr, i64, i64 }, ptr %t42 %t44 = extractvalue { ptr, i64, i64 } %t43, 1 %t45 = icmp uge i64 1, %t44 - br i1 %t45, label %range2214, label %inrange2215 -range2214: - call void @finch_panic_index(ptr @.str.1251, i64 535, i64 1, i64 %t44) + br i1 %t45, label %range2461, label %inrange2462 +range2461: + call void @finch_panic_index(ptr @.str.1428, i64 654, i64 1, i64 %t44) unreachable -inrange2215: +inrange2462: %t46 = extractvalue { ptr, i64, i64 } %t43, 0 %t47 = getelementptr inbounds %S.ast.Type, ptr %t46, i64 1 %t48 = load %S.ast.Type, ptr %t47 @@ -20619,24 +24173,24 @@ inrange2215: call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) %t53 = load { ptr, i64, i64 }, ptr %a50 ret { ptr, i64, i64 } %t53 -endif2211: +endif2458: %t54 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t55 = load { ptr, i64, i64 }, ptr %t54 store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1252, i64 4, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 }, ptr %a57 %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %then2216, label %endif2218 -then2216: + br i1 %t59, label %then2463, label %endif2465 +then2463: %t60 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t61 = load { ptr, i64, i64 }, ptr %t60 %t62 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.1253, i64 2, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1430, i64 2, i64 0 }, ptr %a64 store { ptr, i64, i64 } %t62, ptr %a65 call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) %t66 = load { ptr, i64, i64 }, ptr %a63 store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1254, i64 1, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 %t71 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 @@ -20646,24 +24200,24 @@ then2216: call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 ret { ptr, i64, i64 } %t76 -endif2218: +endif2465: %t77 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t78 = load { ptr, i64, i64 }, ptr %t77 store { ptr, i64, i64 } %t78, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1255, i64 6, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.1432, i64 6, i64 0 }, ptr %a80 %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) %t82 = icmp ne i32 %t81, 0 - br i1 %t82, label %then2219, label %endif2221 -then2219: + br i1 %t82, label %then2466, label %endif2468 +then2466: %t83 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 %t84 = load { ptr, i64, i64 }, ptr %t83 %t85 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t84) - store { ptr, i64, i64 } { ptr @.str.1256, i64 2, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1433, i64 2, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1257, i64 1, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.1434, i64 1, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 %t94 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 @@ -20674,7 +24228,7 @@ then2219: call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 ret { ptr, i64, i64 } %t100 -endif2221: +endif2468: %t101 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t102 = load { ptr, i64, i64 }, ptr %t101 store { ptr, i64, i64 } %t102, ptr %a103 @@ -20693,17 +24247,17 @@ entry: %a24 = alloca { ptr, i64, i64 }, align 16 %a25 = alloca { ptr, i64, i64 }, align 16 store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1258, i64 16, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.1435, i64 16, i64 0 }, ptr %a2 %t3 = load i64, ptr %a1 %t4 = sdiv i64 %t3, 16 %t5 = load { ptr, i64, i64 }, ptr %a2 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 %t4, %t6 - br i1 %t7, label %range2222, label %inrange2223 -range2222: - call void @finch_panic_index(ptr @.str.1259, i64 550, i64 %t4, i64 %t6) + br i1 %t7, label %range2469, label %inrange2470 +range2469: + call void @finch_panic_index(ptr @.str.1436, i64 669, i64 %t4, i64 %t6) unreachable -inrange2223: +inrange2470: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t4 %t10 = load i8, ptr %t9 @@ -20714,11 +24268,11 @@ inrange2223: %t15 = load { ptr, i64, i64 }, ptr %a2 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 %t14, %t16 - br i1 %t17, label %range2224, label %inrange2225 -range2224: - call void @finch_panic_index(ptr @.str.1260, i64 550, i64 %t14, i64 %t16) + br i1 %t17, label %range2471, label %inrange2472 +range2471: + call void @finch_panic_index(ptr @.str.1437, i64 669, i64 %t14, i64 %t16) unreachable -inrange2225: +inrange2472: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds i8, ptr %t18, i64 %t14 %t20 = load i8, ptr %t19 @@ -20772,41 +24326,41 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2226, label %ok2227 -panic2226: - call void @finch_panic(ptr @.str.1261, i64 554, ptr @.str.1262) + br i1 %t4, label %panic2473, label %ok2474 +panic2473: + call void @finch_panic(ptr @.str.1438, i64 673, ptr @.str.1439) unreachable -ok2227: +ok2474: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 8 %t6 = load i64, ptr %t5 %t7 = add i64 %t6, 1 store i64 %t7, ptr %t5 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2228, label %ok2229 -panic2228: - call void @finch_panic(ptr @.str.1264, i64 555, ptr @.str.1265) + br i1 %t9, label %panic2475, label %ok2476 +panic2475: + call void @finch_panic(ptr @.str.1441, i64 674, ptr @.str.1442) unreachable -ok2229: +ok2476: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 8 %t11 = load i64, ptr %t10 call void @finch_str_from_int(ptr %a12, i64 %t11) %t13 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1263, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.1440, i64 6, i64 0 }, ptr %a15 store { ptr, i64, i64 } %t13, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a18 store { ptr, i64, i64 } zeroinitializer, ptr %a19 store i64 0, ptr %a20 - br label %each.cond2230 -each.cond2230: + br label %each.cond2477 +each.cond2477: %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t22 = load i64, ptr %t21 %t23 = load i64, ptr %a20 %t24 = icmp slt i64 %t23, %t22 - br i1 %t24, label %each.body2231, label %each.end2233 -each.body2231: + br i1 %t24, label %each.body2478, label %each.end2480 +each.body2478: %t25 = load ptr, ptr %a2 %t26 = getelementptr inbounds i8, ptr %t25, i64 %t23 %t27 = load i8, ptr %t26 @@ -20816,50 +24370,50 @@ each.body2231: store i64 %t30, ptr %a31 %t32 = load i64, ptr %a31 %t33 = icmp slt i64 %t32, 0 - br i1 %t33, label %then2234, label %endif2236 -then2234: + br i1 %t33, label %then2481, label %endif2483 +then2481: %t34 = load i64, ptr %a31 %t35 = add i64 %t34, 256 store i64 %t35, ptr %a31 - br label %endif2236 -endif2236: + br label %endif2483 +endif2483: %t36 = load i64, ptr %a31 %t37 = icmp sge i64 %t36, 32 - br label %logic.from2237 -logic.from2237: - br i1 %t37, label %logic.rhs2238, label %logic.end2239 -logic.rhs2238: + br label %logic.from2484 +logic.from2484: + br i1 %t37, label %logic.rhs2485, label %logic.end2486 +logic.rhs2485: %t38 = load i64, ptr %a31 %t39 = icmp slt i64 %t38, 127 - br label %logic.rend2240 -logic.rend2240: - br label %logic.end2239 -logic.end2239: - %t40 = phi i1 [ false, %logic.from2237 ], [ %t39, %logic.rend2240 ] - br label %logic.from2241 -logic.from2241: - br i1 %t40, label %logic.rhs2242, label %logic.end2243 -logic.rhs2242: + br label %logic.rend2487 +logic.rend2487: + br label %logic.end2486 +logic.end2486: + %t40 = phi i1 [ false, %logic.from2484 ], [ %t39, %logic.rend2487 ] + br label %logic.from2488 +logic.from2488: + br i1 %t40, label %logic.rhs2489, label %logic.end2490 +logic.rhs2489: %t41 = load i8, ptr %a28 %t42 = icmp ne i8 %t41, 34 - br label %logic.rend2244 -logic.rend2244: - br label %logic.end2243 -logic.end2243: - %t43 = phi i1 [ false, %logic.from2241 ], [ %t42, %logic.rend2244 ] - br label %logic.from2245 -logic.from2245: - br i1 %t43, label %logic.rhs2246, label %logic.end2247 -logic.rhs2246: + br label %logic.rend2491 +logic.rend2491: + br label %logic.end2490 +logic.end2490: + %t43 = phi i1 [ false, %logic.from2488 ], [ %t42, %logic.rend2491 ] + br label %logic.from2492 +logic.from2492: + br i1 %t43, label %logic.rhs2493, label %logic.end2494 +logic.rhs2493: %t44 = load i8, ptr %a28 %t45 = icmp ne i8 %t44, 92 - br label %logic.rend2248 -logic.rend2248: - br label %logic.end2247 -logic.end2247: - %t46 = phi i1 [ false, %logic.from2245 ], [ %t45, %logic.rend2248 ] - br i1 %t46, label %then2249, label %else2250 -then2249: + br label %logic.rend2495 +logic.rend2495: + br label %logic.end2494 +logic.end2494: + %t46 = phi i1 [ false, %logic.from2492 ], [ %t45, %logic.rend2495 ] + br i1 %t46, label %then2496, label %else2497 +then2496: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 %t48 = load i8, ptr %a28 call void @finch_str_from_char(ptr %a49, i8 signext %t48) @@ -20871,12 +24425,12 @@ then2249: %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i64 %t51 store { ptr, i64, i64 } %t50, ptr %t54 store i64 %t52, ptr %t47 - br label %endif2251 -else2250: + br label %endif2498 +else2497: %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 %t56 = load i64, ptr %a31 %t57 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t56) - store { ptr, i64, i64 } { ptr @.str.1266, i64 1, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.1443, i64 1, i64 0 }, ptr %a59 store { ptr, i64, i64 } %t57, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 @@ -20887,27 +24441,27 @@ else2250: %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 store { ptr, i64, i64 } %t61, ptr %t65 store i64 %t63, ptr %t55 - br label %endif2251 -endif2251: - br label %each.step2232 -each.step2232: + br label %endif2498 +endif2498: + br label %each.step2479 +each.step2479: %t66 = load i64, ptr %a20 %t67 = add i64 %t66, 1 store i64 %t67, ptr %a20 - br label %each.cond2230 -each.end2233: + br label %each.cond2477 +each.end2480: %t68 = load ptr, ptr %a1 %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic2252, label %ok2253 -panic2252: - call void @finch_panic(ptr @.str.1267, i64 568, ptr @.str.1268) + br i1 %t69, label %panic2499, label %ok2500 +panic2499: + call void @finch_panic(ptr @.str.1444, i64 687, ptr @.str.1445) unreachable -ok2253: +ok2500: %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 2 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 %t72 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1269, i64 34, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.1446, i64 34, i64 0 }, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 @@ -20920,11 +24474,11 @@ ok2253: call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1270, i64 9, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.1447, i64 9, i64 0 }, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1271, i64 0, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1448, i64 0, i64 0 }, ptr %a91 call void @finch_str_join(ptr %a92, ptr %a19, ptr %a91) %t93 = load { ptr, i64, i64 }, ptr %a92 store { ptr, i64, i64 } %t89, ptr %a95 @@ -20932,7 +24486,7 @@ ok2253: call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1272, i64 4, i64 0 }, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.1449, i64 4, i64 0 }, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 %t102 = load i64, ptr %t71 @@ -20974,12 +24528,12 @@ entry: %t5 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t3, { ptr, i64, i64 } %t4) store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1273, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.1450, i64 6, i64 0 }, ptr %a9 store { ptr, i64, i64 } %t7, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t11, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.1274, i64 6, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1451, i64 6, i64 0 }, ptr %a14 call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 @@ -20991,11 +24545,11 @@ entry: call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1275, i64 9, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1452, i64 9, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t27, 0 - %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1276, i64 3, i64 0 }) + %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1453, i64 3, i64 0 }) %t30 = insertvalue %S.gen.Val %t28, %S.ast.Type %t29, 1 %t31 = insertvalue %S.gen.Val %t30, i1 true, 2 ret %S.gen.Val %t31 @@ -21035,10 +24589,10 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Node %p3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1277, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1454, i64 5, i64 0 }) store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load ptr, ptr %a1 - %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1278, i64 2, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1455, i64 2, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 @@ -21051,22 +24605,22 @@ entry: %t17 = load ptr, ptr %a1 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2254, label %ok2255 -panic2254: - call void @finch_panic(ptr @.str.1279, i64 584, ptr @.str.1280) + br i1 %t19, label %panic2501, label %ok2502 +panic2501: + call void @finch_panic(ptr @.str.1456, i64 703, ptr @.str.1457) unreachable -ok2255: +ok2502: %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 %t22 = load i64, ptr %t21 %t23 = load { ptr, i64, i64 }, ptr %t20 %t24 = extractvalue { ptr, i64, i64 } %t23, 1 %t25 = icmp uge i64 %t22, %t24 - br i1 %t25, label %range2256, label %inrange2257 -range2256: - call void @finch_panic_index(ptr @.str.1281, i64 584, i64 %t22, i64 %t24) + br i1 %t25, label %range2503, label %inrange2504 +range2503: + call void @finch_panic_index(ptr @.str.1458, i64 703, i64 %t22, i64 %t24) unreachable -inrange2257: +inrange2504: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t22 %t28 = load { ptr, i64, i64 }, ptr %t27 @@ -21078,12 +24632,12 @@ inrange2257: store { ptr, i64, i64 } %t33, ptr %a34 %t35 = load ptr, ptr %a1 %t36 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 27, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1459, i64 27, i64 0 }, ptr %a38 store { ptr, i64, i64 } %t36, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1283, i64 6, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.1460, i64 6, i64 0 }, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 @@ -21095,7 +24649,7 @@ inrange2257: call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t52, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.1284, i64 6, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.1461, i64 6, i64 0 }, ptr %a55 call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 %t57 = load { ptr, i64, i64 }, ptr %a34 @@ -21104,19 +24658,19 @@ inrange2257: call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1285, i64 1, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1462, i64 1, i64 0 }, ptr %a64 call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t65) %t66 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } { ptr @.str.1286, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } { ptr @.str.1463, i64 11, i64 0 }) %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic2258, label %ok2259 -panic2258: - call void @finch_panic(ptr @.str.1287, i64 588, ptr @.str.1288) + br i1 %t68, label %panic2505, label %ok2506 +panic2505: + call void @finch_panic(ptr @.str.1464, i64 707, ptr @.str.1465) unreachable -ok2259: +ok2506: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 store i1 true, ptr %t69 %t70 = load ptr, ptr %a1 @@ -21174,19 +24728,19 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Node %p3, ptr %a4 %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1289, i64 5, i64 0 }) + %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1466, i64 5, i64 0 }) store { ptr, i64, i64 } %t6, ptr %a7 %t8 = load ptr, ptr %a1 - %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1290, i64 7, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1467, i64 7, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1291, i64 13, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1468, i64 13, i64 0 }, ptr %a14 store { ptr, i64, i64 } %t12, ptr %a15 call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) %t16 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.1292, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1469, i64 2, i64 0 }, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 %t21 = load { ptr, i64, i64 }, ptr %a3 @@ -21207,22 +24761,22 @@ entry: %t34 = load ptr, ptr %a1 %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2260, label %ok2261 -panic2260: - call void @finch_panic(ptr @.str.1293, i64 598, ptr @.str.1294) + br i1 %t36, label %panic2507, label %ok2508 +panic2507: + call void @finch_panic(ptr @.str.1470, i64 717, ptr @.str.1471) unreachable -ok2261: +ok2508: %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 1 %t38 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 %t39 = load i64, ptr %t38 %t40 = load { ptr, i64, i64 }, ptr %t37 %t41 = extractvalue { ptr, i64, i64 } %t40, 1 %t42 = icmp uge i64 %t39, %t41 - br i1 %t42, label %range2262, label %inrange2263 -range2262: - call void @finch_panic_index(ptr @.str.1295, i64 598, i64 %t39, i64 %t41) + br i1 %t42, label %range2509, label %inrange2510 +range2509: + call void @finch_panic_index(ptr @.str.1472, i64 717, i64 %t39, i64 %t41) unreachable -inrange2263: +inrange2510: %t43 = extractvalue { ptr, i64, i64 } %t40, 0 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t39 %t45 = load { ptr, i64, i64 }, ptr %t44 @@ -21230,12 +24784,12 @@ inrange2263: store { ptr, i64, i64 } %t46, ptr %a47 %t48 = load ptr, ptr %a1 %t49 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1296, i64 33, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.1473, i64 33, i64 0 }, ptr %a51 store { ptr, i64, i64 } %t49, ptr %a52 call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) %t53 = load { ptr, i64, i64 }, ptr %a50 store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.1297, i64 6, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1474, i64 6, i64 0 }, ptr %a56 call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 %t58 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 @@ -21247,7 +24801,7 @@ inrange2263: call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.1298, i64 6, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1475, i64 6, i64 0 }, ptr %a68 call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) %t69 = load { ptr, i64, i64 }, ptr %a66 %t70 = load { ptr, i64, i64 }, ptr %a2 @@ -21256,7 +24810,7 @@ inrange2263: call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1299, i64 6, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.1476, i64 6, i64 0 }, ptr %a77 call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) %t78 = load { ptr, i64, i64 }, ptr %a75 %t79 = load { ptr, i64, i64 }, ptr %a3 @@ -21265,19 +24819,19 @@ inrange2263: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.1300, i64 1, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.1477, i64 1, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 call void @finch.gen.emit(ptr %t48, { ptr, i64, i64 } %t87) %t88 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } { ptr @.str.1301, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } { ptr @.str.1478, i64 11, i64 0 }) %t89 = load ptr, ptr %a1 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic2264, label %ok2265 -panic2264: - call void @finch_panic(ptr @.str.1302, i64 601, ptr @.str.1303) + br i1 %t90, label %panic2511, label %ok2512 +panic2511: + call void @finch_panic(ptr @.str.1479, i64 720, ptr @.str.1480) unreachable -ok2265: +ok2512: %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 9 store i1 true, ptr %t91 %t92 = load ptr, ptr %a1 @@ -21318,11 +24872,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2266, label %ok2267 -panic2266: - call void @finch_panic(ptr @.str.1304, i64 616, ptr @.str.1305) + br i1 %t3, label %panic2513, label %ok2514 +panic2513: + call void @finch_panic(ptr @.str.1481, i64 735, ptr @.str.1482) unreachable -ok2267: +ok2514: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 4 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 @@ -21331,11 +24885,11 @@ ok2267: %t9 = insertvalue %S.gen.Saved zeroinitializer, { ptr, i64, i64 } %t8, 0 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2268, label %ok2269 -panic2268: - call void @finch_panic(ptr @.str.1306, i64 616, ptr @.str.1307) + br i1 %t11, label %panic2515, label %ok2516 +panic2515: + call void @finch_panic(ptr @.str.1483, i64 735, ptr @.str.1484) unreachable -ok2269: +ok2516: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 5 %t13 = load { ptr, i64, i64 }, ptr %t12 store { ptr, i64, i64 } %t13, ptr %a14 @@ -21344,53 +24898,53 @@ ok2269: %t17 = insertvalue %S.gen.Saved %t9, { ptr, i64, i64 } %t16, 1 %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2270, label %ok2271 -panic2270: - call void @finch_panic(ptr @.str.1308, i64 616, ptr @.str.1309) + br i1 %t19, label %panic2517, label %ok2518 +panic2517: + call void @finch_panic(ptr @.str.1485, i64 735, ptr @.str.1486) unreachable -ok2271: +ok2518: %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 6 %t21 = load i64, ptr %t20 %t22 = insertvalue %S.gen.Saved %t17, i64 %t21, 2 %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic2272, label %ok2273 -panic2272: - call void @finch_panic(ptr @.str.1310, i64 616, ptr @.str.1311) + br i1 %t24, label %panic2519, label %ok2520 +panic2519: + call void @finch_panic(ptr @.str.1487, i64 735, ptr @.str.1488) unreachable -ok2273: +ok2520: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 9 %t26 = load i1, ptr %t25 %t27 = insertvalue %S.gen.Saved %t22, i1 %t26, 3 %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2274, label %ok2275 -panic2274: - call void @finch_panic(ptr @.str.1312, i64 616, ptr @.str.1313) + br i1 %t29, label %panic2521, label %ok2522 +panic2521: + call void @finch_panic(ptr @.str.1489, i64 735, ptr @.str.1490) unreachable -ok2275: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 32 +ok2522: + %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 %t31 = load i64, ptr %t30 %t32 = insertvalue %S.gen.Saved %t27, i64 %t31, 4 store %S.gen.Saved %t32, ptr %a33 %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2276, label %ok2277 -panic2276: - call void @finch_panic(ptr @.str.1314, i64 617, ptr @.str.1315) + br i1 %t35, label %panic2523, label %ok2524 +panic2523: + call void @finch_panic(ptr @.str.1491, i64 736, ptr @.str.1492) unreachable -ok2277: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 32 +ok2524: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 34 store i64 -1, ptr %t36 store { ptr, i64, i64 } zeroinitializer, ptr %a37 %t38 = load { ptr, i64, i64 }, ptr %a37 %t39 = load ptr, ptr %a1 %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic2278, label %ok2279 -panic2278: - call void @finch_panic(ptr @.str.1316, i64 619, ptr @.str.1317) + br i1 %t40, label %panic2525, label %ok2526 +panic2525: + call void @finch_panic(ptr @.str.1493, i64 738, ptr @.str.1494) unreachable -ok2279: +ok2526: %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 store { ptr, i64, i64 } %t38, ptr %a42 call void @finch.copy.arr_str(ptr %a43, ptr %a42) @@ -21399,11 +24953,11 @@ ok2279: %t45 = load { ptr, i64, i64 }, ptr %a37 %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic2280, label %ok2281 -panic2280: - call void @finch_panic(ptr @.str.1318, i64 620, ptr @.str.1319) + br i1 %t47, label %panic2527, label %ok2528 +panic2527: + call void @finch_panic(ptr @.str.1495, i64 739, ptr @.str.1496) unreachable -ok2281: +ok2528: %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 5 store { ptr, i64, i64 } %t45, ptr %a49 call void @finch.copy.arr_str(ptr %a50, ptr %a49) @@ -21411,20 +24965,20 @@ ok2281: store { ptr, i64, i64 } %t51, ptr %t48 %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic2282, label %ok2283 -panic2282: - call void @finch_panic(ptr @.str.1320, i64 621, ptr @.str.1321) + br i1 %t53, label %panic2529, label %ok2530 +panic2529: + call void @finch_panic(ptr @.str.1497, i64 740, ptr @.str.1498) unreachable -ok2283: +ok2530: %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 6 store i64 0, ptr %t54 %t55 = load ptr, ptr %a1 %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2284, label %ok2285 -panic2284: - call void @finch_panic(ptr @.str.1322, i64 622, ptr @.str.1323) + br i1 %t56, label %panic2531, label %ok2532 +panic2531: + call void @finch_panic(ptr @.str.1499, i64 741, ptr @.str.1500) unreachable -ok2285: +ok2532: %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 9 store i1 false, ptr %t57 %t58 = load %S.gen.Saved, ptr %a33 @@ -21467,28 +25021,28 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2286, label %ok2287 -panic2286: - call void @finch_panic(ptr @.str.1324, i64 627, ptr @.str.1325) + br i1 %t5, label %panic2533, label %ok2534 +panic2533: + call void @finch_panic(ptr @.str.1501, i64 746, ptr @.str.1502) unreachable -ok2287: +ok2534: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 3 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1326, i64 10, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1503, i64 10, i64 0 }, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1327, i64 627, ptr @.str.1328) + br i1 %t14, label %panic2535, label %ok2536 +panic2535: + call void @finch_panic(ptr @.str.1504, i64 746, ptr @.str.1505) unreachable -ok2289: +ok2536: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 5 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1329, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1506, i64 1, i64 0 }, ptr %a17 call void @finch_str_join(ptr %a18, ptr %t15, ptr %a17) %t19 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t12, ptr %a21 @@ -21496,19 +25050,19 @@ ok2289: call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1330, i64 1, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1507, i64 1, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2290, label %ok2291 -panic2290: - call void @finch_panic(ptr @.str.1331, i64 627, ptr @.str.1332) + br i1 %t29, label %panic2537, label %ok2538 +panic2537: + call void @finch_panic(ptr @.str.1508, i64 746, ptr @.str.1509) unreachable -ok2291: +ok2538: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 4 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1333, i64 1, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1510, i64 1, i64 0 }, ptr %a32 call void @finch_str_join(ptr %a33, ptr %t30, ptr %a32) %t34 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t27, ptr %a36 @@ -21516,7 +25070,7 @@ ok2291: call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1334, i64 3, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1511, i64 3, i64 0 }, ptr %a41 call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 %t43 = load i64, ptr %t7 @@ -21530,11 +25084,11 @@ ok2291: %t48 = load { ptr, i64, i64 }, ptr %t47 %t49 = load ptr, ptr %a1 %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic2292, label %ok2293 -panic2292: - call void @finch_panic(ptr @.str.1335, i64 628, ptr @.str.1336) + br i1 %t50, label %panic2539, label %ok2540 +panic2539: + call void @finch_panic(ptr @.str.1512, i64 747, ptr @.str.1513) unreachable -ok2293: +ok2540: %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 4 store { ptr, i64, i64 } %t48, ptr %a52 call void @finch.copy.arr_str(ptr %a53, ptr %a52) @@ -21544,11 +25098,11 @@ ok2293: %t56 = load { ptr, i64, i64 }, ptr %t55 %t57 = load ptr, ptr %a1 %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic2294, label %ok2295 -panic2294: - call void @finch_panic(ptr @.str.1337, i64 629, ptr @.str.1338) + br i1 %t58, label %panic2541, label %ok2542 +panic2541: + call void @finch_panic(ptr @.str.1514, i64 748, ptr @.str.1515) unreachable -ok2295: +ok2542: %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 5 store { ptr, i64, i64 } %t56, ptr %a60 call void @finch.copy.arr_str(ptr %a61, ptr %a60) @@ -21558,34 +25112,34 @@ ok2295: %t64 = load i64, ptr %t63 %t65 = load ptr, ptr %a1 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1339, i64 630, ptr @.str.1340) + br i1 %t66, label %panic2543, label %ok2544 +panic2543: + call void @finch_panic(ptr @.str.1516, i64 749, ptr @.str.1517) unreachable -ok2297: +ok2544: %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 6 store i64 %t64, ptr %t67 %t68 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 %t69 = load i1, ptr %t68 %t70 = load ptr, ptr %a1 %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2298, label %ok2299 -panic2298: - call void @finch_panic(ptr @.str.1341, i64 631, ptr @.str.1342) + br i1 %t71, label %panic2545, label %ok2546 +panic2545: + call void @finch_panic(ptr @.str.1518, i64 750, ptr @.str.1519) unreachable -ok2299: +ok2546: %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 9 store i1 %t69, ptr %t72 %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 %t74 = load i64, ptr %t73 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2300, label %ok2301 -panic2300: - call void @finch_panic(ptr @.str.1343, i64 632, ptr @.str.1344) + br i1 %t76, label %panic2547, label %ok2548 +panic2547: + call void @finch_panic(ptr @.str.1520, i64 751, ptr @.str.1521) unreachable -ok2301: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 32 +ok2548: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 34 store i64 %t74, ptr %t77 ret void } @@ -21620,19 +25174,19 @@ entry: store ptr %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1345, i64 3, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t3, { ptr, i64, i64 } { ptr @.str.1522, i64 3, i64 0 }) store { ptr, i64, i64 } %t4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.store(ptr %t6, { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1347, i64 1, i64 0 }, { ptr, i64, i64 } %t7) + call void @finch.gen.store(ptr %t6, { ptr, i64, i64 } { ptr @.str.1523, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1524, i64 1, i64 0 }, { ptr, i64, i64 } %t7) %t8 = load ptr, ptr %a1 - %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1348, i64 6, i64 0 }) + %t9 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t8, { ptr, i64, i64 } { ptr @.str.1525, i64 6, i64 0 }) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t11, { ptr, i64, i64 } { ptr @.str.1349, i64 6, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t11, { ptr, i64, i64 } { ptr @.str.1526, i64 6, i64 0 }) store { ptr, i64, i64 } %t12, ptr %a13 %t14 = load ptr, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t14, { ptr, i64, i64 } { ptr @.str.1350, i64 5, i64 0 }) + %t15 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t14, { ptr, i64, i64 } { ptr @.str.1527, i64 5, i64 0 }) store { ptr, i64, i64 } %t15, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = load { ptr, i64, i64 }, ptr %a10 @@ -21642,16 +25196,16 @@ entry: call void @finch.gen.label(ptr %t19, { ptr, i64, i64 } %t20) %t21 = load ptr, ptr %a1 %t22 = load { ptr, i64, i64 }, ptr %a5 - %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1351, i64 3, i64 0 }, { ptr, i64, i64 } %t22) + %t23 = call { ptr, i64, i64 } @finch.gen.load(ptr %t21, { ptr, i64, i64 } { ptr @.str.1528, i64 3, i64 0 }, { ptr, i64, i64 } %t22) store { ptr, i64, i64 } %t23, ptr %a24 %t25 = load ptr, ptr %a1 %t26 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1352, i64 13, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1529, i64 13, i64 0 }, ptr %a28 store { ptr, i64, i64 } %t26, ptr %a29 call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1353, i64 2, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.1530, i64 2, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = load { ptr, i64, i64 }, ptr %a2 @@ -21718,49 +25272,49 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %a2 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2302, label %inrange2303 -range2302: - call void @finch_panic_index(ptr @.str.1355, i64 652, i64 0, i64 %t5) + br i1 %t6, label %range2549, label %inrange2550 +range2549: + call void @finch_panic_index(ptr @.str.1532, i64 771, i64 0, i64 %t5) unreachable -inrange2303: +inrange2550: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 0 %t9 = load { ptr, i64, i64 }, ptr %t8 - %t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1354, i64 3, i64 0 }, { ptr, i64, i64 } %t9) + %t10 = call { ptr, i64, i64 } @finch.gen.load(ptr %t3, { ptr, i64, i64 } { ptr @.str.1531, i64 3, i64 0 }, { ptr, i64, i64 } %t9) store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = load ptr, ptr %a1 %t14 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1357, i64 8, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.1534, i64 8, i64 0 }, ptr %a16 store { ptr, i64, i64 } %t14, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1358, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1535, i64 3, i64 0 }, ptr %a21 call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 %t23 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t22) %t24 = load { ptr, i64, i64 }, ptr %a2 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 0, %t25 - br i1 %t26, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1359, i64 653, i64 0, i64 %t25) + br i1 %t26, label %range2551, label %inrange2552 +range2551: + call void @finch_panic_index(ptr @.str.1536, i64 772, i64 0, i64 %t25) unreachable -inrange2305: +inrange2552: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 0 %t29 = load { ptr, i64, i64 }, ptr %t28 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1356, i64 3, i64 0 }, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t29) + call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1533, i64 3, i64 0 }, { ptr, i64, i64 } %t23, { ptr, i64, i64 } %t29) %t30 = load ptr, ptr %a1 %t31 = load { ptr, i64, i64 }, ptr %a2 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 1, %t32 - br i1 %t33, label %range2306, label %inrange2307 -range2306: - call void @finch_panic_index(ptr @.str.1360, i64 654, i64 1, i64 %t32) + br i1 %t33, label %range2553, label %inrange2554 +range2553: + call void @finch_panic_index(ptr @.str.1537, i64 773, i64 1, i64 %t32) unreachable -inrange2307: +inrange2554: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i64 1 %t36 = load { ptr, i64, i64 }, ptr %t35 @@ -21769,11 +25323,11 @@ inrange2307: %t38 = load { ptr, i64, i64 }, ptr %a2 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 2, %t39 - br i1 %t40, label %range2308, label %inrange2309 -range2308: - call void @finch_panic_index(ptr @.str.1361, i64 655, i64 2, i64 %t39) + br i1 %t40, label %range2555, label %inrange2556 +range2555: + call void @finch_panic_index(ptr @.str.1538, i64 774, i64 2, i64 %t39) unreachable -inrange2309: +inrange2556: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 2 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -21832,19 +25386,19 @@ entry: %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.1362, i64 3, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.1539, i64 3, i64 0 }, ptr %a8 %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) %t10 = icmp ne i32 %t9, 0 - br i1 %t10, label %then2310, label %else2311 -then2310: + br i1 %t10, label %then2557, label %else2558 +then2557: %t11 = load ptr, ptr %a1 %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1363, i64 30, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.1540, i64 30, i64 0 }, ptr %a14 store { ptr, i64, i64 } %t12, ptr %a15 call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) %t16 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.1364, i64 6, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1541, i64 6, i64 0 }, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 %t21 = load { ptr, i64, i64 }, ptr %a3 @@ -21853,72 +25407,72 @@ then2310: call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1365, i64 1, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.1542, i64 1, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t29) - br label %endif2312 -else2311: + br label %endif2559 +else2558: %t30 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t31 = load { ptr, i64, i64 }, ptr %t30 store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1366, i64 5, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.1543, i64 5, i64 0 }, ptr %a33 %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) %t35 = icmp ne i32 %t34, 0 - br label %logic.from2313 -logic.from2313: - br i1 %t35, label %logic.end2315, label %logic.rhs2314 -logic.rhs2314: + br label %logic.from2560 +logic.from2560: + br i1 %t35, label %logic.end2562, label %logic.rhs2561 +logic.rhs2561: %t36 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.1367, i64 3, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.1544, i64 3, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br label %logic.rend2316 -logic.rend2316: - br label %logic.end2315 -logic.end2315: - %t42 = phi i1 [ true, %logic.from2313 ], [ %t41, %logic.rend2316 ] - br label %logic.from2317 -logic.from2317: - br i1 %t42, label %logic.end2319, label %logic.rhs2318 -logic.rhs2318: + br label %logic.rend2563 +logic.rend2563: + br label %logic.end2562 +logic.end2562: + %t42 = phi i1 [ true, %logic.from2560 ], [ %t41, %logic.rend2563 ] + br label %logic.from2564 +logic.from2564: + br i1 %t42, label %logic.end2566, label %logic.rhs2565 +logic.rhs2565: %t43 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t44 = load { ptr, i64, i64 }, ptr %t43 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1368, i64 6, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1545, i64 6, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br label %logic.from2320 -logic.from2320: - br i1 %t48, label %logic.rhs2321, label %logic.end2322 -logic.rhs2321: + br label %logic.from2567 +logic.from2567: + br i1 %t48, label %logic.rhs2568, label %logic.end2569 +logic.rhs2568: %t49 = load ptr, ptr %a1 %t50 = load %S.ast.Type, ptr %a4 %t51 = call i1 @finch.gen.owning(ptr %t49, %S.ast.Type %t50) - br label %logic.rend2323 -logic.rend2323: - br label %logic.end2322 -logic.end2322: - %t52 = phi i1 [ false, %logic.from2320 ], [ %t51, %logic.rend2323 ] - br label %logic.rend2324 -logic.rend2324: - br label %logic.end2319 -logic.end2319: - %t53 = phi i1 [ true, %logic.from2317 ], [ %t52, %logic.rend2324 ] - br i1 %t53, label %then2325, label %else2326 -then2325: + br label %logic.rend2570 +logic.rend2570: + br label %logic.end2569 +logic.end2569: + %t52 = phi i1 [ false, %logic.from2567 ], [ %t51, %logic.rend2570 ] + br label %logic.rend2571 +logic.rend2571: + br label %logic.end2566 +logic.end2566: + %t53 = phi i1 [ true, %logic.from2564 ], [ %t52, %logic.rend2571 ] + br i1 %t53, label %then2572, label %else2573 +then2572: %t54 = load ptr, ptr %a1 %t55 = load ptr, ptr %a1 %t56 = load %S.ast.Type, ptr %a4 %t57 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t55, %S.ast.Type %t56) - store { ptr, i64, i64 } { ptr @.str.1369, i64 10, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.1546, i64 10, i64 0 }, ptr %a59 store { ptr, i64, i64 } %t57, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1370, i64 5, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.1547, i64 5, i64 0 }, ptr %a64 call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 %t66 = load { ptr, i64, i64 }, ptr %a2 @@ -21927,7 +25481,7 @@ then2325: call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1371, i64 6, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.1548, i64 6, i64 0 }, ptr %a73 call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 %t75 = load { ptr, i64, i64 }, ptr %a3 @@ -21936,12 +25490,12 @@ then2325: call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.1372, i64 1, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.1549, i64 1, i64 0 }, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 call void @finch.gen.emit(ptr %t54, { ptr, i64, i64 } %t83) - br label %endif2327 -else2326: + br label %endif2574 +else2573: %t84 = load ptr, ptr %a1 %t85 = load ptr, ptr %a1 %t86 = load %S.ast.Type, ptr %a4 @@ -21954,55 +25508,10 @@ else2326: %t93 = call { ptr, i64, i64 } @finch.gen.load(ptr %t88, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) %t94 = load { ptr, i64, i64 }, ptr %a2 call void @finch.gen.store(ptr %t84, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t93, { ptr, i64, i64 } %t94) - br label %endif2327 -endif2327: - br label %endif2312 -endif2312: - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_StructDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.StructDef, ptr %src - store %S.gen.StructDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 3 - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 4 - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 5 - %t11 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 5 - call void @finch_str_copy(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 6 - %t13 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 6 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 7 - %t15 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 7 - call void @finch.copy.arr_S_ast_Type(ptr %t14, ptr %t15) - %t16 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 8 - %t17 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 8 - call void @finch_str_copy(ptr %t16, ptr %t17) - %t18 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 11 - %t19 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 11 - call void @finch.copy.arr_str(ptr %t18, ptr %t19) - %t20 = getelementptr inbounds %S.gen.StructDef, ptr %dst, i32 0, i32 12 - %t21 = getelementptr inbounds %S.gen.StructDef, ptr %src, i32 0, i32 12 - call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) + br label %endif2574 +endif2574: + br label %endif2559 +endif2559: ret void } @@ -22143,37 +25652,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1373, i64 12, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1550, i64 12, i64 0 }, ptr %a6 store { ptr, i64, i64 } %t4, ptr %a7 call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) %t8 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2328, label %ok2329 -panic2328: - call void @finch_panic(ptr @.str.1374, i64 670, ptr @.str.1375) + br i1 %t11, label %panic2575, label %ok2576 +panic2575: + call void @finch_panic(ptr @.str.1551, i64 789, ptr @.str.1552) unreachable -ok2329: +ok2576: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21 %t13 = load { ptr, i64, i64 }, ptr %t12 %t14 = load { ptr, i64, i64 }, ptr %a9 %t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14) - br i1 %t15, label %then2330, label %endif2332 -then2330: + br i1 %t15, label %then2577, label %endif2579 +then2577: %t16 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t16, ptr %a17 call void @finch_str_copy(ptr %a18, ptr %a17) %t19 = load { ptr, i64, i64 }, ptr %a18 ret { ptr, i64, i64 } %t19 -endif2332: +endif2579: %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2333, label %ok2334 -panic2333: - call void @finch_panic(ptr @.str.1376, i64 673, ptr @.str.1377) + br i1 %t21, label %panic2580, label %ok2581 +panic2580: + call void @finch_panic(ptr @.str.1553, i64 792, ptr @.str.1554) unreachable -ok2334: +ok2581: %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %a9 @@ -22193,20 +25702,20 @@ ok2334: %t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t36 = load { ptr, i64, i64 }, ptr %t35 store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1378, i64 5, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1555, i64 5, i64 0 }, ptr %a38 %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2335, label %else2336 -then2335: + br i1 %t40, label %then2582, label %else2583 +then2582: %t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t42 = load { ptr, i64, i64 }, ptr %t41 %t43 = extractvalue { ptr, i64, i64 } %t42, 1 %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range2338, label %inrange2339 -range2338: - call void @finch_panic_index(ptr @.str.1379, i64 676, i64 0, i64 %t43) + br i1 %t44, label %range2585, label %inrange2586 +range2585: + call void @finch_panic_index(ptr @.str.1556, i64 795, i64 0, i64 %t43) unreachable -inrange2339: +inrange2586: %t45 = extractvalue { ptr, i64, i64 } %t42, 0 %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 %t47 = load %S.ast.Type, ptr %t46 @@ -22218,30 +25727,30 @@ inrange2339: %t53 = load ptr, ptr %a1 %t54 = load %S.ast.Type, ptr %a51 %t55 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t53, %S.ast.Type %t54) - store { ptr, i64, i64 } { ptr @.str.1380, i64 55, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1557, i64 55, i64 0 }, ptr %a57 store { ptr, i64, i64 } %t55, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1381, i64 1, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.1558, i64 1, i64 0 }, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 call void @finch.gen.emit(ptr %t52, { ptr, i64, i64 } %t63) %t64 = load ptr, ptr %a1 %t65 = load %S.ast.Type, ptr %a51 %t66 = call i1 @finch.gen.owning(ptr %t64, %S.ast.Type %t65) - br i1 %t66, label %then2340, label %endif2342 -then2340: + br i1 %t66, label %then2587, label %endif2589 +then2587: %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t67, { ptr, i64, i64 } { ptr @.str.1382, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1383, i64 4, i64 0 }) + %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t67, { ptr, i64, i64 } { ptr @.str.1559, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1560, i64 4, i64 0 }) store { ptr, i64, i64 } %t68, ptr %a69 %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.load(ptr %t70, { ptr, i64, i64 } { ptr @.str.1384, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }) + %t71 = call { ptr, i64, i64 } @finch.gen.load(ptr %t70, { ptr, i64, i64 } { ptr @.str.1561, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1562, i64 4, i64 0 }) store { ptr, i64, i64 } %t71, ptr %a72 %t73 = load ptr, ptr %a1 %t74 = load ptr, ptr %a1 - %t75 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } { ptr @.str.1387, i64 64, i64 0 }) - %t76 = call { ptr, i64, i64 } @finch.gen.load(ptr %t73, { ptr, i64, i64 } { ptr @.str.1386, i64 3, i64 0 }, { ptr, i64, i64 } %t75) + %t75 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } { ptr @.str.1564, i64 64, i64 0 }) + %t76 = call { ptr, i64, i64 } @finch.gen.load(ptr %t73, { ptr, i64, i64 } { ptr @.str.1563, i64 3, i64 0 }, { ptr, i64, i64 } %t75) store { ptr, i64, i64 } %t76, ptr %a77 %t78 = load ptr, ptr %a1 %t79 = load { ptr, i64, i64 }, ptr %a77 @@ -22251,12 +25760,12 @@ then2340: %t83 = load ptr, ptr %a1 %t84 = load %S.ast.Type, ptr %a51 %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } { ptr @.str.1388, i64 23, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1565, i64 23, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1389, i64 6, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.1566, i64 6, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 %t94 = load { ptr, i64, i64 }, ptr %a69 @@ -22265,17 +25774,17 @@ then2340: call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) %t98 = load { ptr, i64, i64 }, ptr %a95 store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1390, i64 6, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.1567, i64 6, i64 0 }, ptr %a101 call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 %t103 = load { ptr, i64, i64 }, ptr %a81 %t104 = extractvalue { ptr, i64, i64 } %t103, 1 %t105 = icmp uge i64 3, %t104 - br i1 %t105, label %range2343, label %inrange2344 -range2343: - call void @finch_panic_index(ptr @.str.1391, i64 683, i64 3, i64 %t104) + br i1 %t105, label %range2590, label %inrange2591 +range2590: + call void @finch_panic_index(ptr @.str.1568, i64 802, i64 3, i64 %t104) unreachable -inrange2344: +inrange2591: %t106 = extractvalue { ptr, i64, i64 } %t103, 0 %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 3 %t108 = load { ptr, i64, i64 }, ptr %t107 @@ -22289,12 +25798,12 @@ inrange2344: %t116 = load ptr, ptr %a1 %t117 = load %S.ast.Type, ptr %a51 %t118 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t116, %S.ast.Type %t117) - store { ptr, i64, i64 } { ptr @.str.1392, i64 23, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.1569, i64 23, i64 0 }, ptr %a120 store { ptr, i64, i64 } %t118, ptr %a121 call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) %t122 = load { ptr, i64, i64 }, ptr %a119 store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.1393, i64 6, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.1570, i64 6, i64 0 }, ptr %a125 call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) %t126 = load { ptr, i64, i64 }, ptr %a123 %t127 = load { ptr, i64, i64 }, ptr %a72 @@ -22303,17 +25812,17 @@ inrange2344: call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) %t131 = load { ptr, i64, i64 }, ptr %a128 store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1394, i64 6, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.1571, i64 6, i64 0 }, ptr %a134 call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 %t136 = load { ptr, i64, i64 }, ptr %a81 %t137 = extractvalue { ptr, i64, i64 } %t136, 1 %t138 = icmp uge i64 3, %t137 - br i1 %t138, label %range2345, label %inrange2346 -range2345: - call void @finch_panic_index(ptr @.str.1395, i64 684, i64 3, i64 %t137) + br i1 %t138, label %range2592, label %inrange2593 +range2592: + call void @finch_panic_index(ptr @.str.1572, i64 803, i64 3, i64 %t137) unreachable -inrange2346: +inrange2593: %t139 = extractvalue { ptr, i64, i64 } %t136, 0 %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 3 %t141 = load { ptr, i64, i64 }, ptr %t140 @@ -22331,28 +25840,28 @@ inrange2346: %t152 = load ptr, ptr %a1 %t153 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.loopEnd(ptr %t152, { ptr, i64, i64 } %t153) - br label %endif2342 -endif2342: - br label %endif2337 -else2336: + br label %endif2589 +endif2589: + br label %endif2584 +else2583: %t154 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t155 = load { ptr, i64, i64 }, ptr %t154 store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.1396, i64 3, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1573, i64 3, i64 0 }, ptr %a157 %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) %t159 = icmp ne i32 %t158, 0 - br i1 %t159, label %then2347, label %else2348 -then2347: + br i1 %t159, label %then2594, label %else2595 +then2594: %t160 = load ptr, ptr %a1 %t161 = load ptr, ptr %a1 %t162 = load %S.ast.Type, ptr %a2 %t163 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t161, %S.ast.Type %t162) - store { ptr, i64, i64 } { ptr @.str.1397, i64 55, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.1574, i64 55, i64 0 }, ptr %a165 store { ptr, i64, i64 } %t163, ptr %a166 call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) %t167 = load { ptr, i64, i64 }, ptr %a164 store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.1398, i64 1, i64 0 }, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.1575, i64 1, i64 0 }, ptr %a170 call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) %t171 = load { ptr, i64, i64 }, ptr %a168 call void @finch.gen.emit(ptr %t160, { ptr, i64, i64 } %t171) @@ -22361,55 +25870,55 @@ then2347: %t174 = load { ptr, i64, i64 }, ptr %t173 %t175 = extractvalue { ptr, i64, i64 } %t174, 1 %t176 = icmp uge i64 0, %t175 - br i1 %t176, label %range2350, label %inrange2351 -range2350: - call void @finch_panic_index(ptr @.str.1399, i64 690, i64 0, i64 %t175) + br i1 %t176, label %range2597, label %inrange2598 +range2597: + call void @finch_panic_index(ptr @.str.1576, i64 809, i64 0, i64 %t175) unreachable -inrange2351: +inrange2598: %t177 = extractvalue { ptr, i64, i64 } %t174, 0 %t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i64 0 %t179 = load %S.ast.Type, ptr %t178 %t180 = call i1 @finch.gen.owning(ptr %t172, %S.ast.Type %t179) - br label %logic.from2352 -logic.from2352: - br i1 %t180, label %logic.end2354, label %logic.rhs2353 -logic.rhs2353: + br label %logic.from2599 +logic.from2599: + br i1 %t180, label %logic.end2601, label %logic.rhs2600 +logic.rhs2600: %t181 = load ptr, ptr %a1 %t182 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t183 = load { ptr, i64, i64 }, ptr %t182 %t184 = extractvalue { ptr, i64, i64 } %t183, 1 %t185 = icmp uge i64 1, %t184 - br i1 %t185, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1400, i64 690, i64 1, i64 %t184) + br i1 %t185, label %range2602, label %inrange2603 +range2602: + call void @finch_panic_index(ptr @.str.1577, i64 809, i64 1, i64 %t184) unreachable -inrange2356: +inrange2603: %t186 = extractvalue { ptr, i64, i64 } %t183, 0 %t187 = getelementptr inbounds %S.ast.Type, ptr %t186, i64 1 %t188 = load %S.ast.Type, ptr %t187 %t189 = call i1 @finch.gen.owning(ptr %t181, %S.ast.Type %t188) - br label %logic.rend2357 -logic.rend2357: - br label %logic.end2354 -logic.end2354: - %t190 = phi i1 [ true, %logic.from2352 ], [ %t189, %logic.rend2357 ] - br i1 %t190, label %then2358, label %endif2360 -then2358: + br label %logic.rend2604 +logic.rend2604: + br label %logic.end2601 +logic.end2601: + %t190 = phi i1 [ true, %logic.from2599 ], [ %t189, %logic.rend2604 ] + br i1 %t190, label %then2605, label %endif2607 +then2605: %t191 = load ptr, ptr %a1 %t192 = load ptr, ptr %a1 %t193 = load ptr, ptr %a1 %t194 = load %S.ast.Type, ptr %a2 %t195 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t193, %S.ast.Type %t194) - store { ptr, i64, i64 } { ptr @.str.1402, i64 23, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.1579, i64 23, i64 0 }, ptr %a197 store { ptr, i64, i64 } %t195, ptr %a198 call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1403, i64 24, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.1580, i64 24, i64 0 }, ptr %a202 call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t203) - %t205 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } { ptr @.str.1401, i64 3, i64 0 }, { ptr, i64, i64 } %t204) + %t205 = call { ptr, i64, i64 } @finch.gen.load(ptr %t191, { ptr, i64, i64 } { ptr @.str.1578, i64 3, i64 0 }, { ptr, i64, i64 } %t204) store { ptr, i64, i64 } %t205, ptr %a206 %t207 = load ptr, ptr %a1 %t208 = load { ptr, i64, i64 }, ptr %a206 @@ -22420,36 +25929,36 @@ then2358: %t213 = load { ptr, i64, i64 }, ptr %a210 %t214 = extractvalue { ptr, i64, i64 } %t213, 1 %t215 = icmp uge i64 3, %t214 - br i1 %t215, label %range2361, label %inrange2362 -range2361: - call void @finch_panic_index(ptr @.str.1405, i64 694, i64 3, i64 %t214) + br i1 %t215, label %range2608, label %inrange2609 +range2608: + call void @finch_panic_index(ptr @.str.1582, i64 813, i64 3, i64 %t214) unreachable -inrange2362: +inrange2609: %t216 = extractvalue { ptr, i64, i64 } %t213, 0 %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 3 %t218 = load { ptr, i64, i64 }, ptr %t217 - %t219 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t211, { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 }, %S.ast.Type %t212, { ptr, i64, i64 } %t218) + %t219 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t211, { ptr, i64, i64 } { ptr @.str.1581, i64 4, i64 0 }, %S.ast.Type %t212, { ptr, i64, i64 } %t218) store { ptr, i64, i64 } %t219, ptr %a220 %t221 = load ptr, ptr %a1 %t222 = load %S.ast.Type, ptr %a2 %t223 = load { ptr, i64, i64 }, ptr %a210 %t224 = extractvalue { ptr, i64, i64 } %t223, 1 %t225 = icmp uge i64 3, %t224 - br i1 %t225, label %range2363, label %inrange2364 -range2363: - call void @finch_panic_index(ptr @.str.1407, i64 695, i64 3, i64 %t224) + br i1 %t225, label %range2610, label %inrange2611 +range2610: + call void @finch_panic_index(ptr @.str.1584, i64 814, i64 3, i64 %t224) unreachable -inrange2364: +inrange2611: %t226 = extractvalue { ptr, i64, i64 } %t223, 0 %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t221, { ptr, i64, i64 } { ptr @.str.1406, i64 4, i64 0 }, %S.ast.Type %t222, { ptr, i64, i64 } %t228) + %t229 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t221, { ptr, i64, i64 } { ptr @.str.1583, i64 4, i64 0 }, %S.ast.Type %t222, { ptr, i64, i64 } %t228) store { ptr, i64, i64 } %t229, ptr %a230 %t231 = load ptr, ptr %a1 - %t232 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t231, { ptr, i64, i64 } { ptr @.str.1408, i64 10, i64 0 }) + %t232 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t231, { ptr, i64, i64 } { ptr @.str.1585, i64 10, i64 0 }) store { ptr, i64, i64 } %t232, ptr %a233 %t234 = load ptr, ptr %a1 - %t235 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t234, { ptr, i64, i64 } { ptr @.str.1409, i64 10, i64 0 }) + %t235 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t234, { ptr, i64, i64 } { ptr @.str.1586, i64 10, i64 0 }) store { ptr, i64, i64 } %t235, ptr %a236 %t237 = load ptr, ptr %a1 %t238 = load ptr, ptr %a1 @@ -22458,12 +25967,12 @@ inrange2364: %t241 = load ptr, ptr %a1 %t242 = load %S.ast.Type, ptr %a2 %t243 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t241, %S.ast.Type %t242) - store { ptr, i64, i64 } { ptr @.str.1412, i64 23, i64 0 }, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.1589, i64 23, i64 0 }, ptr %a245 store { ptr, i64, i64 } %t243, ptr %a246 call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) %t247 = load { ptr, i64, i64 }, ptr %a244 store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.1413, i64 6, i64 0 }, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.1590, i64 6, i64 0 }, ptr %a250 call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) %t251 = load { ptr, i64, i64 }, ptr %a248 %t252 = load { ptr, i64, i64 }, ptr %a220 @@ -22472,17 +25981,17 @@ inrange2364: call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1414, i64 14, i64 0 }, ptr %a259 + store { ptr, i64, i64 } { ptr @.str.1591, i64 14, i64 0 }, ptr %a259 call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) %t260 = load { ptr, i64, i64 }, ptr %a257 %t261 = call { ptr, i64, i64 } @finch.gen.op(ptr %t240, { ptr, i64, i64 } %t260) - %t262 = call { ptr, i64, i64 } @finch.gen.load(ptr %t239, { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } { ptr @.str.1410, i64 12, i64 0 }, ptr %a264 + %t262 = call { ptr, i64, i64 } @finch.gen.load(ptr %t239, { ptr, i64, i64 } { ptr @.str.1588, i64 3, i64 0 }, { ptr, i64, i64 } %t261) + store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a264 store { ptr, i64, i64 } %t262, ptr %a265 call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.1415, i64 3, i64 0 }, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.1592, i64 3, i64 0 }, ptr %a269 call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) %t270 = load { ptr, i64, i64 }, ptr %a267 %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t238, { ptr, i64, i64 } %t270) @@ -22505,11 +26014,11 @@ inrange2364: %t286 = load { ptr, i64, i64 }, ptr %t285 %t287 = extractvalue { ptr, i64, i64 } %t286, 1 %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1416, i64 700, i64 0, i64 %t287) + br i1 %t288, label %range2612, label %inrange2613 +range2612: + call void @finch_panic_index(ptr @.str.1593, i64 819, i64 0, i64 %t287) unreachable -inrange2366: +inrange2613: %t289 = extractvalue { ptr, i64, i64 } %t286, 0 %t290 = getelementptr inbounds %S.ast.Type, ptr %t289, i64 0 %t291 = load %S.ast.Type, ptr %t290 @@ -22527,11 +26036,11 @@ inrange2366: %t302 = load { ptr, i64, i64 }, ptr %t301 %t303 = extractvalue { ptr, i64, i64 } %t302, 1 %t304 = icmp uge i64 1, %t303 - br i1 %t304, label %range2367, label %inrange2368 -range2367: - call void @finch_panic_index(ptr @.str.1417, i64 701, i64 1, i64 %t303) + br i1 %t304, label %range2614, label %inrange2615 +range2614: + call void @finch_panic_index(ptr @.str.1594, i64 820, i64 1, i64 %t303) unreachable -inrange2368: +inrange2615: %t305 = extractvalue { ptr, i64, i64 } %t302, 0 %t306 = getelementptr inbounds %S.ast.Type, ptr %t305, i64 1 %t307 = load %S.ast.Type, ptr %t306 @@ -22545,17 +26054,17 @@ inrange2368: %t312 = load ptr, ptr %a1 %t313 = load { ptr, i64, i64 }, ptr %a210 call void @finch.gen.loopEnd(ptr %t312, { ptr, i64, i64 } %t313) - br label %endif2360 -endif2360: - br label %endif2349 -else2348: + br label %endif2607 +endif2607: + br label %endif2596 +else2595: %t314 = load ptr, ptr %a1 %t315 = icmp eq ptr %t314, null - br i1 %t315, label %panic2369, label %ok2370 -panic2369: - call void @finch_panic(ptr @.str.1418, i64 707, ptr @.str.1419) + br i1 %t315, label %panic2616, label %ok2617 +panic2616: + call void @finch_panic(ptr @.str.1595, i64 826, ptr @.str.1596) unreachable -ok2370: +ok2617: %t316 = getelementptr inbounds %S.gen.Gen, ptr %t314, i32 0, i32 15 %t317 = load ptr, ptr %a1 %t318 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -22566,11 +26075,11 @@ ok2370: %t323 = load { ptr, i64, i64 }, ptr %t316 %t324 = extractvalue { ptr, i64, i64 } %t323, 1 %t325 = icmp uge i64 %t322, %t324 - br i1 %t325, label %range2371, label %inrange2372 -range2371: - call void @finch_panic_index(ptr @.str.1420, i64 707, i64 %t322, i64 %t324) + br i1 %t325, label %range2618, label %inrange2619 +range2618: + call void @finch_panic_index(ptr @.str.1597, i64 826, i64 %t322, i64 %t324) unreachable -inrange2372: +inrange2619: %t326 = extractvalue { ptr, i64, i64 } %t323, 0 %t327 = getelementptr inbounds %S.gen.StructDef, ptr %t326, i64 %t322 %t328 = load %S.gen.StructDef, ptr %t327 @@ -22586,43 +26095,43 @@ inrange2372: %t338 = load { ptr, i64, i64 }, ptr %a336 %t339 = load ptr, ptr %a1 %t340 = load { ptr, i64, i64 }, ptr %a336 - %t341 = call { ptr, i64, i64 } @finch.gen.load(ptr %t339, { ptr, i64, i64 } %t340, { ptr, i64, i64 } { ptr @.str.1421, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t337, { ptr, i64, i64 } %t338, { ptr, i64, i64 } %t341, { ptr, i64, i64 } { ptr @.str.1422, i64 4, i64 0 }) + %t341 = call { ptr, i64, i64 } @finch.gen.load(ptr %t339, { ptr, i64, i64 } %t340, { ptr, i64, i64 } { ptr @.str.1598, i64 4, i64 0 }) + call void @finch.gen.store(ptr %t337, { ptr, i64, i64 } %t338, { ptr, i64, i64 } %t341, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) %t342 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12 %t343 = getelementptr inbounds { ptr, i64, i64 }, ptr %t342, i32 0, i32 1 %t344 = load i64, ptr %t343 store i64 0, ptr %a345 - br label %for.cond2373 -for.cond2373: + br label %for.cond2620 +for.cond2620: %t346 = load i64, ptr %a345 %t347 = icmp slt i64 %t346, %t344 - br i1 %t347, label %for.body2374, label %for.end2376 -for.body2374: + br i1 %t347, label %for.body2621, label %for.end2623 +for.body2621: %t348 = load ptr, ptr %a1 %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 12 %t350 = load i64, ptr %a345 %t351 = load { ptr, i64, i64 }, ptr %t349 %t352 = extractvalue { ptr, i64, i64 } %t351, 1 %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range2377, label %inrange2378 -range2377: - call void @finch_panic_index(ptr @.str.1423, i64 711, i64 %t350, i64 %t352) + br i1 %t353, label %range2624, label %inrange2625 +range2624: + call void @finch_panic_index(ptr @.str.1600, i64 830, i64 %t350, i64 %t352) unreachable -inrange2378: +inrange2625: %t354 = extractvalue { ptr, i64, i64 } %t351, 0 %t355 = getelementptr inbounds %S.ast.Type, ptr %t354, i64 %t350 %t356 = load %S.ast.Type, ptr %t355 %t357 = call i1 @finch.gen.owning(ptr %t348, %S.ast.Type %t356) - br i1 %t357, label %then2379, label %endif2381 -then2379: + br i1 %t357, label %then2626, label %endif2628 +then2626: %t358 = load ptr, ptr %a1 %t359 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.1424, i64 23, i64 0 }, ptr %a361 + store { ptr, i64, i64 } { ptr @.str.1601, i64 23, i64 0 }, ptr %a361 store { ptr, i64, i64 } %t359, ptr %a362 call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) %t363 = load { ptr, i64, i64 }, ptr %a360 store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.1425, i64 23, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a366 call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) %t367 = load { ptr, i64, i64 }, ptr %a364 %t368 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 3 @@ -22630,11 +26139,11 @@ then2379: %t370 = load { ptr, i64, i64 }, ptr %t368 %t371 = extractvalue { ptr, i64, i64 } %t370, 1 %t372 = icmp uge i64 %t369, %t371 - br i1 %t372, label %range2382, label %inrange2383 -range2382: - call void @finch_panic_index(ptr @.str.1426, i64 712, i64 %t369, i64 %t371) + br i1 %t372, label %range2629, label %inrange2630 +range2629: + call void @finch_panic_index(ptr @.str.1603, i64 831, i64 %t369, i64 %t371) unreachable -inrange2383: +inrange2630: %t373 = extractvalue { ptr, i64, i64 } %t370, 0 %t374 = getelementptr inbounds i64, ptr %t373, i64 %t369 %t375 = load i64, ptr %t374 @@ -22648,12 +26157,12 @@ inrange2383: store { ptr, i64, i64 } %t382, ptr %a383 %t384 = load ptr, ptr %a1 %t385 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.1427, i64 23, i64 0 }, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.1604, i64 23, i64 0 }, ptr %a387 store { ptr, i64, i64 } %t385, ptr %a388 call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) %t389 = load { ptr, i64, i64 }, ptr %a386 store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } { ptr @.str.1428, i64 23, i64 0 }, ptr %a392 + store { ptr, i64, i64 } { ptr @.str.1605, i64 23, i64 0 }, ptr %a392 call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) %t393 = load { ptr, i64, i64 }, ptr %a390 %t394 = getelementptr inbounds %S.gen.StructDef, ptr %a332, i32 0, i32 3 @@ -22661,11 +26170,11 @@ inrange2383: %t396 = load { ptr, i64, i64 }, ptr %t394 %t397 = extractvalue { ptr, i64, i64 } %t396, 1 %t398 = icmp uge i64 %t395, %t397 - br i1 %t398, label %range2384, label %inrange2385 -range2384: - call void @finch_panic_index(ptr @.str.1429, i64 713, i64 %t395, i64 %t397) + br i1 %t398, label %range2631, label %inrange2632 +range2631: + call void @finch_panic_index(ptr @.str.1606, i64 832, i64 %t395, i64 %t397) unreachable -inrange2385: +inrange2632: %t399 = extractvalue { ptr, i64, i64 } %t396, 0 %t400 = getelementptr inbounds i64, ptr %t399, i64 %t395 %t401 = load i64, ptr %t400 @@ -22685,39 +26194,39 @@ inrange2385: %t415 = load { ptr, i64, i64 }, ptr %t413 %t416 = extractvalue { ptr, i64, i64 } %t415, 1 %t417 = icmp uge i64 %t414, %t416 - br i1 %t417, label %range2386, label %inrange2387 -range2386: - call void @finch_panic_index(ptr @.str.1430, i64 714, i64 %t414, i64 %t416) + br i1 %t417, label %range2633, label %inrange2634 +range2633: + call void @finch_panic_index(ptr @.str.1607, i64 833, i64 %t414, i64 %t416) unreachable -inrange2387: +inrange2634: %t418 = extractvalue { ptr, i64, i64 } %t415, 0 %t419 = getelementptr inbounds %S.ast.Type, ptr %t418, i64 %t414 %t420 = load %S.ast.Type, ptr %t419 call void @finch.gen.copyAt(ptr %t410, { ptr, i64, i64 } %t411, { ptr, i64, i64 } %t412, %S.ast.Type %t420) - br label %endif2381 -endif2381: - br label %for.step2375 -for.step2375: + br label %endif2628 +endif2628: + br label %for.step2622 +for.step2622: %t421 = load i64, ptr %a345 %t422 = add i64 %t421, 1 store i64 %t422, ptr %a345 - br label %for.cond2373 -for.end2376: - br label %endif2349 -endif2349: - br label %endif2337 -endif2337: + br label %for.cond2620 +for.end2623: + br label %endif2596 +endif2596: + br label %endif2584 +endif2584: %t423 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t423, { ptr, i64, i64 } { ptr @.str.1431, i64 8, i64 0 }) + call void @finch.gen.emit(ptr %t423, { ptr, i64, i64 } { ptr @.str.1608, i64 8, i64 0 }) %t424 = load ptr, ptr %a1 %t425 = load %S.gen.Saved, ptr %a34 %t426 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1432, i64 21, i64 0 }, ptr %a428 + store { ptr, i64, i64 } { ptr @.str.1609, i64 21, i64 0 }, ptr %a428 store { ptr, i64, i64 } %t426, ptr %a429 call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429) %t430 = load { ptr, i64, i64 }, ptr %a427 store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.1433, i64 20, i64 0 }, ptr %a433 + store { ptr, i64, i64 } { ptr @.str.1610, i64 20, i64 0 }, ptr %a433 call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) %t434 = load { ptr, i64, i64 }, ptr %a431 call void @finch.gen.endHelper(ptr %t424, %S.gen.Saved %t425, { ptr, i64, i64 } %t434) @@ -22748,14 +26257,14 @@ entry: %t5 = load %S.ast.Type, ptr %a3 %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) %t7 = xor i1 %t6, true - br i1 %t7, label %then2388, label %endif2390 -then2388: + br i1 %t7, label %then2635, label %endif2637 +then2635: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a9 call void @finch_str_copy(ptr %a10, ptr %a9) %t11 = load { ptr, i64, i64 }, ptr %a10 ret { ptr, i64, i64 } %t11 -endif2390: +endif2637: %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t13, ptr %a14 @@ -22802,26 +26311,26 @@ entry: %t5 = load %S.ast.Type, ptr %t4 %t6 = call i1 @finch.gen.owning(ptr %t3, %S.ast.Type %t5) %t7 = xor i1 %t6, true - br label %logic.from2391 -logic.from2391: - br i1 %t7, label %logic.end2393, label %logic.rhs2392 -logic.rhs2392: + br label %logic.from2638 +logic.from2638: + br i1 %t7, label %logic.end2640, label %logic.rhs2639 +logic.rhs2639: %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 %t9 = load i1, ptr %t8 - br label %logic.rend2394 -logic.rend2394: - br label %logic.end2393 -logic.end2393: - %t10 = phi i1 [ true, %logic.from2391 ], [ %t9, %logic.rend2394 ] - br i1 %t10, label %then2395, label %endif2397 -then2395: + br label %logic.rend2641 +logic.rend2641: + br label %logic.end2640 +logic.end2640: + %t10 = phi i1 [ true, %logic.from2638 ], [ %t9, %logic.rend2641 ] + br i1 %t10, label %then2642, label %endif2644 +then2642: %t11 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t12 = load { ptr, i64, i64 }, ptr %t11 store { ptr, i64, i64 } %t12, ptr %a13 call void @finch_str_copy(ptr %a14, ptr %a13) %t15 = load { ptr, i64, i64 }, ptr %a14 ret { ptr, i64, i64 } %t15 -endif2397: +endif2644: %t16 = load ptr, ptr %a1 %t17 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 @@ -22864,24 +26373,24 @@ entry: %t8 = load ptr, ptr %a1 %t9 = call { ptr, i64, i64 } @finch.gen.tmpName(ptr %t8) store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, i64 0, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1611, i64 0, i64 0 }, ptr %a11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = icmp sgt i64 %t13, 0 - br i1 %t14, label %then2398, label %endif2400 -then2398: + br i1 %t14, label %then2645, label %endif2647 +then2645: %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1435, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1612, i64 2, i64 0 }, ptr %a17 store { ptr, i64, i64 } %t15, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a11 - br label %endif2400 -endif2400: + br label %endif2647 +endif2647: %t20 = load ptr, ptr %a1 %t21 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1436, i64 35, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1613, i64 35, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load { ptr, i64, i64 }, ptr %a7 @@ -22895,7 +26404,7 @@ endif2400: call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1614, i64 1, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 call void @finch.gen.emit(ptr %t20, { ptr, i64, i64 } %t39) @@ -22940,39 +26449,39 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1438, i64 31, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1615, i64 31, i64 0 }, ptr %a6 store { ptr, i64, i64 } %t4, ptr %a7 call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) %t8 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1439, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.1616, i64 3, i64 0 }, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 %t13 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t12) store { ptr, i64, i64 } %t13, ptr %a14 %t15 = load ptr, ptr %a1 %t16 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1440, i64 12, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1617, i64 12, i64 0 }, ptr %a18 store { ptr, i64, i64 } %t16, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t20, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1441, i64 6, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1618, i64 6, i64 0 }, ptr %a23 call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) %t24 = load { ptr, i64, i64 }, ptr %a21 %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t15, { ptr, i64, i64 } %t24) store { ptr, i64, i64 } %t25, ptr %a26 %t27 = load ptr, ptr %a1 - %t28 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t27, { ptr, i64, i64 } { ptr @.str.1442, i64 0, i64 0 }) + %t28 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t27, { ptr, i64, i64 } { ptr @.str.1619, i64 0, i64 0 }) store { ptr, i64, i64 } %t28, ptr %a29 %t30 = load ptr, ptr %a1 %t31 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1443, i64 10, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.1620, i64 10, i64 0 }, ptr %a33 store { ptr, i64, i64 } %t31, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1444, i64 6, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1621, i64 6, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 %t40 = load { ptr, i64, i64 }, ptr %a29 @@ -22981,7 +26490,7 @@ entry: call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.1445, i64 6, i64 0 }, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.1622, i64 6, i64 0 }, ptr %a47 call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) %t48 = load { ptr, i64, i64 }, ptr %a45 %t49 = load { ptr, i64, i64 }, ptr %a14 @@ -23126,118 +26635,118 @@ entry: store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load %S.ast.Type, ptr %a3 %t12 = call i1 @finch.gen.isSigned(%S.ast.Type %t11) - br i1 %t12, label %then2401, label %else2402 -then2401: + br i1 %t12, label %then2648, label %else2649 +then2648: %t13 = load ptr, ptr %a1 %t14 = load ptr, ptr %a1 %t15 = load { ptr, i64, i64 }, ptr %a2 %t16 = load %S.ast.Type, ptr %a3 - %t17 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1448, i64 3, i64 0 }) + %t17 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }) %t18 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t14, { ptr, i64, i64 } %t15, %S.ast.Type %t16, %S.ast.Type %t17) - store { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.1624, i64 4, i64 0 }, ptr %a20 store { ptr, i64, i64 } %t18, ptr %a21 call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1446, i64 4, i64 0 }, { ptr, i64, i64 } %t22) - br label %endif2403 -else2402: + call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1623, i64 4, i64 0 }, { ptr, i64, i64 } %t22) + br label %endif2650 +else2649: %t23 = load %S.ast.Type, ptr %a3 %t24 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t23) - br i1 %t24, label %then2404, label %else2405 -then2404: + br i1 %t24, label %then2651, label %else2652 +then2651: %t25 = load ptr, ptr %a1 %t26 = load ptr, ptr %a1 %t27 = load { ptr, i64, i64 }, ptr %a2 %t28 = load %S.ast.Type, ptr %a3 - %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1451, i64 3, i64 0 }) + %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1628, i64 3, i64 0 }) %t30 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t26, { ptr, i64, i64 } %t27, %S.ast.Type %t28, %S.ast.Type %t29) - store { ptr, i64, i64 } { ptr @.str.1450, i64 4, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1627, i64 4, i64 0 }, ptr %a32 store { ptr, i64, i64 } %t30, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.printf(ptr %t25, { ptr, i64, i64 } { ptr @.str.1449, i64 4, i64 0 }, { ptr, i64, i64 } %t34) - br label %endif2406 -else2405: + call void @finch.gen.printf(ptr %t25, { ptr, i64, i64 } { ptr @.str.1626, i64 4, i64 0 }, { ptr, i64, i64 } %t34) + br label %endif2653 +else2652: %t35 = load %S.ast.Type, ptr %a3 %t36 = call i1 @finch.gen.isFloat(%S.ast.Type %t35) - br i1 %t36, label %then2407, label %else2408 -then2407: + br i1 %t36, label %then2654, label %else2655 +then2654: %t37 = load ptr, ptr %a1 %t38 = load ptr, ptr %a1 %t39 = load { ptr, i64, i64 }, ptr %a2 %t40 = load %S.ast.Type, ptr %a3 - %t41 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1454, i64 5, i64 0 }) + %t41 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1631, i64 5, i64 0 }) %t42 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t38, { ptr, i64, i64 } %t39, %S.ast.Type %t40, %S.ast.Type %t41) - store { ptr, i64, i64 } { ptr @.str.1453, i64 7, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1630, i64 7, i64 0 }, ptr %a44 store { ptr, i64, i64 } %t42, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch.gen.printf(ptr %t37, { ptr, i64, i64 } { ptr @.str.1452, i64 2, i64 0 }, { ptr, i64, i64 } %t46) - br label %endif2409 -else2408: + call void @finch.gen.printf(ptr %t37, { ptr, i64, i64 } { ptr @.str.1629, i64 2, i64 0 }, { ptr, i64, i64 } %t46) + br label %endif2656 +else2655: %t47 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1455, i64 4, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1632, i64 4, i64 0 }, ptr %a49 %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) %t51 = icmp ne i32 %t50, 0 - br i1 %t51, label %then2410, label %else2411 -then2410: + br i1 %t51, label %then2657, label %else2658 +then2657: %t52 = load ptr, ptr %a1 %t53 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1456, i64 8, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.1633, i64 8, i64 0 }, ptr %a55 store { ptr, i64, i64 } %t53, ptr %a56 call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.1457, i64 7, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.1634, i64 7, i64 0 }, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t61) store { ptr, i64, i64 } %t62, ptr %a63 %t64 = load i1, ptr %a4 - br i1 %t64, label %then2413, label %else2414 -then2413: + br i1 %t64, label %then2660, label %else2661 +then2660: %t65 = load ptr, ptr %a1 %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1459, i64 4, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.printf(ptr %t65, { ptr, i64, i64 } { ptr @.str.1458, i64 4, i64 0 }, { ptr, i64, i64 } %t70) - br label %endif2415 -else2414: + call void @finch.gen.printf(ptr %t65, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }, { ptr, i64, i64 } %t70) + br label %endif2662 +else2661: %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1461, i64 4, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1638, i64 4, i64 0 }, ptr %a74 store { ptr, i64, i64 } %t72, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.printf(ptr %t71, { ptr, i64, i64 } { ptr @.str.1460, i64 2, i64 0 }, { ptr, i64, i64 } %t76) - br label %endif2415 -endif2415: - br label %endif2412 -else2411: + call void @finch.gen.printf(ptr %t71, { ptr, i64, i64 } { ptr @.str.1637, i64 2, i64 0 }, { ptr, i64, i64 } %t76) + br label %endif2662 +endif2662: + br label %endif2659 +else2658: %t77 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1639, i64 4, i64 0 }, ptr %a79 %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) %t81 = icmp ne i32 %t80, 0 - br i1 %t81, label %then2416, label %else2417 -then2416: + br i1 %t81, label %then2663, label %else2664 +then2663: %t82 = load ptr, ptr %a1 - %t83 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t82, { ptr, i64, i64 } { ptr @.str.1463, i64 4, i64 0 }) + %t83 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t82, { ptr, i64, i64 } { ptr @.str.1640, i64 4, i64 0 }) store { ptr, i64, i64 } %t83, ptr %a84 %t85 = load ptr, ptr %a1 - %t86 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t85, { ptr, i64, i64 } { ptr @.str.1464, i64 5, i64 0 }) + %t86 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t85, { ptr, i64, i64 } { ptr @.str.1641, i64 5, i64 0 }) store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load ptr, ptr %a1 %t89 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1465, i64 10, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1642, i64 10, i64 0 }, ptr %a91 store { ptr, i64, i64 } %t89, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1466, i64 6, i64 0 }, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.1643, i64 6, i64 0 }, ptr %a96 call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 %t98 = load { ptr, i64, i64 }, ptr %a84 @@ -23246,7 +26755,7 @@ then2416: call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1467, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.1644, i64 6, i64 0 }, ptr %a105 call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) %t106 = load { ptr, i64, i64 }, ptr %a103 %t107 = load { ptr, i64, i64 }, ptr %a87 @@ -23258,40 +26767,40 @@ then2416: store { ptr, i64, i64 } %t112, ptr %a113 %t114 = load ptr, ptr %a1 %t115 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1469, i64 4, i64 0 }, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.1646, i64 4, i64 0 }, ptr %a117 store { ptr, i64, i64 } %t115, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 - call void @finch.gen.printf(ptr %t114, { ptr, i64, i64 } { ptr @.str.1468, i64 2, i64 0 }, { ptr, i64, i64 } %t119) - br label %endif2418 -else2417: + call void @finch.gen.printf(ptr %t114, { ptr, i64, i64 } { ptr @.str.1645, i64 2, i64 0 }, { ptr, i64, i64 } %t119) + br label %endif2665 +else2664: %t120 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1470, i64 3, i64 0 }, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.1647, i64 3, i64 0 }, ptr %a122 %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then2419, label %else2420 -then2419: + br i1 %t124, label %then2666, label %else2667 +then2666: %t125 = load ptr, ptr %a1 %t126 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1471, i64 31, i64 0 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.1648, i64 31, i64 0 }, ptr %a128 store { ptr, i64, i64 } %t126, ptr %a129 call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1472, i64 3, i64 0 }, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.1649, i64 3, i64 0 }, ptr %a133 call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) %t134 = load { ptr, i64, i64 }, ptr %a131 %t135 = call { ptr, i64, i64 } @finch.gen.op(ptr %t125, { ptr, i64, i64 } %t134) store { ptr, i64, i64 } %t135, ptr %a136 %t137 = load ptr, ptr %a1 %t138 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.1473, i64 10, i64 0 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1650, i64 10, i64 0 }, ptr %a140 store { ptr, i64, i64 } %t138, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1474, i64 7, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.1651, i64 7, i64 0 }, ptr %a145 call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) %t146 = load { ptr, i64, i64 }, ptr %a143 %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t137, { ptr, i64, i64 } %t146) @@ -23301,16 +26810,16 @@ then2419: %t151 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t149, { ptr, i64, i64 } %t150) store { ptr, i64, i64 } %t151, ptr %a152 %t153 = load i1, ptr %a4 - br i1 %t153, label %then2422, label %else2423 -then2422: + br i1 %t153, label %then2669, label %else2670 +then2669: %t154 = load ptr, ptr %a1 %t155 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.1476, i64 4, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.1653, i64 4, i64 0 }, ptr %a157 store { ptr, i64, i64 } %t155, ptr %a158 call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) %t159 = load { ptr, i64, i64 }, ptr %a156 store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.1477, i64 6, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.1654, i64 6, i64 0 }, ptr %a162 call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) %t163 = load { ptr, i64, i64 }, ptr %a160 %t164 = load { ptr, i64, i64 }, ptr %a152 @@ -23318,17 +26827,17 @@ then2422: store { ptr, i64, i64 } %t164, ptr %a167 call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) %t168 = load { ptr, i64, i64 }, ptr %a165 - call void @finch.gen.printf(ptr %t154, { ptr, i64, i64 } { ptr @.str.1475, i64 6, i64 0 }, { ptr, i64, i64 } %t168) - br label %endif2424 -else2423: + call void @finch.gen.printf(ptr %t154, { ptr, i64, i64 } { ptr @.str.1652, i64 6, i64 0 }, { ptr, i64, i64 } %t168) + br label %endif2671 +else2670: %t169 = load ptr, ptr %a1 %t170 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.1479, i64 4, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.1656, i64 4, i64 0 }, ptr %a172 store { ptr, i64, i64 } %t170, ptr %a173 call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.1480, i64 6, i64 0 }, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.1657, i64 6, i64 0 }, ptr %a177 call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) %t178 = load { ptr, i64, i64 }, ptr %a175 %t179 = load { ptr, i64, i64 }, ptr %a152 @@ -23336,38 +26845,38 @@ else2423: store { ptr, i64, i64 } %t179, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 - call void @finch.gen.printf(ptr %t169, { ptr, i64, i64 } { ptr @.str.1478, i64 4, i64 0 }, { ptr, i64, i64 } %t183) - br label %endif2424 -endif2424: - br label %endif2421 -else2420: + call void @finch.gen.printf(ptr %t169, { ptr, i64, i64 } { ptr @.str.1655, i64 4, i64 0 }, { ptr, i64, i64 } %t183) + br label %endif2671 +endif2671: + br label %endif2668 +else2667: %t184 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.1481, i64 3, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.1658, i64 3, i64 0 }, ptr %a186 %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) %t188 = icmp ne i32 %t187, 0 - br i1 %t188, label %then2425, label %else2426 -then2425: + br i1 %t188, label %then2672, label %else2673 +then2672: %t189 = load ptr, ptr %a1 %t190 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1482, i64 12, i64 0 }, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.1659, i64 12, i64 0 }, ptr %a192 store { ptr, i64, i64 } %t190, ptr %a193 call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) %t194 = load { ptr, i64, i64 }, ptr %a191 store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1483, i64 6, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.1660, i64 6, i64 0 }, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t198) store { ptr, i64, i64 } %t199, ptr %a200 %t201 = load ptr, ptr %a1 - %t202 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t201, { ptr, i64, i64 } { ptr @.str.1484, i64 8, i64 0 }) + %t202 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t201, { ptr, i64, i64 } { ptr @.str.1661, i64 8, i64 0 }) store { ptr, i64, i64 } %t202, ptr %a203 %t204 = load ptr, ptr %a1 - %t205 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t204, { ptr, i64, i64 } { ptr @.str.1485, i64 8, i64 0 }) + %t205 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t204, { ptr, i64, i64 } { ptr @.str.1662, i64 8, i64 0 }) store { ptr, i64, i64 } %t205, ptr %a206 %t207 = load ptr, ptr %a1 - %t208 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t207, { ptr, i64, i64 } { ptr @.str.1486, i64 8, i64 0 }) + %t208 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t207, { ptr, i64, i64 } { ptr @.str.1663, i64 8, i64 0 }) store { ptr, i64, i64 } %t208, ptr %a209 %t210 = load ptr, ptr %a1 %t211 = load { ptr, i64, i64 }, ptr %a200 @@ -23378,7 +26887,7 @@ then2425: %t215 = load { ptr, i64, i64 }, ptr %a203 call void @finch.gen.label(ptr %t214, { ptr, i64, i64 } %t215) %t216 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t216, { ptr, i64, i64 } { ptr @.str.1487, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1488, i64 0, i64 0 }) + call void @finch.gen.printf(ptr %t216, { ptr, i64, i64 } { ptr @.str.1664, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1665, i64 0, i64 0 }) %t217 = load ptr, ptr %a1 %t218 = load { ptr, i64, i64 }, ptr %a209 call void @finch.gen.br(ptr %t217, { ptr, i64, i64 } %t218) @@ -23388,45 +26897,45 @@ then2425: %t221 = load ptr, ptr %a1 %t222 = load ptr, ptr %a1 %t223 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1491, i64 13, i64 0 }, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.1668, i64 13, i64 0 }, ptr %a225 store { ptr, i64, i64 } %t223, ptr %a226 call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) %t227 = load { ptr, i64, i64 }, ptr %a224 store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.1492, i64 7, i64 0 }, ptr %a230 + store { ptr, i64, i64 } { ptr @.str.1669, i64 7, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t222, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } { ptr @.str.1490, i64 4, i64 0 }, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.1667, i64 4, i64 0 }, ptr %a234 store { ptr, i64, i64 } %t232, ptr %a235 call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) %t236 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.gen.printf(ptr %t221, { ptr, i64, i64 } { ptr @.str.1489, i64 6, i64 0 }, { ptr, i64, i64 } %t236) + call void @finch.gen.printf(ptr %t221, { ptr, i64, i64 } { ptr @.str.1666, i64 6, i64 0 }, { ptr, i64, i64 } %t236) %t237 = load ptr, ptr %a1 %t238 = load { ptr, i64, i64 }, ptr %a209 call void @finch.gen.br(ptr %t237, { ptr, i64, i64 } %t238) %t239 = load ptr, ptr %a1 %t240 = load { ptr, i64, i64 }, ptr %a209 call void @finch.gen.label(ptr %t239, { ptr, i64, i64 } %t240) - br label %endif2427 -else2426: + br label %endif2674 +else2673: %t241 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1493, i64 4, i64 0 }, ptr %a243 + store { ptr, i64, i64 } { ptr @.str.1670, i64 4, i64 0 }, ptr %a243 %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %then2428, label %else2429 -then2428: + br i1 %t245, label %then2675, label %else2676 +then2675: %t246 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t246, { ptr, i64, i64 } { ptr @.str.1494, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1495, i64 0, i64 0 }) - br label %endif2430 -else2429: + call void @finch.gen.printf(ptr %t246, { ptr, i64, i64 } { ptr @.str.1671, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1672, i64 0, i64 0 }) + br label %endif2677 +else2676: %t247 = load ptr, ptr %a1 - %t248 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t247, { ptr, i64, i64 } { ptr @.str.1496, i64 17, i64 0 }) + %t248 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t247, { ptr, i64, i64 } { ptr @.str.1673, i64 17, i64 0 }) store { ptr, i64, i64 } %t248, ptr %a249 %t250 = load ptr, ptr %a1 %t251 = load { ptr, i64, i64 }, ptr %a249 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.1497, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1498, i64 15, i64 0 }, { ptr, i64, i64 } %t251) + call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.1674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1675, i64 15, i64 0 }, { ptr, i64, i64 } %t251) %t252 = load ptr, ptr %a1 %t253 = load { ptr, i64, i64 }, ptr %a249 %t254 = load { ptr, i64, i64 }, ptr %a2 @@ -23435,31 +26944,31 @@ else2429: call void @finch.gen.emitFormat(ptr %t252, { ptr, i64, i64 } %t253, { ptr, i64, i64 } %t254, %S.ast.Type %t255, i1 %t256) %t257 = load ptr, ptr %a1 %t258 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.1499, i64 31, i64 0 }, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.1676, i64 31, i64 0 }, ptr %a260 store { ptr, i64, i64 } %t258, ptr %a261 call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) %t262 = load { ptr, i64, i64 }, ptr %a259 store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.1500, i64 1, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.1677, i64 1, i64 0 }, ptr %a265 call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 call void @finch.gen.emit(ptr %t257, { ptr, i64, i64 } %t266) - br label %endif2430 -endif2430: - br label %endif2427 -endif2427: - br label %endif2421 -endif2421: - br label %endif2418 -endif2418: - br label %endif2412 -endif2412: - br label %endif2409 -endif2409: - br label %endif2406 -endif2406: - br label %endif2403 -endif2403: + br label %endif2677 +endif2677: + br label %endif2674 +endif2674: + br label %endif2668 +endif2668: + br label %endif2665 +endif2665: + br label %endif2659 +endif2659: + br label %endif2656 +endif2656: + br label %endif2653 +endif2653: + br label %endif2650 +endif2650: ret void } @@ -23492,12 +27001,12 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1501, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.1678, i64 29, i64 0 }, ptr %a7 store { ptr, i64, i64 } %t5, ptr %a8 call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) %t9 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1502, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1679, i64 6, i64 0 }, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 %t14 = load ptr, ptr %a1 @@ -23508,7 +27017,7 @@ entry: call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t20, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1503, i64 6, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.1680, i64 6, i64 0 }, ptr %a23 call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) %t24 = load { ptr, i64, i64 }, ptr %a21 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 @@ -23520,7 +27029,7 @@ entry: call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1504, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.1681, i64 1, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t36) @@ -23687,118 +27196,118 @@ entry: call void @finch_str_copy(ptr %a9, ptr %a8) %t10 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1505, i64 1, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1682, i64 1, i64 0 }, ptr %a12 %t13 = load i1, ptr %a5 - br i1 %t13, label %then2431, label %endif2433 -then2431: - store { ptr, i64, i64 } { ptr @.str.1506, i64 1, i64 0 }, ptr %a12 - br label %endif2433 -endif2433: + br i1 %t13, label %then2678, label %endif2680 +then2678: + store { ptr, i64, i64 } { ptr @.str.1683, i64 1, i64 0 }, ptr %a12 + br label %endif2680 +endif2680: %t14 = load %S.ast.Type, ptr %a4 %t15 = call i1 @finch.gen.isSigned(%S.ast.Type %t14) - br i1 %t15, label %then2434, label %else2435 -then2434: + br i1 %t15, label %then2681, label %else2682 +then2681: %t16 = load ptr, ptr %a1 %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1507, i64 29, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.1684, i64 29, i64 0 }, ptr %a19 store { ptr, i64, i64 } %t17, ptr %a20 call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1508, i64 6, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1685, i64 6, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load ptr, ptr %a1 %t27 = load { ptr, i64, i64 }, ptr %a3 %t28 = load %S.ast.Type, ptr %a4 - %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1509, i64 3, i64 0 }) + %t29 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1686, i64 3, i64 0 }) %t30 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t26, { ptr, i64, i64 } %t27, %S.ast.Type %t28, %S.ast.Type %t29) store { ptr, i64, i64 } %t25, ptr %a32 store { ptr, i64, i64 } %t30, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1510, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.1687, i64 1, i64 0 }, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.emit(ptr %t16, { ptr, i64, i64 } %t38) - br label %endif2436 -else2435: + br label %endif2683 +else2682: %t39 = load %S.ast.Type, ptr %a4 %t40 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t39) - br i1 %t40, label %then2437, label %else2438 -then2437: + br i1 %t40, label %then2684, label %else2685 +then2684: %t41 = load ptr, ptr %a1 %t42 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1511, i64 30, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1688, i64 30, i64 0 }, ptr %a44 store { ptr, i64, i64 } %t42, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.1689, i64 6, i64 0 }, ptr %a49 call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) %t50 = load { ptr, i64, i64 }, ptr %a47 %t51 = load ptr, ptr %a1 %t52 = load { ptr, i64, i64 }, ptr %a3 %t53 = load %S.ast.Type, ptr %a4 - %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1513, i64 3, i64 0 }) + %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1690, i64 3, i64 0 }) %t55 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t51, { ptr, i64, i64 } %t52, %S.ast.Type %t53, %S.ast.Type %t54) store { ptr, i64, i64 } %t50, ptr %a57 store { ptr, i64, i64 } %t55, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.1691, i64 1, i64 0 }, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 call void @finch.gen.emit(ptr %t41, { ptr, i64, i64 } %t63) - br label %endif2439 -else2438: + br label %endif2686 +else2685: %t64 = load %S.ast.Type, ptr %a4 %t65 = call i1 @finch.gen.isFloat(%S.ast.Type %t64) - br i1 %t65, label %then2440, label %else2441 -then2440: + br i1 %t65, label %then2687, label %else2688 +then2687: %t66 = load ptr, ptr %a1 %t67 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1515, i64 31, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.1692, i64 31, i64 0 }, ptr %a69 store { ptr, i64, i64 } %t67, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1516, i64 9, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.1693, i64 9, i64 0 }, ptr %a74 call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) %t75 = load { ptr, i64, i64 }, ptr %a72 %t76 = load ptr, ptr %a1 %t77 = load { ptr, i64, i64 }, ptr %a3 %t78 = load %S.ast.Type, ptr %a4 - %t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1517, i64 5, i64 0 }) + %t79 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1694, i64 5, i64 0 }) %t80 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t76, { ptr, i64, i64 } %t77, %S.ast.Type %t78, %S.ast.Type %t79) store { ptr, i64, i64 } %t75, ptr %a82 store { ptr, i64, i64 } %t80, ptr %a83 call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) %t84 = load { ptr, i64, i64 }, ptr %a81 store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.1518, i64 1, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.1695, i64 1, i64 0 }, ptr %a87 call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 call void @finch.gen.emit(ptr %t66, { ptr, i64, i64 } %t88) - br label %endif2442 -else2441: + br label %endif2689 +else2688: %t89 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1519, i64 4, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1696, i64 4, i64 0 }, ptr %a91 %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) %t93 = icmp ne i32 %t92, 0 - br i1 %t93, label %then2443, label %else2444 -then2443: + br i1 %t93, label %then2690, label %else2691 +then2690: %t94 = load ptr, ptr %a1 %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1520, i64 30, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.1697, i64 30, i64 0 }, ptr %a97 store { ptr, i64, i64 } %t95, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1521, i64 5, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.1698, i64 5, i64 0 }, ptr %a102 call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) %t103 = load { ptr, i64, i64 }, ptr %a100 %t104 = load { ptr, i64, i64 }, ptr %a3 @@ -23807,7 +27316,7 @@ then2443: call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) %t108 = load { ptr, i64, i64 }, ptr %a105 store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1522, i64 6, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.1699, i64 6, i64 0 }, ptr %a111 call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) %t112 = load { ptr, i64, i64 }, ptr %a109 %t113 = load { ptr, i64, i64 }, ptr %a12 @@ -23816,37 +27325,37 @@ then2443: call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1523, i64 1, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.1700, i64 1, i64 0 }, ptr %a120 call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) %t121 = load { ptr, i64, i64 }, ptr %a118 call void @finch.gen.emit(ptr %t94, { ptr, i64, i64 } %t121) - br label %endif2445 -else2444: + br label %endif2692 +else2691: %t122 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.1524, i64 4, i64 0 }, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.1701, i64 4, i64 0 }, ptr %a124 %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) %t126 = icmp ne i32 %t125, 0 - br i1 %t126, label %then2446, label %else2447 -then2446: + br i1 %t126, label %then2693, label %else2694 +then2693: %t127 = load ptr, ptr %a1 %t128 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1525, i64 30, i64 0 }, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.1702, i64 30, i64 0 }, ptr %a130 store { ptr, i64, i64 } %t128, ptr %a131 call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) %t132 = load { ptr, i64, i64 }, ptr %a129 store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1526, i64 6, i64 0 }, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.1703, i64 6, i64 0 }, ptr %a135 call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) %t136 = load { ptr, i64, i64 }, ptr %a133 %t137 = load ptr, ptr %a1 %t138 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1527, i64 8, i64 0 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.1704, i64 8, i64 0 }, ptr %a140 store { ptr, i64, i64 } %t138, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1528, i64 7, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.1705, i64 7, i64 0 }, ptr %a145 call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) %t146 = load { ptr, i64, i64 }, ptr %a143 %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t137, { ptr, i64, i64 } %t146) @@ -23855,27 +27364,27 @@ then2446: call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) %t151 = load { ptr, i64, i64 }, ptr %a148 store { ptr, i64, i64 } %t151, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.1529, i64 1, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.1706, i64 1, i64 0 }, ptr %a154 call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) %t155 = load { ptr, i64, i64 }, ptr %a152 call void @finch.gen.emit(ptr %t127, { ptr, i64, i64 } %t155) - br label %endif2448 -else2447: + br label %endif2695 +else2694: %t156 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1530, i64 3, i64 0 }, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.1707, i64 3, i64 0 }, ptr %a158 %t159 = call i32 @finch_str_eq(ptr %a157, ptr %a158) %t160 = icmp ne i32 %t159, 0 - br i1 %t160, label %then2449, label %else2450 -then2449: + br i1 %t160, label %then2696, label %else2697 +then2696: %t161 = load ptr, ptr %a1 %t162 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1531, i64 29, i64 0 }, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.1708, i64 29, i64 0 }, ptr %a164 store { ptr, i64, i64 } %t162, ptr %a165 call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) %t166 = load { ptr, i64, i64 }, ptr %a163 store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.1532, i64 6, i64 0 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.1709, i64 6, i64 0 }, ptr %a169 call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 %t171 = load ptr, ptr %a1 @@ -23895,7 +27404,7 @@ then2449: call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) %t186 = load { ptr, i64, i64 }, ptr %a183 store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.1533, i64 6, i64 0 }, ptr %a189 + store { ptr, i64, i64 } { ptr @.str.1710, i64 6, i64 0 }, ptr %a189 call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) %t190 = load { ptr, i64, i64 }, ptr %a187 %t191 = load { ptr, i64, i64 }, ptr %a12 @@ -23904,41 +27413,41 @@ then2449: call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) %t195 = load { ptr, i64, i64 }, ptr %a192 store { ptr, i64, i64 } %t195, ptr %a197 - store { ptr, i64, i64 } { ptr @.str.1534, i64 1, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.1711, i64 1, i64 0 }, ptr %a198 call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 call void @finch.gen.emit(ptr %t161, { ptr, i64, i64 } %t199) - br label %endif2451 -else2450: + br label %endif2698 +else2697: %t200 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1535, i64 3, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.1712, i64 3, i64 0 }, ptr %a202 %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) %t204 = icmp ne i32 %t203, 0 - br label %logic.from2452 -logic.from2452: - br i1 %t204, label %logic.end2454, label %logic.rhs2453 -logic.rhs2453: + br label %logic.from2699 +logic.from2699: + br i1 %t204, label %logic.end2701, label %logic.rhs2700 +logic.rhs2700: %t205 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.1536, i64 4, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.1713, i64 4, i64 0 }, ptr %a207 %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) %t209 = icmp ne i32 %t208, 0 - br label %logic.rend2455 -logic.rend2455: - br label %logic.end2454 -logic.end2454: - %t210 = phi i1 [ true, %logic.from2452 ], [ %t209, %logic.rend2455 ] - br i1 %t210, label %then2456, label %else2457 -then2456: + br label %logic.rend2702 +logic.rend2702: + br label %logic.end2701 +logic.end2701: + %t210 = phi i1 [ true, %logic.from2699 ], [ %t209, %logic.rend2702 ] + br i1 %t210, label %then2703, label %else2704 +then2703: %t211 = load ptr, ptr %a1 %t212 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1537, i64 29, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.1714, i64 29, i64 0 }, ptr %a214 store { ptr, i64, i64 } %t212, ptr %a215 call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) %t216 = load { ptr, i64, i64 }, ptr %a213 store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1538, i64 6, i64 0 }, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.1715, i64 6, i64 0 }, ptr %a219 call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 %t221 = load { ptr, i64, i64 }, ptr %a3 @@ -23947,22 +27456,22 @@ then2456: call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) %t225 = load { ptr, i64, i64 }, ptr %a222 store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.1539, i64 1, i64 0 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.1716, i64 1, i64 0 }, ptr %a228 call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) %t229 = load { ptr, i64, i64 }, ptr %a226 call void @finch.gen.emit(ptr %t211, { ptr, i64, i64 } %t229) - br label %endif2458 -else2457: + br label %endif2705 +else2704: %t230 = load ptr, ptr %a1 %t231 = load ptr, ptr %a1 %t232 = load %S.ast.Type, ptr %a4 %t233 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t231, %S.ast.Type %t232) - store { ptr, i64, i64 } { ptr @.str.1540, i64 10, i64 0 }, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.1717, i64 10, i64 0 }, ptr %a235 store { ptr, i64, i64 } %t233, ptr %a236 call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) %t237 = load { ptr, i64, i64 }, ptr %a234 store { ptr, i64, i64 } %t237, ptr %a239 - store { ptr, i64, i64 } { ptr @.str.1541, i64 5, i64 0 }, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.1718, i64 5, i64 0 }, ptr %a240 call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) %t241 = load { ptr, i64, i64 }, ptr %a238 %t242 = load { ptr, i64, i64 }, ptr %a2 @@ -23971,7 +27480,7 @@ else2457: call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 store { ptr, i64, i64 } %t246, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.1542, i64 6, i64 0 }, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a249 call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) %t250 = load { ptr, i64, i64 }, ptr %a247 %t251 = load ptr, ptr %a1 @@ -23991,24 +27500,24 @@ else2457: call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.1543, i64 1, i64 0 }, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.1720, i64 1, i64 0 }, ptr %a269 call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) %t270 = load { ptr, i64, i64 }, ptr %a267 call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t270) - br label %endif2458 -endif2458: - br label %endif2451 -endif2451: - br label %endif2448 -endif2448: - br label %endif2445 -endif2445: - br label %endif2442 -endif2442: - br label %endif2439 -endif2439: - br label %endif2436 -endif2436: + br label %endif2705 +endif2705: + br label %endif2698 +endif2698: + br label %endif2695 +endif2695: + br label %endif2692 +endif2692: + br label %endif2689 +endif2689: + br label %endif2686 +endif2686: + br label %endif2683 +endif2683: ret void } @@ -24195,37 +27704,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1544, i64 14, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.1721, i64 14, i64 0 }, ptr %a6 store { ptr, i64, i64 } %t4, ptr %a7 call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) %t8 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2459, label %ok2460 -panic2459: - call void @finch_panic(ptr @.str.1545, i64 846, ptr @.str.1546) + br i1 %t11, label %panic2706, label %ok2707 +panic2706: + call void @finch_panic(ptr @.str.1722, i64 965, ptr @.str.1723) unreachable -ok2460: +ok2707: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21 %t13 = load { ptr, i64, i64 }, ptr %t12 %t14 = load { ptr, i64, i64 }, ptr %a9 %t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14) - br i1 %t15, label %then2461, label %endif2463 -then2461: + br i1 %t15, label %then2708, label %endif2710 +then2708: %t16 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t16, ptr %a17 call void @finch_str_copy(ptr %a18, ptr %a17) %t19 = load { ptr, i64, i64 }, ptr %a18 ret { ptr, i64, i64 } %t19 -endif2463: +endif2710: %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2464, label %ok2465 -panic2464: - call void @finch_panic(ptr @.str.1547, i64 849, ptr @.str.1548) + br i1 %t21, label %panic2711, label %ok2712 +panic2711: + call void @finch_panic(ptr @.str.1724, i64 968, ptr @.str.1725) unreachable -ok2465: +ok2712: %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %a9 @@ -24245,20 +27754,20 @@ ok2465: %t35 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t36 = load { ptr, i64, i64 }, ptr %t35 store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1549, i64 5, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1726, i64 5, i64 0 }, ptr %a38 %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2466, label %else2467 -then2466: + br i1 %t40, label %then2713, label %else2714 +then2713: %t41 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t42 = load { ptr, i64, i64 }, ptr %t41 %t43 = extractvalue { ptr, i64, i64 } %t42, 1 %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range2469, label %inrange2470 -range2469: - call void @finch_panic_index(ptr @.str.1550, i64 852, i64 0, i64 %t43) + br i1 %t44, label %range2716, label %inrange2717 +range2716: + call void @finch_panic_index(ptr @.str.1727, i64 971, i64 0, i64 %t43) unreachable -inrange2470: +inrange2717: %t45 = extractvalue { ptr, i64, i64 } %t42, 0 %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 %t47 = load %S.ast.Type, ptr %t46 @@ -24267,43 +27776,43 @@ inrange2470: %t50 = load %S.ast.Type, ptr %a49 store %S.ast.Type %t50, ptr %a51 %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.load(ptr %t52, { ptr, i64, i64 } { ptr @.str.1551, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1552, i64 2, i64 0 }) + %t53 = call { ptr, i64, i64 } @finch.gen.load(ptr %t52, { ptr, i64, i64 } { ptr @.str.1728, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1729, i64 2, i64 0 }) store { ptr, i64, i64 } %t53, ptr %a54 %t55 = load ptr, ptr %a1 %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.op(ptr %t56, { ptr, i64, i64 } { ptr @.str.1554, i64 62, i64 0 }) - %t58 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.1553, i64 3, i64 0 }, { ptr, i64, i64 } %t57) + %t57 = call { ptr, i64, i64 } @finch.gen.op(ptr %t56, { ptr, i64, i64 } { ptr @.str.1731, i64 62, i64 0 }) + %t58 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.1730, i64 3, i64 0 }, { ptr, i64, i64 } %t57) store { ptr, i64, i64 } %t58, ptr %a59 %t60 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t60, { ptr, i64, i64 } { ptr @.str.1555, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1556, i64 1, i64 0 }) + call void @finch.gen.bufText(ptr %t60, { ptr, i64, i64 } { ptr @.str.1732, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1733, i64 1, i64 0 }) %t61 = load ptr, ptr %a1 %t62 = load { ptr, i64, i64 }, ptr %a59 %t63 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t61, { ptr, i64, i64 } %t62) store { ptr, i64, i64 } %t63, ptr %a64 %t65 = load ptr, ptr %a1 - %t66 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t65, { ptr, i64, i64 } { ptr @.str.1557, i64 3, i64 0 }) + %t66 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t65, { ptr, i64, i64 } { ptr @.str.1734, i64 3, i64 0 }) store { ptr, i64, i64 } %t66, ptr %a67 %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.1558, i64 4, i64 0 }) + %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.1735, i64 4, i64 0 }) store { ptr, i64, i64 } %t69, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a64 %t73 = extractvalue { ptr, i64, i64 } %t72, 1 %t74 = icmp uge i64 3, %t73 - br i1 %t74, label %range2471, label %inrange2472 -range2471: - call void @finch_panic_index(ptr @.str.1560, i64 859, i64 3, i64 %t73) + br i1 %t74, label %range2718, label %inrange2719 +range2718: + call void @finch_panic_index(ptr @.str.1737, i64 978, i64 3, i64 %t73) unreachable -inrange2472: +inrange2719: %t75 = extractvalue { ptr, i64, i64 } %t72, 0 %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 3 %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } { ptr @.str.1559, i64 13, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.1736, i64 13, i64 0 }, ptr %a79 store { ptr, i64, i64 } %t77, ptr %a80 call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) %t81 = load { ptr, i64, i64 }, ptr %a78 store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.1561, i64 3, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.1738, i64 3, i64 0 }, ptr %a84 call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t71, { ptr, i64, i64 } %t85) @@ -24317,7 +27826,7 @@ inrange2472: %t93 = load { ptr, i64, i64 }, ptr %a67 call void @finch.gen.label(ptr %t92, { ptr, i64, i64 } %t93) %t94 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t94, { ptr, i64, i64 } { ptr @.str.1562, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1563, i64 2, i64 0 }) + call void @finch.gen.bufText(ptr %t94, { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1740, i64 2, i64 0 }) %t95 = load ptr, ptr %a1 %t96 = load { ptr, i64, i64 }, ptr %a70 call void @finch.gen.br(ptr %t95, { ptr, i64, i64 } %t96) @@ -24328,12 +27837,12 @@ inrange2472: %t100 = load ptr, ptr %a1 %t101 = load %S.ast.Type, ptr %a51 %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - store { ptr, i64, i64 } { ptr @.str.1564, i64 23, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.1741, i64 23, i64 0 }, ptr %a104 store { ptr, i64, i64 } %t102, ptr %a105 call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) %t106 = load { ptr, i64, i64 }, ptr %a103 store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1565, i64 6, i64 0 }, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.1742, i64 6, i64 0 }, ptr %a109 call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) %t110 = load { ptr, i64, i64 }, ptr %a107 %t111 = load { ptr, i64, i64 }, ptr %a54 @@ -24342,17 +27851,17 @@ inrange2472: call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.1566, i64 6, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.1743, i64 6, i64 0 }, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 %t120 = load { ptr, i64, i64 }, ptr %a64 %t121 = extractvalue { ptr, i64, i64 } %t120, 1 %t122 = icmp uge i64 3, %t121 - br i1 %t122, label %range2473, label %inrange2474 -range2473: - call void @finch_panic_index(ptr @.str.1567, i64 865, i64 3, i64 %t121) + br i1 %t122, label %range2720, label %inrange2721 +range2720: + call void @finch_panic_index(ptr @.str.1744, i64 984, i64 3, i64 %t121) unreachable -inrange2474: +inrange2721: %t123 = extractvalue { ptr, i64, i64 } %t120, 0 %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 3 %t125 = load { ptr, i64, i64 }, ptr %t124 @@ -24370,29 +27879,29 @@ inrange2474: %t137 = load { ptr, i64, i64 }, ptr %a131 %t138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t133, { ptr, i64, i64 } %t136, { ptr, i64, i64 } %t137) %t139 = load %S.ast.Type, ptr %a51 - call void @finch.gen.emitFormat(ptr %t132, { ptr, i64, i64 } { ptr @.str.1568, i64 4, i64 0 }, { ptr, i64, i64 } %t138, %S.ast.Type %t139, i1 true) + call void @finch.gen.emitFormat(ptr %t132, { ptr, i64, i64 } { ptr @.str.1745, i64 4, i64 0 }, { ptr, i64, i64 } %t138, %S.ast.Type %t139, i1 true) %t140 = load ptr, ptr %a1 %t141 = load { ptr, i64, i64 }, ptr %a64 call void @finch.gen.loopEnd(ptr %t140, { ptr, i64, i64 } %t141) %t142 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t142, { ptr, i64, i64 } { ptr @.str.1569, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1570, i64 1, i64 0 }) - br label %endif2468 -else2467: + call void @finch.gen.bufText(ptr %t142, { ptr, i64, i64 } { ptr @.str.1746, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1747, i64 1, i64 0 }) + br label %endif2715 +else2714: %t143 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t144 = load { ptr, i64, i64 }, ptr %t143 store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1571, i64 4, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.1748, i64 4, i64 0 }, ptr %a146 %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) %t148 = icmp ne i32 %t147, 0 - br i1 %t148, label %then2475, label %else2476 -then2475: + br i1 %t148, label %then2722, label %else2723 +then2722: %t149 = load ptr, ptr %a1 %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2478, label %ok2479 -panic2478: - call void @finch_panic(ptr @.str.1572, i64 871, ptr @.str.1573) + br i1 %t150, label %panic2725, label %ok2726 +panic2725: + call void @finch_panic(ptr @.str.1749, i64 990, ptr @.str.1750) unreachable -ok2479: +ok2726: %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 20 %t152 = load ptr, ptr %a1 %t153 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -24403,11 +27912,11 @@ ok2479: %t158 = load { ptr, i64, i64 }, ptr %t151 %t159 = extractvalue { ptr, i64, i64 } %t158, 1 %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range2480, label %inrange2481 -range2480: - call void @finch_panic_index(ptr @.str.1574, i64 871, i64 %t157, i64 %t159) + br i1 %t160, label %range2727, label %inrange2728 +range2727: + call void @finch_panic_index(ptr @.str.1751, i64 990, i64 %t157, i64 %t159) unreachable -inrange2481: +inrange2728: %t161 = extractvalue { ptr, i64, i64 } %t158, 0 %t162 = getelementptr inbounds %S.gen.EnumDef, ptr %t161, i64 %t157 %t163 = load %S.gen.EnumDef, ptr %t162 @@ -24416,13 +27925,13 @@ inrange2481: %t166 = load %S.gen.EnumDef, ptr %a165 store %S.gen.EnumDef %t166, ptr %a167 %t168 = load ptr, ptr %a1 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t168, { ptr, i64, i64 } { ptr @.str.1575, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1576, i64 2, i64 0 }) + %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t168, { ptr, i64, i64 } { ptr @.str.1752, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1753, i64 2, i64 0 }) store { ptr, i64, i64 } %t169, ptr %a170 %t171 = load ptr, ptr %a1 - %t172 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t171, { ptr, i64, i64 } { ptr @.str.1577, i64 10, i64 0 }) + %t172 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t171, { ptr, i64, i64 } { ptr @.str.1754, i64 10, i64 0 }) store { ptr, i64, i64 } %t172, ptr %a173 %t174 = load ptr, ptr %a1 - %t175 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t174, { ptr, i64, i64 } { ptr @.str.1578, i64 9, i64 0 }) + %t175 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t174, { ptr, i64, i64 } { ptr @.str.1755, i64 9, i64 0 }) store { ptr, i64, i64 } %t175, ptr %a176 store { ptr, i64, i64 } zeroinitializer, ptr %a177 store { ptr, i64, i64 } zeroinitializer, ptr %a178 @@ -24430,15 +27939,15 @@ inrange2481: %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 %t181 = load i64, ptr %t180 store i64 0, ptr %a182 - br label %for.cond2482 -for.cond2482: + br label %for.cond2729 +for.cond2729: %t183 = load i64, ptr %a182 %t184 = icmp slt i64 %t183, %t181 - br i1 %t184, label %for.body2483, label %for.end2485 -for.body2483: + br i1 %t184, label %for.body2730, label %for.end2732 +for.body2730: %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a178, i32 0, i32 1 %t186 = load ptr, ptr %a1 - %t187 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t186, { ptr, i64, i64 } { ptr @.str.1579, i64 6, i64 0 }) + %t187 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t186, { ptr, i64, i64 } { ptr @.str.1756, i64 6, i64 0 }) %t188 = load i64, ptr %t185 %t189 = add i64 %t188, 1 call void @finch_arr_reserve(ptr %a178, i64 %t189, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) @@ -24452,33 +27961,33 @@ for.body2483: %t195 = load { ptr, i64, i64 }, ptr %t193 %t196 = extractvalue { ptr, i64, i64 } %t195, 1 %t197 = icmp uge i64 %t194, %t196 - br i1 %t197, label %range2486, label %inrange2487 -range2486: - call void @finch_panic_index(ptr @.str.1581, i64 879, i64 %t194, i64 %t196) + br i1 %t197, label %range2733, label %inrange2734 +range2733: + call void @finch_panic_index(ptr @.str.1758, i64 998, i64 %t194, i64 %t196) unreachable -inrange2487: +inrange2734: %t198 = extractvalue { ptr, i64, i64 } %t195, 0 %t199 = getelementptr inbounds i64, ptr %t198, i64 %t194 %t200 = load i64, ptr %t199 call void @finch_str_from_int(ptr %a201, i64 %t200) %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1580, i64 4, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a204 store { ptr, i64, i64 } %t202, ptr %a205 call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.1582, i64 9, i64 0 }, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.1759, i64 9, i64 0 }, ptr %a209 call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) %t210 = load { ptr, i64, i64 }, ptr %a207 %t211 = load i64, ptr %a182 %t212 = load { ptr, i64, i64 }, ptr %a178 %t213 = extractvalue { ptr, i64, i64 } %t212, 1 %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range2488, label %inrange2489 -range2488: - call void @finch_panic_index(ptr @.str.1583, i64 879, i64 %t211, i64 %t213) + br i1 %t214, label %range2735, label %inrange2736 +range2735: + call void @finch_panic_index(ptr @.str.1760, i64 998, i64 %t211, i64 %t213) unreachable -inrange2489: +inrange2736: %t215 = extractvalue { ptr, i64, i64 } %t212, 0 %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 %t217 = load { ptr, i64, i64 }, ptr %t216 @@ -24493,21 +28002,21 @@ inrange2489: %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i64 %t222 store { ptr, i64, i64 } %t221, ptr %t225 store i64 %t223, ptr %t192 - br label %for.step2484 -for.step2484: + br label %for.step2731 +for.step2731: %t226 = load i64, ptr %a182 %t227 = add i64 %t226, 1 store i64 %t227, ptr %a182 - br label %for.cond2482 -for.end2485: + br label %for.cond2729 +for.end2732: %t228 = load ptr, ptr %a1 %t229 = load { ptr, i64, i64 }, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1584, i64 11, i64 0 }, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.1761, i64 11, i64 0 }, ptr %a231 store { ptr, i64, i64 } %t229, ptr %a232 call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) %t233 = load { ptr, i64, i64 }, ptr %a230 store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.1585, i64 9, i64 0 }, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.1762, i64 9, i64 0 }, ptr %a236 call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) %t237 = load { ptr, i64, i64 }, ptr %a234 %t238 = load { ptr, i64, i64 }, ptr %a173 @@ -24516,11 +28025,11 @@ for.end2485: call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) %t242 = load { ptr, i64, i64 }, ptr %a239 store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.1586, i64 3, i64 0 }, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.1763, i64 3, i64 0 }, ptr %a245 call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %a177, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1587, i64 1, i64 0 }, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.1764, i64 1, i64 0 }, ptr %a248 call void @finch_str_join(ptr %a249, ptr %a177, ptr %a248) %t250 = load { ptr, i64, i64 }, ptr %a249 store { ptr, i64, i64 } %t246, ptr %a252 @@ -24528,39 +28037,39 @@ for.end2485: call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) %t254 = load { ptr, i64, i64 }, ptr %a251 store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.1588, i64 2, i64 0 }, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.1765, i64 2, i64 0 }, ptr %a257 call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) %t258 = load { ptr, i64, i64 }, ptr %a255 call void @finch.gen.emit(ptr %t228, { ptr, i64, i64 } %t258) %t259 = load ptr, ptr %a1 %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic2490, label %ok2491 -panic2490: - call void @finch_panic(ptr @.str.1589, i64 882, ptr @.str.1590) + br i1 %t260, label %panic2737, label %ok2738 +panic2737: + call void @finch_panic(ptr @.str.1766, i64 1001, ptr @.str.1767) unreachable -ok2491: +ok2738: %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 store i1 true, ptr %t261 %t262 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 2 %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 %t264 = load i64, ptr %t263 store i64 0, ptr %a265 - br label %for.cond2492 -for.cond2492: + br label %for.cond2739 +for.cond2739: %t266 = load i64, ptr %a265 %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body2493, label %for.end2495 -for.body2493: + br i1 %t267, label %for.body2740, label %for.end2742 +for.body2740: %t268 = load ptr, ptr %a1 %t269 = load i64, ptr %a265 %t270 = load { ptr, i64, i64 }, ptr %a178 %t271 = extractvalue { ptr, i64, i64 } %t270, 1 %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range2496, label %inrange2497 -range2496: - call void @finch_panic_index(ptr @.str.1591, i64 884, i64 %t269, i64 %t271) + br i1 %t272, label %range2743, label %inrange2744 +range2743: + call void @finch_panic_index(ptr @.str.1768, i64 1003, i64 %t269, i64 %t271) unreachable -inrange2497: +inrange2744: %t273 = extractvalue { ptr, i64, i64 } %t270, 0 %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t269 %t275 = load { ptr, i64, i64 }, ptr %t274 @@ -24571,25 +28080,25 @@ inrange2497: %t279 = load { ptr, i64, i64 }, ptr %t277 %t280 = extractvalue { ptr, i64, i64 } %t279, 1 %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range2498, label %inrange2499 -range2498: - call void @finch_panic_index(ptr @.str.1593, i64 885, i64 %t278, i64 %t280) + br i1 %t281, label %range2745, label %inrange2746 +range2745: + call void @finch_panic_index(ptr @.str.1770, i64 1004, i64 %t278, i64 %t280) unreachable -inrange2499: +inrange2746: %t282 = extractvalue { ptr, i64, i64 } %t279, 0 %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i64 %t278 %t284 = load { ptr, i64, i64 }, ptr %t283 - call void @finch.gen.bufText(ptr %t276, { ptr, i64, i64 } { ptr @.str.1592, i64 4, i64 0 }, { ptr, i64, i64 } %t284) + call void @finch.gen.bufText(ptr %t276, { ptr, i64, i64 } { ptr @.str.1769, i64 4, i64 0 }, { ptr, i64, i64 } %t284) %t285 = load ptr, ptr %a1 %t286 = load { ptr, i64, i64 }, ptr %a176 call void @finch.gen.br(ptr %t285, { ptr, i64, i64 } %t286) - br label %for.step2494 -for.step2494: + br label %for.step2741 +for.step2741: %t287 = load i64, ptr %a265 %t288 = add i64 %t287, 1 store i64 %t288, ptr %a265 - br label %for.cond2492 -for.end2495: + br label %for.cond2739 +for.end2742: %t289 = load ptr, ptr %a1 %t290 = load { ptr, i64, i64 }, ptr %a173 call void @finch.gen.label(ptr %t289, { ptr, i64, i64 } %t290) @@ -24597,72 +28106,72 @@ for.end2495: %t292 = getelementptr inbounds %S.gen.EnumDef, ptr %a167, i32 0, i32 1 %t293 = load { ptr, i64, i64 }, ptr %t292 store { ptr, i64, i64 } %t293, ptr %a295 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.1772, i64 1, i64 0 }, ptr %a296 call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) %t297 = load { ptr, i64, i64 }, ptr %a294 - call void @finch.gen.bufText(ptr %t291, { ptr, i64, i64 } { ptr @.str.1594, i64 4, i64 0 }, { ptr, i64, i64 } %t297) + call void @finch.gen.bufText(ptr %t291, { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, { ptr, i64, i64 } %t297) %t298 = load ptr, ptr %a1 %t299 = load ptr, ptr %a1 %t300 = load { ptr, i64, i64 }, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1597, i64 9, i64 0 }, ptr %a302 + store { ptr, i64, i64 } { ptr @.str.1774, i64 9, i64 0 }, ptr %a302 store { ptr, i64, i64 } %t300, ptr %a303 call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) %t304 = load { ptr, i64, i64 }, ptr %a301 store { ptr, i64, i64 } %t304, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.1598, i64 7, i64 0 }, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.1775, i64 7, i64 0 }, ptr %a307 call void @finch_str_concat(ptr %a305, ptr %a306, ptr %a307) %t308 = load { ptr, i64, i64 }, ptr %a305 %t309 = call { ptr, i64, i64 } @finch.gen.op(ptr %t299, { ptr, i64, i64 } %t308) - store { ptr, i64, i64 } { ptr @.str.1596, i64 39, i64 0 }, ptr %a311 + store { ptr, i64, i64 } { ptr @.str.1773, i64 39, i64 0 }, ptr %a311 store { ptr, i64, i64 } %t309, ptr %a312 call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) %t313 = load { ptr, i64, i64 }, ptr %a310 store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.1599, i64 1, i64 0 }, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.1776, i64 1, i64 0 }, ptr %a316 call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) %t317 = load { ptr, i64, i64 }, ptr %a314 call void @finch.gen.emit(ptr %t298, { ptr, i64, i64 } %t317) %t318 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t318, { ptr, i64, i64 } { ptr @.str.1600, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1601, i64 1, i64 0 }) + call void @finch.gen.bufText(ptr %t318, { ptr, i64, i64 } { ptr @.str.1777, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }) %t319 = load ptr, ptr %a1 %t320 = load { ptr, i64, i64 }, ptr %a176 call void @finch.gen.br(ptr %t319, { ptr, i64, i64 } %t320) %t321 = load ptr, ptr %a1 %t322 = load { ptr, i64, i64 }, ptr %a176 call void @finch.gen.label(ptr %t321, { ptr, i64, i64 } %t322) - br label %endif2477 -else2476: + br label %endif2724 +else2723: %t323 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t324 = load { ptr, i64, i64 }, ptr %t323 store { ptr, i64, i64 } %t324, ptr %a325 - store { ptr, i64, i64 } { ptr @.str.1602, i64 3, i64 0 }, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.1779, i64 3, i64 0 }, ptr %a326 %t327 = call i32 @finch_str_eq(ptr %a325, ptr %a326) %t328 = icmp ne i32 %t327, 0 - br i1 %t328, label %then2500, label %else2501 -then2500: + br i1 %t328, label %then2747, label %else2748 +then2747: %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.1603, i64 2, i64 0 }) + %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.1780, i64 2, i64 0 }) store { ptr, i64, i64 } %t330, ptr %a331 %t332 = load ptr, ptr %a1 %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.1604, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1605, i64 4, i64 0 }, { ptr, i64, i64 } %t333) + call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.1781, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1782, i64 4, i64 0 }, { ptr, i64, i64 } %t333) %t334 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t334, { ptr, i64, i64 } { ptr @.str.1606, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1607, i64 1, i64 0 }) + call void @finch.gen.bufText(ptr %t334, { ptr, i64, i64 } { ptr @.str.1783, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }) %t335 = load ptr, ptr %a1 %t336 = load ptr, ptr %a1 %t337 = load ptr, ptr %a1 %t338 = load %S.ast.Type, ptr %a2 %t339 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t337, %S.ast.Type %t338) - store { ptr, i64, i64 } { ptr @.str.1609, i64 23, i64 0 }, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.1786, i64 23, i64 0 }, ptr %a341 store { ptr, i64, i64 } %t339, ptr %a342 call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) %t343 = load { ptr, i64, i64 }, ptr %a340 store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.1610, i64 22, i64 0 }, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.1787, i64 22, i64 0 }, ptr %a346 call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) %t347 = load { ptr, i64, i64 }, ptr %a344 %t348 = call { ptr, i64, i64 } @finch.gen.op(ptr %t336, { ptr, i64, i64 } %t347) - %t349 = call { ptr, i64, i64 } @finch.gen.load(ptr %t335, { ptr, i64, i64 } { ptr @.str.1608, i64 3, i64 0 }, { ptr, i64, i64 } %t348) + %t349 = call { ptr, i64, i64 } @finch.gen.load(ptr %t335, { ptr, i64, i64 } { ptr @.str.1785, i64 3, i64 0 }, { ptr, i64, i64 } %t348) store { ptr, i64, i64 } %t349, ptr %a350 %t351 = load ptr, ptr %a1 %t352 = load { ptr, i64, i64 }, ptr %a350 @@ -24673,21 +28182,21 @@ then2500: %t357 = load { ptr, i64, i64 }, ptr %a354 %t358 = extractvalue { ptr, i64, i64 } %t357, 1 %t359 = icmp uge i64 3, %t358 - br i1 %t359, label %range2503, label %inrange2504 -range2503: - call void @finch_panic_index(ptr @.str.1612, i64 901, i64 3, i64 %t358) + br i1 %t359, label %range2750, label %inrange2751 +range2750: + call void @finch_panic_index(ptr @.str.1789, i64 1020, i64 3, i64 %t358) unreachable -inrange2504: +inrange2751: %t360 = extractvalue { ptr, i64, i64 } %t357, 0 %t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t360, i64 3 %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t355, { ptr, i64, i64 } { ptr @.str.1611, i64 2, i64 0 }, %S.ast.Type %t356, { ptr, i64, i64 } %t362) + %t363 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t355, { ptr, i64, i64 } { ptr @.str.1788, i64 2, i64 0 }, %S.ast.Type %t356, { ptr, i64, i64 } %t362) store { ptr, i64, i64 } %t363, ptr %a364 %t365 = load ptr, ptr %a1 - %t366 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t365, { ptr, i64, i64 } { ptr @.str.1613, i64 10, i64 0 }) + %t366 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t365, { ptr, i64, i64 } { ptr @.str.1790, i64 10, i64 0 }) store { ptr, i64, i64 } %t366, ptr %a367 %t368 = load ptr, ptr %a1 - %t369 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t368, { ptr, i64, i64 } { ptr @.str.1614, i64 10, i64 0 }) + %t369 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t368, { ptr, i64, i64 } { ptr @.str.1791, i64 10, i64 0 }) store { ptr, i64, i64 } %t369, ptr %a370 %t371 = load ptr, ptr %a1 %t372 = load ptr, ptr %a1 @@ -24696,13 +28205,13 @@ inrange2504: %t375 = load { ptr, i64, i64 }, ptr %a364 %t376 = load %S.ast.Type, ptr %a2 %t377 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t374, { ptr, i64, i64 } %t375, %S.ast.Type %t376, i64 0) - %t378 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.1616, i64 3, i64 0 }, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } { ptr @.str.1615, i64 12, i64 0 }, ptr %a380 + %t378 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.1793, i64 3, i64 0 }, { ptr, i64, i64 } %t377) + store { ptr, i64, i64 } { ptr @.str.1792, i64 12, i64 0 }, ptr %a380 store { ptr, i64, i64 } %t378, ptr %a381 call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) %t382 = load { ptr, i64, i64 }, ptr %a379 store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.1617, i64 3, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.1794, i64 3, i64 0 }, ptr %a385 call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) %t386 = load { ptr, i64, i64 }, ptr %a383 %t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t372, { ptr, i64, i64 } %t386) @@ -24713,15 +28222,15 @@ inrange2504: %t391 = load { ptr, i64, i64 }, ptr %a367 call void @finch.gen.label(ptr %t390, { ptr, i64, i64 } %t391) %t392 = load ptr, ptr %a1 - %t393 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t392, { ptr, i64, i64 } { ptr @.str.1618, i64 3, i64 0 }) + %t393 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t392, { ptr, i64, i64 } { ptr @.str.1795, i64 3, i64 0 }) store { ptr, i64, i64 } %t393, ptr %a394 %t395 = load ptr, ptr %a1 - %t396 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t395, { ptr, i64, i64 } { ptr @.str.1619, i64 4, i64 0 }) + %t396 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t395, { ptr, i64, i64 } { ptr @.str.1796, i64 4, i64 0 }) store { ptr, i64, i64 } %t396, ptr %a397 %t398 = load ptr, ptr %a1 %t399 = load ptr, ptr %a1 %t400 = load { ptr, i64, i64 }, ptr %a331 - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t399, { ptr, i64, i64 } { ptr @.str.1620, i64 2, i64 0 }, { ptr, i64, i64 } %t400) + %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t399, { ptr, i64, i64 } { ptr @.str.1797, i64 2, i64 0 }, { ptr, i64, i64 } %t400) %t402 = load { ptr, i64, i64 }, ptr %a397 %t403 = load { ptr, i64, i64 }, ptr %a394 call void @finch.gen.condBr(ptr %t398, { ptr, i64, i64 } %t401, { ptr, i64, i64 } %t402, { ptr, i64, i64 } %t403) @@ -24729,7 +28238,7 @@ inrange2504: %t405 = load { ptr, i64, i64 }, ptr %a394 call void @finch.gen.label(ptr %t404, { ptr, i64, i64 } %t405) %t406 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t406, { ptr, i64, i64 } { ptr @.str.1621, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1622, i64 2, i64 0 }) + call void @finch.gen.bufText(ptr %t406, { ptr, i64, i64 } { ptr @.str.1798, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1799, i64 2, i64 0 }) %t407 = load ptr, ptr %a1 %t408 = load { ptr, i64, i64 }, ptr %a397 call void @finch.gen.br(ptr %t407, { ptr, i64, i64 } %t408) @@ -24738,7 +28247,7 @@ inrange2504: call void @finch.gen.label(ptr %t409, { ptr, i64, i64 } %t410) %t411 = load ptr, ptr %a1 %t412 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t411, { ptr, i64, i64 } { ptr @.str.1623, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1624, i64 5, i64 0 }, { ptr, i64, i64 } %t412) + call void @finch.gen.store(ptr %t411, { ptr, i64, i64 } { ptr @.str.1800, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1801, i64 5, i64 0 }, { ptr, i64, i64 } %t412) %t413 = load ptr, ptr %a1 %t414 = load ptr, ptr %a1 %t415 = load ptr, ptr %a1 @@ -24746,11 +28255,11 @@ inrange2504: %t417 = load { ptr, i64, i64 }, ptr %t416 %t418 = extractvalue { ptr, i64, i64 } %t417, 1 %t419 = icmp uge i64 0, %t418 - br i1 %t419, label %range2505, label %inrange2506 -range2505: - call void @finch_panic_index(ptr @.str.1626, i64 914, i64 0, i64 %t418) + br i1 %t419, label %range2752, label %inrange2753 +range2752: + call void @finch_panic_index(ptr @.str.1803, i64 1033, i64 0, i64 %t418) unreachable -inrange2506: +inrange2753: %t420 = extractvalue { ptr, i64, i64 } %t417, 0 %t421 = getelementptr inbounds %S.ast.Type, ptr %t420, i64 0 %t422 = load %S.ast.Type, ptr %t421 @@ -24764,17 +28273,17 @@ inrange2506: %t430 = load { ptr, i64, i64 }, ptr %t429 %t431 = extractvalue { ptr, i64, i64 } %t430, 1 %t432 = icmp uge i64 0, %t431 - br i1 %t432, label %range2507, label %inrange2508 -range2507: - call void @finch_panic_index(ptr @.str.1627, i64 914, i64 0, i64 %t431) + br i1 %t432, label %range2754, label %inrange2755 +range2754: + call void @finch_panic_index(ptr @.str.1804, i64 1033, i64 0, i64 %t431) unreachable -inrange2508: +inrange2755: %t433 = extractvalue { ptr, i64, i64 } %t430, 0 %t434 = getelementptr inbounds %S.ast.Type, ptr %t433, i64 0 %t435 = load %S.ast.Type, ptr %t434 - call void @finch.gen.emitFormat(ptr %t413, { ptr, i64, i64 } { ptr @.str.1625, i64 4, i64 0 }, { ptr, i64, i64 } %t428, %S.ast.Type %t435, i1 true) + call void @finch.gen.emitFormat(ptr %t413, { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, { ptr, i64, i64 } %t428, %S.ast.Type %t435, i1 true) %t436 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t436, { ptr, i64, i64 } { ptr @.str.1628, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1629, i64 2, i64 0 }) + call void @finch.gen.bufText(ptr %t436, { ptr, i64, i64 } { ptr @.str.1805, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1806, i64 2, i64 0 }) %t437 = load ptr, ptr %a1 %t438 = load ptr, ptr %a1 %t439 = load ptr, ptr %a1 @@ -24782,11 +28291,11 @@ inrange2508: %t441 = load { ptr, i64, i64 }, ptr %t440 %t442 = extractvalue { ptr, i64, i64 } %t441, 1 %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range2509, label %inrange2510 -range2509: - call void @finch_panic_index(ptr @.str.1631, i64 916, i64 1, i64 %t442) + br i1 %t443, label %range2756, label %inrange2757 +range2756: + call void @finch_panic_index(ptr @.str.1808, i64 1035, i64 1, i64 %t442) unreachable -inrange2510: +inrange2757: %t444 = extractvalue { ptr, i64, i64 } %t441, 0 %t445 = getelementptr inbounds %S.ast.Type, ptr %t444, i64 1 %t446 = load %S.ast.Type, ptr %t445 @@ -24800,15 +28309,15 @@ inrange2510: %t454 = load { ptr, i64, i64 }, ptr %t453 %t455 = extractvalue { ptr, i64, i64 } %t454, 1 %t456 = icmp uge i64 1, %t455 - br i1 %t456, label %range2511, label %inrange2512 -range2511: - call void @finch_panic_index(ptr @.str.1632, i64 916, i64 1, i64 %t455) + br i1 %t456, label %range2758, label %inrange2759 +range2758: + call void @finch_panic_index(ptr @.str.1809, i64 1035, i64 1, i64 %t455) unreachable -inrange2512: +inrange2759: %t457 = extractvalue { ptr, i64, i64 } %t454, 0 %t458 = getelementptr inbounds %S.ast.Type, ptr %t457, i64 1 %t459 = load %S.ast.Type, ptr %t458 - call void @finch.gen.emitFormat(ptr %t437, { ptr, i64, i64 } { ptr @.str.1630, i64 4, i64 0 }, { ptr, i64, i64 } %t452, %S.ast.Type %t459, i1 true) + call void @finch.gen.emitFormat(ptr %t437, { ptr, i64, i64 } { ptr @.str.1807, i64 4, i64 0 }, { ptr, i64, i64 } %t452, %S.ast.Type %t459, i1 true) %t460 = load ptr, ptr %a1 %t461 = load { ptr, i64, i64 }, ptr %a370 call void @finch.gen.br(ptr %t460, { ptr, i64, i64 } %t461) @@ -24819,16 +28328,16 @@ inrange2512: %t465 = load { ptr, i64, i64 }, ptr %a354 call void @finch.gen.loopEnd(ptr %t464, { ptr, i64, i64 } %t465) %t466 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t466, { ptr, i64, i64 } { ptr @.str.1633, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1634, i64 1, i64 0 }) - br label %endif2502 -else2501: + call void @finch.gen.bufText(ptr %t466, { ptr, i64, i64 } { ptr @.str.1810, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1811, i64 1, i64 0 }) + br label %endif2749 +else2748: %t467 = load ptr, ptr %a1 %t468 = icmp eq ptr %t467, null - br i1 %t468, label %panic2513, label %ok2514 -panic2513: - call void @finch_panic(ptr @.str.1635, i64 922, ptr @.str.1636) + br i1 %t468, label %panic2760, label %ok2761 +panic2760: + call void @finch_panic(ptr @.str.1812, i64 1041, ptr @.str.1813) unreachable -ok2514: +ok2761: %t469 = getelementptr inbounds %S.gen.Gen, ptr %t467, i32 0, i32 15 %t470 = load ptr, ptr %a1 %t471 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -24839,11 +28348,11 @@ ok2514: %t476 = load { ptr, i64, i64 }, ptr %t469 %t477 = extractvalue { ptr, i64, i64 } %t476, 1 %t478 = icmp uge i64 %t475, %t477 - br i1 %t478, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1637, i64 922, i64 %t475, i64 %t477) + br i1 %t478, label %range2762, label %inrange2763 +range2762: + call void @finch_panic_index(ptr @.str.1814, i64 1041, i64 %t475, i64 %t477) unreachable -inrange2516: +inrange2763: %t479 = extractvalue { ptr, i64, i64 } %t476, 0 %t480 = getelementptr inbounds %S.gen.StructDef, ptr %t479, i64 %t475 %t481 = load %S.gen.StructDef, ptr %t480 @@ -24859,28 +28368,28 @@ inrange2516: %t491 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 1 %t492 = load { ptr, i64, i64 }, ptr %t491 store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.1639, i64 1, i64 0 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.1816, i64 1, i64 0 }, ptr %a495 call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) %t496 = load { ptr, i64, i64 }, ptr %a493 - call void @finch.gen.bufText(ptr %t490, { ptr, i64, i64 } { ptr @.str.1638, i64 4, i64 0 }, { ptr, i64, i64 } %t496) + call void @finch.gen.bufText(ptr %t490, { ptr, i64, i64 } { ptr @.str.1815, i64 4, i64 0 }, { ptr, i64, i64 } %t496) %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 12 %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i32 0, i32 1 %t499 = load i64, ptr %t498 store i64 0, ptr %a500 - br label %for.cond2517 -for.cond2517: + br label %for.cond2764 +for.cond2764: %t501 = load i64, ptr %a500 %t502 = icmp slt i64 %t501, %t499 - br i1 %t502, label %for.body2518, label %for.end2520 -for.body2518: - store { ptr, i64, i64 } { ptr @.str.1640, i64 2, i64 0 }, ptr %a503 + br i1 %t502, label %for.body2765, label %for.end2767 +for.body2765: + store { ptr, i64, i64 } { ptr @.str.1817, i64 2, i64 0 }, ptr %a503 %t504 = load i64, ptr %a500 %t505 = icmp eq i64 %t504, 0 - br i1 %t505, label %then2521, label %endif2523 -then2521: - store { ptr, i64, i64 } { ptr @.str.1641, i64 0, i64 0 }, ptr %a503 - br label %endif2523 -endif2523: + br i1 %t505, label %then2768, label %endif2770 +then2768: + store { ptr, i64, i64 } { ptr @.str.1818, i64 0, i64 0 }, ptr %a503 + br label %endif2770 +endif2770: %t506 = load ptr, ptr %a1 %t507 = load { ptr, i64, i64 }, ptr %a503 %t508 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 11 @@ -24888,11 +28397,11 @@ endif2523: %t510 = load { ptr, i64, i64 }, ptr %t508 %t511 = extractvalue { ptr, i64, i64 } %t510, 1 %t512 = icmp uge i64 %t509, %t511 - br i1 %t512, label %range2524, label %inrange2525 -range2524: - call void @finch_panic_index(ptr @.str.1643, i64 930, i64 %t509, i64 %t511) + br i1 %t512, label %range2771, label %inrange2772 +range2771: + call void @finch_panic_index(ptr @.str.1820, i64 1049, i64 %t509, i64 %t511) unreachable -inrange2525: +inrange2772: %t513 = extractvalue { ptr, i64, i64 } %t510, 0 %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i64 %t509 %t515 = load { ptr, i64, i64 }, ptr %t514 @@ -24901,18 +28410,18 @@ inrange2525: call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) %t519 = load { ptr, i64, i64 }, ptr %a516 store { ptr, i64, i64 } %t519, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.1644, i64 2, i64 0 }, ptr %a522 + store { ptr, i64, i64 } { ptr @.str.1821, i64 2, i64 0 }, ptr %a522 call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) %t523 = load { ptr, i64, i64 }, ptr %a520 - call void @finch.gen.bufText(ptr %t506, { ptr, i64, i64 } { ptr @.str.1642, i64 4, i64 0 }, { ptr, i64, i64 } %t523) + call void @finch.gen.bufText(ptr %t506, { ptr, i64, i64 } { ptr @.str.1819, i64 4, i64 0 }, { ptr, i64, i64 } %t523) %t524 = load ptr, ptr %a1 %t525 = load { ptr, i64, i64 }, ptr %a489 - store { ptr, i64, i64 } { ptr @.str.1645, i64 23, i64 0 }, ptr %a527 + store { ptr, i64, i64 } { ptr @.str.1822, i64 23, i64 0 }, ptr %a527 store { ptr, i64, i64 } %t525, ptr %a528 call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) %t529 = load { ptr, i64, i64 }, ptr %a526 store { ptr, i64, i64 } %t529, ptr %a531 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a532 + store { ptr, i64, i64 } { ptr @.str.1823, i64 21, i64 0 }, ptr %a532 call void @finch_str_concat(ptr %a530, ptr %a531, ptr %a532) %t533 = load { ptr, i64, i64 }, ptr %a530 %t534 = getelementptr inbounds %S.gen.StructDef, ptr %a485, i32 0, i32 3 @@ -24920,11 +28429,11 @@ inrange2525: %t536 = load { ptr, i64, i64 }, ptr %t534 %t537 = extractvalue { ptr, i64, i64 } %t536, 1 %t538 = icmp uge i64 %t535, %t537 - br i1 %t538, label %range2526, label %inrange2527 -range2526: - call void @finch_panic_index(ptr @.str.1647, i64 931, i64 %t535, i64 %t537) + br i1 %t538, label %range2773, label %inrange2774 +range2773: + call void @finch_panic_index(ptr @.str.1824, i64 1050, i64 %t535, i64 %t537) unreachable -inrange2527: +inrange2774: %t539 = extractvalue { ptr, i64, i64 } %t536, 0 %t540 = getelementptr inbounds i64, ptr %t539, i64 %t535 %t541 = load i64, ptr %t540 @@ -24944,11 +28453,11 @@ inrange2527: %t555 = load { ptr, i64, i64 }, ptr %t553 %t556 = extractvalue { ptr, i64, i64 } %t555, 1 %t557 = icmp uge i64 %t554, %t556 - br i1 %t557, label %range2528, label %inrange2529 -range2528: - call void @finch_panic_index(ptr @.str.1649, i64 932, i64 %t554, i64 %t556) + br i1 %t557, label %range2775, label %inrange2776 +range2775: + call void @finch_panic_index(ptr @.str.1826, i64 1051, i64 %t554, i64 %t556) unreachable -inrange2529: +inrange2776: %t558 = extractvalue { ptr, i64, i64 } %t555, 0 %t559 = getelementptr inbounds %S.ast.Type, ptr %t558, i64 %t554 %t560 = load %S.ast.Type, ptr %t559 @@ -24960,41 +28469,41 @@ inrange2529: %t566 = load { ptr, i64, i64 }, ptr %t564 %t567 = extractvalue { ptr, i64, i64 } %t566, 1 %t568 = icmp uge i64 %t565, %t567 - br i1 %t568, label %range2530, label %inrange2531 -range2530: - call void @finch_panic_index(ptr @.str.1650, i64 932, i64 %t565, i64 %t567) + br i1 %t568, label %range2777, label %inrange2778 +range2777: + call void @finch_panic_index(ptr @.str.1827, i64 1051, i64 %t565, i64 %t567) unreachable -inrange2531: +inrange2778: %t569 = extractvalue { ptr, i64, i64 } %t566, 0 %t570 = getelementptr inbounds %S.ast.Type, ptr %t569, i64 %t565 %t571 = load %S.ast.Type, ptr %t570 - call void @finch.gen.emitFormat(ptr %t550, { ptr, i64, i64 } { ptr @.str.1648, i64 4, i64 0 }, { ptr, i64, i64 } %t563, %S.ast.Type %t571, i1 true) - br label %for.step2519 -for.step2519: + call void @finch.gen.emitFormat(ptr %t550, { ptr, i64, i64 } { ptr @.str.1825, i64 4, i64 0 }, { ptr, i64, i64 } %t563, %S.ast.Type %t571, i1 true) + br label %for.step2766 +for.step2766: %t572 = load i64, ptr %a500 %t573 = add i64 %t572, 1 store i64 %t573, ptr %a500 - br label %for.cond2517 -for.end2520: + br label %for.cond2764 +for.end2767: %t574 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t574, { ptr, i64, i64 } { ptr @.str.1651, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1652, i64 1, i64 0 }) - br label %endif2502 -endif2502: - br label %endif2477 -endif2477: - br label %endif2468 -endif2468: + call void @finch.gen.bufText(ptr %t574, { ptr, i64, i64 } { ptr @.str.1828, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1829, i64 1, i64 0 }) + br label %endif2749 +endif2749: + br label %endif2724 +endif2724: + br label %endif2715 +endif2715: %t575 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t575, { ptr, i64, i64 } { ptr @.str.1653, i64 8, i64 0 }) + call void @finch.gen.emit(ptr %t575, { ptr, i64, i64 } { ptr @.str.1830, i64 8, i64 0 }) %t576 = load ptr, ptr %a1 %t577 = load %S.gen.Saved, ptr %a34 %t578 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1654, i64 21, i64 0 }, ptr %a580 + store { ptr, i64, i64 } { ptr @.str.1831, i64 21, i64 0 }, ptr %a580 store { ptr, i64, i64 } %t578, ptr %a581 call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) %t582 = load { ptr, i64, i64 }, ptr %a579 store { ptr, i64, i64 } %t582, ptr %a584 - store { ptr, i64, i64 } { ptr @.str.1655, i64 18, i64 0 }, ptr %a585 + store { ptr, i64, i64 } { ptr @.str.1832, i64 18, i64 0 }, ptr %a585 call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) %t586 = load { ptr, i64, i64 }, ptr %a583 call void @finch.gen.endHelper(ptr %t576, %S.gen.Saved %t577, { ptr, i64, i64 } %t586) @@ -25073,29 +28582,29 @@ entry: %t11 = load i64, ptr %a7 %t12 = load i64, ptr %a10 %t13 = icmp eq i64 %t11, %t12 - br i1 %t13, label %then2532, label %endif2534 -then2532: + br i1 %t13, label %then2779, label %endif2781 +then2779: %t14 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t14, ptr %a15 call void @finch_str_copy(ptr %a16, ptr %a15) %t17 = load { ptr, i64, i64 }, ptr %a16 ret { ptr, i64, i64 } %t17 -endif2534: +endif2781: %t18 = load i64, ptr %a10 %t19 = load i64, ptr %a7 %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then2535, label %endif2537 -then2535: + br i1 %t20, label %then2782, label %endif2784 +then2782: %t21 = load ptr, ptr %a1 %t22 = load ptr, ptr %a1 %t23 = load %S.ast.Type, ptr %a3 %t24 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t23) - store { ptr, i64, i64 } { ptr @.str.1656, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1833, i64 6, i64 0 }, ptr %a26 store { ptr, i64, i64 } %t24, ptr %a27 call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) %t28 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1657, i64 1, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }, ptr %a31 call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 %t33 = load { ptr, i64, i64 }, ptr %a2 @@ -25104,7 +28613,7 @@ then2535: call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.1658, i64 4, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.1835, i64 4, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = load ptr, ptr %a1 @@ -25116,21 +28625,21 @@ then2535: %t48 = load { ptr, i64, i64 }, ptr %a45 %t49 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t48) ret { ptr, i64, i64 } %t49 -endif2537: +endif2784: %t50 = load %S.ast.Type, ptr %a3 %t51 = call i1 @finch.gen.isSigned(%S.ast.Type %t50) - br i1 %t51, label %then2538, label %endif2540 -then2538: + br i1 %t51, label %then2785, label %endif2787 +then2785: %t52 = load ptr, ptr %a1 %t53 = load ptr, ptr %a1 %t54 = load %S.ast.Type, ptr %a3 %t55 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t53, %S.ast.Type %t54) - store { ptr, i64, i64 } { ptr @.str.1659, i64 5, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.1836, i64 5, i64 0 }, ptr %a57 store { ptr, i64, i64 } %t55, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1660, i64 1, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.1837, i64 1, i64 0 }, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 %t64 = load { ptr, i64, i64 }, ptr %a2 @@ -25139,7 +28648,7 @@ then2538: call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.1661, i64 4, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.1838, i64 4, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = load ptr, ptr %a1 @@ -25151,17 +28660,17 @@ then2538: %t79 = load { ptr, i64, i64 }, ptr %a76 %t80 = call { ptr, i64, i64 } @finch.gen.op(ptr %t52, { ptr, i64, i64 } %t79) ret { ptr, i64, i64 } %t80 -endif2540: +endif2787: %t81 = load ptr, ptr %a1 %t82 = load ptr, ptr %a1 %t83 = load %S.ast.Type, ptr %a3 %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t82, %S.ast.Type %t83) - store { ptr, i64, i64 } { ptr @.str.1662, i64 5, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.1839, i64 5, i64 0 }, ptr %a86 store { ptr, i64, i64 } %t84, ptr %a87 call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1663, i64 1, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.1840, i64 1, i64 0 }, ptr %a91 call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) %t92 = load { ptr, i64, i64 }, ptr %a89 %t93 = load { ptr, i64, i64 }, ptr %a2 @@ -25170,7 +28679,7 @@ endif2540: call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1664, i64 4, i64 0 }, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.1841, i64 4, i64 0 }, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 %t102 = load ptr, ptr %a1 @@ -25236,31 +28745,31 @@ entry: store { ptr, i64, i64 } %t8, ptr %a10 %t11 = call i32 @finch_str_eq(ptr %a9, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br i1 %t12, label %then2541, label %endif2543 -then2541: + br i1 %t12, label %then2788, label %endif2790 +then2788: %t13 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t13, ptr %a14 call void @finch_str_copy(ptr %a15, ptr %a14) %t16 = load { ptr, i64, i64 }, ptr %a15 ret { ptr, i64, i64 } %t16 -endif2543: +endif2790: %t17 = load %S.ast.Type, ptr %a4 %t18 = call i64 @finch.gen.bitsOf(%S.ast.Type %t17) %t19 = load %S.ast.Type, ptr %a3 %t20 = call i64 @finch.gen.bitsOf(%S.ast.Type %t19) %t21 = icmp sgt i64 %t18, %t20 - br i1 %t21, label %then2544, label %endif2546 -then2544: + br i1 %t21, label %then2791, label %endif2793 +then2791: %t22 = load ptr, ptr %a1 %t23 = load ptr, ptr %a1 %t24 = load %S.ast.Type, ptr %a3 %t25 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t23, %S.ast.Type %t24) - store { ptr, i64, i64 } { ptr @.str.1665, i64 6, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.1842, i64 6, i64 0 }, ptr %a27 store { ptr, i64, i64 } %t25, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1666, i64 1, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.1843, i64 1, i64 0 }, ptr %a32 call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) %t33 = load { ptr, i64, i64 }, ptr %a30 %t34 = load { ptr, i64, i64 }, ptr %a2 @@ -25269,7 +28778,7 @@ then2544: call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1667, i64 4, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1844, i64 4, i64 0 }, ptr %a41 call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 %t43 = load ptr, ptr %a1 @@ -25281,17 +28790,17 @@ then2544: %t49 = load { ptr, i64, i64 }, ptr %a46 %t50 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t49) ret { ptr, i64, i64 } %t50 -endif2546: +endif2793: %t51 = load ptr, ptr %a1 %t52 = load ptr, ptr %a1 %t53 = load %S.ast.Type, ptr %a3 %t54 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t52, %S.ast.Type %t53) - store { ptr, i64, i64 } { ptr @.str.1668, i64 8, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.1845, i64 8, i64 0 }, ptr %a56 store { ptr, i64, i64 } %t54, ptr %a57 call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) %t58 = load { ptr, i64, i64 }, ptr %a55 store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1669, i64 1, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.1846, i64 1, i64 0 }, ptr %a61 call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) %t62 = load { ptr, i64, i64 }, ptr %a59 %t63 = load { ptr, i64, i64 }, ptr %a2 @@ -25300,7 +28809,7 @@ endif2546: call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1670, i64 4, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 %t72 = load ptr, ptr %a1 @@ -25356,18 +28865,18 @@ entry: store %S.ast.Type %p3, ptr %a4 %t5 = load %S.ast.Type, ptr %a3 %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then2547, label %endif2549 -then2547: + br i1 %t6, label %then2794, label %endif2796 +then2794: %t7 = load ptr, ptr %a1 %t8 = load ptr, ptr %a1 %t9 = load %S.ast.Type, ptr %a3 %t10 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t8, %S.ast.Type %t9) - store { ptr, i64, i64 } { ptr @.str.1671, i64 7, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.1848, i64 7, i64 0 }, ptr %a12 store { ptr, i64, i64 } %t10, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1672, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.1849, i64 1, i64 0 }, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 %t19 = load { ptr, i64, i64 }, ptr %a2 @@ -25376,7 +28885,7 @@ then2547: call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1673, i64 4, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1850, i64 4, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 %t28 = load ptr, ptr %a1 @@ -25388,17 +28897,17 @@ then2547: %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t34) ret { ptr, i64, i64 } %t35 -endif2549: +endif2796: %t36 = load ptr, ptr %a1 %t37 = load ptr, ptr %a1 %t38 = load %S.ast.Type, ptr %a3 %t39 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.1674, i64 7, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.1851, i64 7, i64 0 }, ptr %a41 store { ptr, i64, i64 } %t39, ptr %a42 call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) %t43 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1675, i64 1, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.1852, i64 1, i64 0 }, ptr %a46 call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 %t48 = load { ptr, i64, i64 }, ptr %a2 @@ -25407,7 +28916,7 @@ endif2549: call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t52, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.1676, i64 4, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.1853, i64 4, i64 0 }, ptr %a55 call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 %t57 = load ptr, ptr %a1 @@ -25542,97 +29051,97 @@ entry: %t7 = load %S.ast.Type, ptr %t6 %t8 = load %S.ast.Type, ptr %a3 %t9 = call i1 @finch.ast.same(%S.ast.Type %t7, %S.ast.Type %t8) - br i1 %t9, label %then2550, label %endif2552 -then2550: + br i1 %t9, label %then2797, label %endif2799 +then2797: %t10 = load %S.gen.Val, ptr %a2 store %S.gen.Val %t10, ptr %a11 call void @finch.copy.S_gen_Val(ptr %a12, ptr %a11) %t13 = load %S.gen.Val, ptr %a12 ret %S.gen.Val %t13 -endif2552: +endif2799: %t14 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t15 = getelementptr inbounds %S.ast.Type, ptr %t14, i32 0, i32 0 %t16 = load { ptr, i64, i64 }, ptr %t15 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1677, i64 4, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.1854, i64 4, i64 0 }, ptr %a18 %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) %t20 = icmp ne i32 %t19, 0 - br label %logic.from2553 -logic.from2553: - br i1 %t20, label %logic.rhs2554, label %logic.end2555 -logic.rhs2554: + br label %logic.from2800 +logic.from2800: + br i1 %t20, label %logic.rhs2801, label %logic.end2802 +logic.rhs2801: %t21 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1678, i64 3, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.1855, i64 3, i64 0 }, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br label %logic.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t27 = phi i1 [ false, %logic.from2553 ], [ %t26, %logic.rend2556 ] - br i1 %t27, label %then2557, label %endif2559 -then2557: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1679, i64 4, i64 0 }, 0 + br label %logic.rend2803 +logic.rend2803: + br label %logic.end2802 +logic.end2802: + %t27 = phi i1 [ false, %logic.from2800 ], [ %t26, %logic.rend2803 ] + br i1 %t27, label %then2804, label %endif2806 +then2804: + %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.1856, i64 4, i64 0 }, 0 %t29 = load %S.ast.Type, ptr %a3 store %S.ast.Type %t29, ptr %a30 call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) %t32 = load %S.ast.Type, ptr %a31 %t33 = insertvalue %S.gen.Val %t28, %S.ast.Type %t32, 1 ret %S.gen.Val %t33 -endif2559: +endif2806: %t34 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t35 = getelementptr inbounds %S.ast.Type, ptr %t34, i32 0, i32 0 %t36 = load { ptr, i64, i64 }, ptr %t35 store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1680, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.1857, i64 3, i64 0 }, ptr %a38 %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) %t40 = icmp ne i32 %t39, 0 - br label %logic.from2560 -logic.from2560: - br i1 %t40, label %logic.rhs2561, label %logic.end2562 -logic.rhs2561: + br label %logic.from2807 +logic.from2807: + br i1 %t40, label %logic.rhs2808, label %logic.end2809 +logic.rhs2808: %t41 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t42 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1681, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.1858, i64 3, i64 0 }, ptr %a44 %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) %t46 = icmp ne i32 %t45, 0 - br label %logic.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t47 = phi i1 [ false, %logic.from2560 ], [ %t46, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t47, label %logic.rhs2565, label %logic.end2566 -logic.rhs2565: + br label %logic.rend2810 +logic.rend2810: + br label %logic.end2809 +logic.end2809: + %t47 = phi i1 [ false, %logic.from2807 ], [ %t46, %logic.rend2810 ] + br label %logic.from2811 +logic.from2811: + br i1 %t47, label %logic.rhs2812, label %logic.end2813 +logic.rhs2812: %t48 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t49 = getelementptr inbounds %S.ast.Type, ptr %t48, i32 0, i32 1 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 %t51 = load i64, ptr %t50 %t52 = icmp eq i64 %t51, 0 - br label %logic.from2567 -logic.from2567: - br i1 %t52, label %logic.end2569, label %logic.rhs2568 -logic.rhs2568: + br label %logic.from2814 +logic.from2814: + br i1 %t52, label %logic.end2816, label %logic.rhs2815 +logic.rhs2815: %t53 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 %t55 = load i64, ptr %t54 %t56 = icmp eq i64 %t55, 0 - br label %logic.rend2570 -logic.rend2570: - br label %logic.end2569 -logic.end2569: - %t57 = phi i1 [ true, %logic.from2567 ], [ %t56, %logic.rend2570 ] - br label %logic.rend2571 -logic.rend2571: - br label %logic.end2566 -logic.end2566: - %t58 = phi i1 [ false, %logic.from2564 ], [ %t57, %logic.rend2571 ] - br i1 %t58, label %then2572, label %endif2574 -then2572: + br label %logic.rend2817 +logic.rend2817: + br label %logic.end2816 +logic.end2816: + %t57 = phi i1 [ true, %logic.from2814 ], [ %t56, %logic.rend2817 ] + br label %logic.rend2818 +logic.rend2818: + br label %logic.end2813 +logic.end2813: + %t58 = phi i1 [ false, %logic.from2811 ], [ %t57, %logic.rend2818 ] + br i1 %t58, label %then2819, label %endif2821 +then2819: %t59 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t60 = load { ptr, i64, i64 }, ptr %t59 store { ptr, i64, i64 } %t60, ptr %a61 @@ -25645,42 +29154,42 @@ then2572: %t68 = load %S.ast.Type, ptr %a67 %t69 = insertvalue %S.gen.Val %t64, %S.ast.Type %t68, 1 ret %S.gen.Val %t69 -endif2574: +endif2821: %t70 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t71 = load %S.ast.Type, ptr %t70 %t72 = call i1 @finch.gen.isInt(%S.ast.Type %t71) - br label %logic.from2575 -logic.from2575: - br i1 %t72, label %logic.rhs2576, label %logic.end2577 -logic.rhs2576: + br label %logic.from2822 +logic.from2822: + br i1 %t72, label %logic.rhs2823, label %logic.end2824 +logic.rhs2823: %t73 = load %S.ast.Type, ptr %a3 %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend2578 -logic.rend2578: - br label %logic.end2577 -logic.end2577: - %t75 = phi i1 [ false, %logic.from2575 ], [ %t74, %logic.rend2578 ] - br i1 %t75, label %then2579, label %endif2581 -then2579: + br label %logic.rend2825 +logic.rend2825: + br label %logic.end2824 +logic.end2824: + %t75 = phi i1 [ false, %logic.from2822 ], [ %t74, %logic.rend2825 ] + br i1 %t75, label %then2826, label %endif2828 +then2826: %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t77 = load i1, ptr %t76 - br label %logic.from2582 -logic.from2582: - br i1 %t77, label %logic.rhs2583, label %logic.end2584 -logic.rhs2583: + br label %logic.from2829 +logic.from2829: + br i1 %t77, label %logic.rhs2830, label %logic.end2831 +logic.rhs2830: %t78 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t79 = load { ptr, i64, i64 }, ptr %t78 %t80 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t81 = load %S.ast.Type, ptr %t80 %t82 = load %S.ast.Type, ptr %a3 %t83 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t79, %S.ast.Type %t81, %S.ast.Type %t82) - br label %logic.rend2585 -logic.rend2585: - br label %logic.end2584 -logic.end2584: - %t84 = phi i1 [ false, %logic.from2582 ], [ %t83, %logic.rend2585 ] - br i1 %t84, label %then2586, label %endif2588 -then2586: + br label %logic.rend2832 +logic.rend2832: + br label %logic.end2831 +logic.end2831: + %t84 = phi i1 [ false, %logic.from2829 ], [ %t83, %logic.rend2832 ] + br i1 %t84, label %then2833, label %endif2835 +then2833: %t85 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t86 = load { ptr, i64, i64 }, ptr %t85 store { ptr, i64, i64 } %t86, ptr %a87 @@ -25694,13 +29203,13 @@ then2586: %t95 = insertvalue %S.gen.Val %t90, %S.ast.Type %t94, 1 %t96 = insertvalue %S.gen.Val %t95, i1 true, 3 ret %S.gen.Val %t96 -endif2588: +endif2835: %t97 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t98 = load %S.ast.Type, ptr %t97 %t99 = load %S.ast.Type, ptr %a3 %t100 = call i1 @finch.gen.widens(%S.ast.Type %t98, %S.ast.Type %t99) - br i1 %t100, label %then2589, label %endif2591 -then2589: + br i1 %t100, label %then2836, label %endif2838 +then2836: %t101 = load ptr, ptr %a1 %t102 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t103 = load { ptr, i64, i64 }, ptr %t102 @@ -25715,21 +29224,21 @@ then2589: %t112 = load %S.ast.Type, ptr %a111 %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif2591: +endif2838: %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t115 = load i1, ptr %t114 - br i1 %t115, label %then2592, label %endif2594 -then2592: + br i1 %t115, label %then2839, label %endif2841 +then2839: %t116 = load ptr, ptr %a1 %t117 = load %S.ast.Node, ptr %a4 %t118 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } { ptr @.str.1682, i64 11, i64 0 }, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.1859, i64 11, i64 0 }, ptr %a121 store { ptr, i64, i64 } %t119, ptr %a122 call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) %t123 = load { ptr, i64, i64 }, ptr %a120 store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1683, i64 16, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.1860, i64 16, i64 0 }, ptr %a126 call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) %t127 = load { ptr, i64, i64 }, ptr %a124 %t128 = load %S.ast.Type, ptr %a3 @@ -25739,49 +29248,49 @@ then2592: call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t133) - br label %endif2594 -endif2594: - br label %endif2581 -endif2581: + br label %endif2841 +endif2841: + br label %endif2828 +endif2828: %t134 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t135 = load %S.ast.Type, ptr %t134 %t136 = call i1 @finch.gen.isInt(%S.ast.Type %t135) - br label %logic.from2595 -logic.from2595: - br i1 %t136, label %logic.rhs2596, label %logic.end2597 -logic.rhs2596: + br label %logic.from2842 +logic.from2842: + br i1 %t136, label %logic.rhs2843, label %logic.end2844 +logic.rhs2843: %t137 = load %S.ast.Type, ptr %a3 %t138 = call i1 @finch.gen.isFloat(%S.ast.Type %t137) - br label %logic.rend2598 -logic.rend2598: - br label %logic.end2597 -logic.end2597: - %t139 = phi i1 [ false, %logic.from2595 ], [ %t138, %logic.rend2598 ] - br i1 %t139, label %then2599, label %endif2601 -then2599: + br label %logic.rend2845 +logic.rend2845: + br label %logic.end2844 +logic.end2844: + %t139 = phi i1 [ false, %logic.from2842 ], [ %t138, %logic.rend2845 ] + br i1 %t139, label %then2846, label %endif2848 +then2846: %t140 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t141 = load i1, ptr %t140 - br label %logic.from2602 -logic.from2602: - br i1 %t141, label %logic.rhs2603, label %logic.end2604 -logic.rhs2603: + br label %logic.from2849 +logic.from2849: + br i1 %t141, label %logic.rhs2850, label %logic.end2851 +logic.rhs2850: %t142 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t143 = load { ptr, i64, i64 }, ptr %t142 store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1684, i64 5, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.1861, i64 5, i64 0 }, ptr %a145 %t146 = call i32 @finch_str_eq(ptr %a144, ptr %a145) %t147 = icmp ne i32 %t146, 0 - br label %logic.rend2605 -logic.rend2605: - br label %logic.end2604 -logic.end2604: - %t148 = phi i1 [ false, %logic.from2602 ], [ %t147, %logic.rend2605 ] - br i1 %t148, label %then2606, label %endif2608 -then2606: + br label %logic.rend2852 +logic.rend2852: + br label %logic.end2851 +logic.end2851: + %t148 = phi i1 [ false, %logic.from2849 ], [ %t147, %logic.rend2852 ] + br i1 %t148, label %then2853, label %endif2855 +then2853: %t149 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t150 = load { ptr, i64, i64 }, ptr %t149 store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.1685, i64 2, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.1862, i64 2, i64 0 }, ptr %a153 call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) %t154 = load { ptr, i64, i64 }, ptr %a151 %t155 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t154, 0 @@ -25792,7 +29301,7 @@ then2606: %t160 = insertvalue %S.gen.Val %t155, %S.ast.Type %t159, 1 %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 ret %S.gen.Val %t161 -endif2608: +endif2855: %t162 = load ptr, ptr %a1 %t163 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t164 = load { ptr, i64, i64 }, ptr %t163 @@ -25807,31 +29316,31 @@ endif2608: %t173 = load %S.ast.Type, ptr %a172 %t174 = insertvalue %S.gen.Val %t169, %S.ast.Type %t173, 1 ret %S.gen.Val %t174 -endif2601: +endif2848: %t175 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i32 0, i32 0 %t177 = load { ptr, i64, i64 }, ptr %t176 store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.1686, i64 3, i64 0 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.1863, i64 3, i64 0 }, ptr %a179 %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) %t181 = icmp ne i32 %t180, 0 - br label %logic.from2609 -logic.from2609: - br i1 %t181, label %logic.rhs2610, label %logic.end2611 -logic.rhs2610: + br label %logic.from2856 +logic.from2856: + br i1 %t181, label %logic.rhs2857, label %logic.end2858 +logic.rhs2857: %t182 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t183 = load { ptr, i64, i64 }, ptr %t182 store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1687, i64 5, i64 0 }, ptr %a185 + store { ptr, i64, i64 } { ptr @.str.1864, i64 5, i64 0 }, ptr %a185 %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) %t187 = icmp ne i32 %t186, 0 - br label %logic.rend2612 -logic.rend2612: - br label %logic.end2611 -logic.end2611: - %t188 = phi i1 [ false, %logic.from2609 ], [ %t187, %logic.rend2612 ] - br i1 %t188, label %then2613, label %endif2615 -then2613: + br label %logic.rend2859 +logic.rend2859: + br label %logic.end2858 +logic.end2858: + %t188 = phi i1 [ false, %logic.from2856 ], [ %t187, %logic.rend2859 ] + br i1 %t188, label %then2860, label %endif2862 +then2860: %t189 = load ptr, ptr %a1 %t190 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t191 = load { ptr, i64, i64 }, ptr %t190 @@ -25846,42 +29355,42 @@ then2613: %t200 = load %S.ast.Type, ptr %a199 %t201 = insertvalue %S.gen.Val %t196, %S.ast.Type %t200, 1 ret %S.gen.Val %t201 -endif2615: +endif2862: %t202 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t203 = getelementptr inbounds %S.ast.Type, ptr %t202, i32 0, i32 0 %t204 = load { ptr, i64, i64 }, ptr %t203 store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.1688, i64 5, i64 0 }, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.1865, i64 5, i64 0 }, ptr %a206 %t207 = call i32 @finch_str_eq(ptr %a205, ptr %a206) %t208 = icmp ne i32 %t207, 0 - br label %logic.from2616 -logic.from2616: - br i1 %t208, label %logic.rhs2617, label %logic.end2618 -logic.rhs2617: + br label %logic.from2863 +logic.from2863: + br i1 %t208, label %logic.rhs2864, label %logic.end2865 +logic.rhs2864: %t209 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t210 = load { ptr, i64, i64 }, ptr %t209 store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1689, i64 3, i64 0 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.1866, i64 3, i64 0 }, ptr %a212 %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) %t214 = icmp ne i32 %t213, 0 - br label %logic.rend2619 -logic.rend2619: - br label %logic.end2618 -logic.end2618: - %t215 = phi i1 [ false, %logic.from2616 ], [ %t214, %logic.rend2619 ] - br label %logic.from2620 -logic.from2620: - br i1 %t215, label %logic.rhs2621, label %logic.end2622 -logic.rhs2621: + br label %logic.rend2866 +logic.rend2866: + br label %logic.end2865 +logic.end2865: + %t215 = phi i1 [ false, %logic.from2863 ], [ %t214, %logic.rend2866 ] + br label %logic.from2867 +logic.from2867: + br i1 %t215, label %logic.rhs2868, label %logic.end2869 +logic.rhs2868: %t216 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 %t217 = load i1, ptr %t216 - br label %logic.rend2623 -logic.rend2623: - br label %logic.end2622 -logic.end2622: - %t218 = phi i1 [ false, %logic.from2620 ], [ %t217, %logic.rend2623 ] - br i1 %t218, label %then2624, label %endif2626 -then2624: + br label %logic.rend2870 +logic.rend2870: + br label %logic.end2869 +logic.end2869: + %t218 = phi i1 [ false, %logic.from2867 ], [ %t217, %logic.rend2870 ] + br i1 %t218, label %then2871, label %endif2873 +then2871: %t219 = load ptr, ptr %a1 %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 %t221 = load { ptr, i64, i64 }, ptr %t220 @@ -25896,10 +29405,10 @@ then2624: %t230 = load %S.ast.Type, ptr %a229 %t231 = insertvalue %S.gen.Val %t226, %S.ast.Type %t230, 1 ret %S.gen.Val %t231 -endif2626: +endif2873: %t232 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.1690, i64 9, i64 0 }, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.1867, i64 9, i64 0 }, ptr %a235 call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) %t236 = load { ptr, i64, i64 }, ptr %a233 %t237 = load %S.ast.Type, ptr %a3 @@ -25909,7 +29418,7 @@ endif2626: call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) %t242 = load { ptr, i64, i64 }, ptr %a239 store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.1691, i64 14, i64 0 }, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.1868, i64 14, i64 0 }, ptr %a245 call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 %t247 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 @@ -25923,22 +29432,22 @@ endif2626: %t255 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t256 = load %S.ast.Type, ptr %t255 %t257 = call i1 @finch.gen.isNumber(%S.ast.Type %t256) - br label %logic.from2627 -logic.from2627: - br i1 %t257, label %logic.rhs2628, label %logic.end2629 -logic.rhs2628: + br label %logic.from2874 +logic.from2874: + br i1 %t257, label %logic.rhs2875, label %logic.end2876 +logic.rhs2875: %t258 = load %S.ast.Type, ptr %a3 %t259 = call i1 @finch.gen.isNumber(%S.ast.Type %t258) - br label %logic.rend2630 -logic.rend2630: - br label %logic.end2629 -logic.end2629: - %t260 = phi i1 [ false, %logic.from2627 ], [ %t259, %logic.rend2630 ] - br i1 %t260, label %then2631, label %endif2633 -then2631: + br label %logic.rend2877 +logic.rend2877: + br label %logic.end2876 +logic.end2876: + %t260 = phi i1 [ false, %logic.from2874 ], [ %t259, %logic.rend2877 ] + br i1 %t260, label %then2878, label %endif2880 +then2878: %t261 = load { ptr, i64, i64 }, ptr %a254 store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.1692, i64 6, i64 0 }, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.1869, i64 6, i64 0 }, ptr %a264 call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) %t265 = load { ptr, i64, i64 }, ptr %a262 %t266 = load %S.ast.Type, ptr %a3 @@ -25948,102 +29457,102 @@ then2631: call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) %t271 = load { ptr, i64, i64 }, ptr %a268 store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1693, i64 16, i64 0 }, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.1870, i64 16, i64 0 }, ptr %a274 call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) %t275 = load { ptr, i64, i64 }, ptr %a272 store { ptr, i64, i64 } %t275, ptr %a254 %t276 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t277 = load %S.ast.Type, ptr %t276 %t278 = call i1 @finch.gen.isFloat(%S.ast.Type %t277) - br label %logic.from2634 -logic.from2634: - br i1 %t278, label %logic.rhs2635, label %logic.end2636 -logic.rhs2635: + br label %logic.from2881 +logic.from2881: + br i1 %t278, label %logic.rhs2882, label %logic.end2883 +logic.rhs2882: %t279 = load %S.ast.Type, ptr %a3 %t280 = call i1 @finch.gen.isInt(%S.ast.Type %t279) - br label %logic.rend2637 -logic.rend2637: - br label %logic.end2636 -logic.end2636: - %t281 = phi i1 [ false, %logic.from2634 ], [ %t280, %logic.rend2637 ] - br i1 %t281, label %then2638, label %endif2640 -then2638: + br label %logic.rend2884 +logic.rend2884: + br label %logic.end2883 +logic.end2883: + %t281 = phi i1 [ false, %logic.from2881 ], [ %t280, %logic.rend2884 ] + br i1 %t281, label %then2885, label %endif2887 +then2885: %t282 = load { ptr, i64, i64 }, ptr %a254 store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1694, i64 26, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.1871, i64 26, i64 0 }, ptr %a285 call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) %t286 = load { ptr, i64, i64 }, ptr %a283 store { ptr, i64, i64 } %t286, ptr %a254 - br label %endif2640 -endif2640: + br label %endif2887 +endif2887: %t287 = load { ptr, i64, i64 }, ptr %a254 store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.1695, i64 1, i64 0 }, ptr %a290 + store { ptr, i64, i64 } { ptr @.str.1872, i64 1, i64 0 }, ptr %a290 call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) %t291 = load { ptr, i64, i64 }, ptr %a288 store { ptr, i64, i64 } %t291, ptr %a254 - br label %endif2633 -endif2633: + br label %endif2880 +endif2880: %t292 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t293 = load { ptr, i64, i64 }, ptr %t292 store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.1696, i64 3, i64 0 }, ptr %a295 + store { ptr, i64, i64 } { ptr @.str.1873, i64 3, i64 0 }, ptr %a295 %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) %t297 = icmp ne i32 %t296, 0 - br label %logic.from2641 -logic.from2641: - br i1 %t297, label %logic.rhs2642, label %logic.end2643 -logic.rhs2642: + br label %logic.from2888 +logic.from2888: + br i1 %t297, label %logic.rhs2889, label %logic.end2890 +logic.rhs2889: %t298 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t299 = load %S.ast.Type, ptr %t298 %t300 = call i1 @finch.gen.isNumber(%S.ast.Type %t299) - br label %logic.from2644 -logic.from2644: - br i1 %t300, label %logic.end2646, label %logic.rhs2645 -logic.rhs2645: + br label %logic.from2891 +logic.from2891: + br i1 %t300, label %logic.end2893, label %logic.rhs2892 +logic.rhs2892: %t301 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i32 0, i32 0 %t303 = load { ptr, i64, i64 }, ptr %t302 store { ptr, i64, i64 } %t303, ptr %a304 - store { ptr, i64, i64 } { ptr @.str.1697, i64 4, i64 0 }, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.1874, i64 4, i64 0 }, ptr %a305 %t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305) %t307 = icmp ne i32 %t306, 0 - br label %logic.rend2647 -logic.rend2647: - br label %logic.end2646 -logic.end2646: - %t308 = phi i1 [ true, %logic.from2644 ], [ %t307, %logic.rend2647 ] - br label %logic.from2648 -logic.from2648: - br i1 %t308, label %logic.end2650, label %logic.rhs2649 -logic.rhs2649: + br label %logic.rend2894 +logic.rend2894: + br label %logic.end2893 +logic.end2893: + %t308 = phi i1 [ true, %logic.from2891 ], [ %t307, %logic.rend2894 ] + br label %logic.from2895 +logic.from2895: + br i1 %t308, label %logic.end2897, label %logic.rhs2896 +logic.rhs2896: %t309 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 %t310 = getelementptr inbounds %S.ast.Type, ptr %t309, i32 0, i32 0 %t311 = load { ptr, i64, i64 }, ptr %t310 store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.1698, i64 4, i64 0 }, ptr %a313 + store { ptr, i64, i64 } { ptr @.str.1875, i64 4, i64 0 }, ptr %a313 %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) %t315 = icmp ne i32 %t314, 0 - br label %logic.rend2651 -logic.rend2651: - br label %logic.end2650 -logic.end2650: - %t316 = phi i1 [ true, %logic.from2648 ], [ %t315, %logic.rend2651 ] - br label %logic.rend2652 -logic.rend2652: - br label %logic.end2643 -logic.end2643: - %t317 = phi i1 [ false, %logic.from2641 ], [ %t316, %logic.rend2652 ] - br i1 %t317, label %then2653, label %endif2655 -then2653: + br label %logic.rend2898 +logic.rend2898: + br label %logic.end2897 +logic.end2897: + %t316 = phi i1 [ true, %logic.from2895 ], [ %t315, %logic.rend2898 ] + br label %logic.rend2899 +logic.rend2899: + br label %logic.end2890 +logic.end2890: + %t317 = phi i1 [ false, %logic.from2888 ], [ %t316, %logic.rend2899 ] + br i1 %t317, label %then2900, label %endif2902 +then2900: %t318 = load { ptr, i64, i64 }, ptr %a254 store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1699, i64 34, i64 0 }, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.1876, i64 34, i64 0 }, ptr %a321 call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) %t322 = load { ptr, i64, i64 }, ptr %a319 store { ptr, i64, i64 } %t322, ptr %a254 - br label %endif2655 -endif2655: + br label %endif2902 +endif2902: %t323 = load ptr, ptr %a1 %t324 = load %S.ast.Node, ptr %a4 %t325 = load { ptr, i64, i64 }, ptr %a254 @@ -26068,28 +29577,28 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1700, i64 1029, ptr @.str.1701) + br i1 %t4, label %panic2903, label %ok2904 +panic2903: + call void @finch_panic(ptr @.str.1877, i64 1148, ptr @.str.1878) unreachable -ok2657: +ok2904: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load i64, ptr %t6 store i64 0, ptr %a8 - br label %for.cond2658 -for.cond2658: + br label %for.cond2905 +for.cond2905: %t9 = load i64, ptr %a8 %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2659, label %for.end2661 -for.body2659: + br i1 %t10, label %for.body2906, label %for.end2908 +for.body2906: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1702, i64 1030, ptr @.str.1703) + br i1 %t12, label %panic2909, label %ok2910 +panic2909: + call void @finch_panic(ptr @.str.1879, i64 1149, ptr @.str.1880) unreachable -ok2663: +ok2910: %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 10 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i32 0, i32 1 %t15 = load i64, ptr %t14 @@ -26099,50 +29608,50 @@ ok2663: store i64 %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1704, i64 1031, ptr @.str.1705) + br i1 %t21, label %panic2911, label %ok2912 +panic2911: + call void @finch_panic(ptr @.str.1881, i64 1150, ptr @.str.1882) unreachable -ok2665: +ok2912: %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 %t23 = load i64, ptr %a19 %t24 = load { ptr, i64, i64 }, ptr %t22 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range2666, label %inrange2667 -range2666: - call void @finch_panic_index(ptr @.str.1706, i64 1031, i64 %t23, i64 %t25) + br i1 %t26, label %range2913, label %inrange2914 +range2913: + call void @finch_panic_index(ptr @.str.1883, i64 1150, i64 %t23, i64 %t25) unreachable -inrange2667: +inrange2914: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 0 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 %t31 = load i64, ptr %t30 store i64 0, ptr %a32 - br label %for.cond2668 -for.cond2668: + br label %for.cond2915 +for.cond2915: %t33 = load i64, ptr %a32 %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body2669, label %for.end2671 -for.body2669: + br i1 %t34, label %for.body2916, label %for.end2918 +for.body2916: %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1707, i64 1032, ptr @.str.1708) + br i1 %t36, label %panic2919, label %ok2920 +panic2919: + call void @finch_panic(ptr @.str.1884, i64 1151, ptr @.str.1885) unreachable -ok2673: +ok2920: %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 10 %t38 = load i64, ptr %a19 %t39 = load { ptr, i64, i64 }, ptr %t37 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range2674, label %inrange2675 -range2674: - call void @finch_panic_index(ptr @.str.1709, i64 1032, i64 %t38, i64 %t40) + br i1 %t41, label %range2921, label %inrange2922 +range2921: + call void @finch_panic_index(ptr @.str.1886, i64 1151, i64 %t38, i64 %t40) unreachable -inrange2675: +inrange2922: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.gen.Scope, ptr %t42, i64 %t38 %t44 = getelementptr inbounds %S.gen.Scope, ptr %t43, i32 0, i32 0 @@ -26150,11 +29659,11 @@ inrange2675: %t46 = load { ptr, i64, i64 }, ptr %t44 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 %t45, %t47 - br i1 %t48, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1710, i64 1032, i64 %t45, i64 %t47) + br i1 %t48, label %range2923, label %inrange2924 +range2923: + call void @finch_panic_index(ptr @.str.1887, i64 1151, i64 %t45, i64 %t47) unreachable -inrange2677: +inrange2924: %t49 = extractvalue { ptr, i64, i64 } %t46, 0 %t50 = getelementptr inbounds %S.gen.Var, ptr %t49, i64 %t45 %t51 = getelementptr inbounds %S.gen.Var, ptr %t50, i32 0, i32 0 @@ -26164,38 +29673,38 @@ inrange2677: store { ptr, i64, i64 } %t53, ptr %a55 %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) %t57 = icmp ne i32 %t56, 0 - br i1 %t57, label %then2678, label %endif2680 -then2678: + br i1 %t57, label %then2925, label %endif2927 +then2925: %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic2681, label %ok2682 -panic2681: - call void @finch_panic(ptr @.str.1711, i64 1033, ptr @.str.1712) + br i1 %t59, label %panic2928, label %ok2929 +panic2928: + call void @finch_panic(ptr @.str.1888, i64 1152, ptr @.str.1889) unreachable -ok2682: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 40 +ok2929: + %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 42 %t61 = load i1, ptr %t60 - br label %logic.from2683 -logic.from2683: - br i1 %t61, label %logic.rhs2684, label %logic.end2685 -logic.rhs2684: + br label %logic.from2930 +logic.from2930: + br i1 %t61, label %logic.rhs2931, label %logic.end2932 +logic.rhs2931: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic2686, label %ok2687 -panic2686: - call void @finch_panic(ptr @.str.1713, i64 1033, ptr @.str.1714) + br i1 %t63, label %panic2933, label %ok2934 +panic2933: + call void @finch_panic(ptr @.str.1890, i64 1152, ptr @.str.1891) unreachable -ok2687: +ok2934: %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 10 %t65 = load i64, ptr %a19 %t66 = load { ptr, i64, i64 }, ptr %t64 %t67 = extractvalue { ptr, i64, i64 } %t66, 1 %t68 = icmp uge i64 %t65, %t67 - br i1 %t68, label %range2688, label %inrange2689 -range2688: - call void @finch_panic_index(ptr @.str.1715, i64 1033, i64 %t65, i64 %t67) + br i1 %t68, label %range2935, label %inrange2936 +range2935: + call void @finch_panic_index(ptr @.str.1892, i64 1152, i64 %t65, i64 %t67) unreachable -inrange2689: +inrange2936: %t69 = extractvalue { ptr, i64, i64 } %t66, 0 %t70 = getelementptr inbounds %S.gen.Scope, ptr %t69, i64 %t65 %t71 = getelementptr inbounds %S.gen.Scope, ptr %t70, i32 0, i32 0 @@ -26203,54 +29712,54 @@ inrange2689: %t73 = load { ptr, i64, i64 }, ptr %t71 %t74 = extractvalue { ptr, i64, i64 } %t73, 1 %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range2690, label %inrange2691 -range2690: - call void @finch_panic_index(ptr @.str.1716, i64 1033, i64 %t72, i64 %t74) + br i1 %t75, label %range2937, label %inrange2938 +range2937: + call void @finch_panic_index(ptr @.str.1893, i64 1152, i64 %t72, i64 %t74) unreachable -inrange2691: +inrange2938: %t76 = extractvalue { ptr, i64, i64 } %t73, 0 %t77 = getelementptr inbounds %S.gen.Var, ptr %t76, i64 %t72 %t78 = getelementptr inbounds %S.gen.Var, ptr %t77, i32 0, i32 4 %t79 = load i64, ptr %t78 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2692, label %ok2693 -panic2692: - call void @finch_panic(ptr @.str.1717, i64 1033, ptr @.str.1718) + br i1 %t81, label %panic2939, label %ok2940 +panic2939: + call void @finch_panic(ptr @.str.1894, i64 1152, ptr @.str.1895) unreachable -ok2693: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 41 +ok2940: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 43 %t83 = load i64, ptr %t82 %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend2694 -logic.rend2694: - br label %logic.end2685 -logic.end2685: - %t85 = phi i1 [ false, %logic.from2683 ], [ %t84, %logic.rend2694 ] - br i1 %t85, label %then2695, label %endif2697 -then2695: - br label %for.step2670 -endif2697: + br label %logic.rend2941 +logic.rend2941: + br label %logic.end2932 +logic.end2932: + %t85 = phi i1 [ false, %logic.from2930 ], [ %t84, %logic.rend2941 ] + br i1 %t85, label %then2942, label %endif2944 +then2942: + br label %for.step2917 +endif2944: %t86 = load i64, ptr %a19 %t87 = mul i64 %t86, 100000 %t88 = load i64, ptr %a32 %t89 = add i64 %t87, %t88 ret i64 %t89 -endif2680: - br label %for.step2670 -for.step2670: +endif2927: + br label %for.step2917 +for.step2917: %t90 = load i64, ptr %a32 %t91 = add i64 %t90, 1 store i64 %t91, ptr %a32 - br label %for.cond2668 -for.end2671: - br label %for.step2660 -for.step2660: + br label %for.cond2915 +for.end2918: + br label %for.step2907 +for.step2907: %t92 = load i64, ptr %a8 %t93 = add i64 %t92, 1 store i64 %t93, ptr %a8 - br label %for.cond2658 -for.end2661: + br label %for.cond2905 +for.end2908: ret i64 -1 } @@ -26268,6 +29777,9 @@ entry: %t6 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 2 %t7 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 2 call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.gen.Var, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t8, ptr %t9) ret void } @@ -26281,22 +29793,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2698, label %ok2699 -panic2698: - call void @finch_panic(ptr @.str.1719, i64 1044, ptr @.str.1720) + br i1 %t4, label %panic2945, label %ok2946 +panic2945: + call void @finch_panic(ptr @.str.1896, i64 1163, ptr @.str.1897) unreachable -ok2699: +ok2946: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 %t6 = load i64, ptr %a2 %t7 = sdiv i64 %t6, 100000 %t8 = load { ptr, i64, i64 }, ptr %t5 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range2700, label %inrange2701 -range2700: - call void @finch_panic_index(ptr @.str.1721, i64 1044, i64 %t7, i64 %t9) + br i1 %t10, label %range2947, label %inrange2948 +range2947: + call void @finch_panic_index(ptr @.str.1898, i64 1163, i64 %t7, i64 %t9) unreachable -inrange2701: +inrange2948: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i64 %t7 %t13 = getelementptr inbounds %S.gen.Scope, ptr %t12, i32 0, i32 0 @@ -26305,11 +29817,11 @@ inrange2701: %t16 = load { ptr, i64, i64 }, ptr %t13 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2702, label %inrange2703 -range2702: - call void @finch_panic_index(ptr @.str.1722, i64 1044, i64 %t15, i64 %t17) + br i1 %t18, label %range2949, label %inrange2950 +range2949: + call void @finch_panic_index(ptr @.str.1899, i64 1163, i64 %t15, i64 %t17) unreachable -inrange2703: +inrange2950: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.Var, ptr %t19, i64 %t15 %t21 = load %S.gen.Var, ptr %t20 @@ -26334,38 +29846,38 @@ entry: store { ptr, i64, i64 } %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2704, label %ok2705 -panic2704: - call void @finch_panic(ptr @.str.1723, i64 1048, ptr @.str.1724) + br i1 %t5, label %panic2951, label %ok2952 +panic2951: + call void @finch_panic(ptr @.str.1900, i64 1167, ptr @.str.1901) unreachable -ok2705: +ok2952: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t8 = load i64, ptr %t7 store i64 0, ptr %a9 - br label %for.cond2706 -for.cond2706: + br label %for.cond2953 +for.cond2953: %t10 = load i64, ptr %a9 %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2707, label %for.end2709 -for.body2707: + br i1 %t11, label %for.body2954, label %for.end2956 +for.body2954: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2710, label %ok2711 -panic2710: - call void @finch_panic(ptr @.str.1725, i64 1049, ptr @.str.1726) + br i1 %t13, label %panic2957, label %ok2958 +panic2957: + call void @finch_panic(ptr @.str.1902, i64 1168, ptr @.str.1903) unreachable -ok2711: +ok2958: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 14 %t15 = load i64, ptr %a9 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1727, i64 1049, i64 %t15, i64 %t17) + br i1 %t18, label %range2959, label %inrange2960 +range2959: + call void @finch_panic_index(ptr @.str.1904, i64 1168, i64 %t15, i64 %t17) unreachable -inrange2713: +inrange2960: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i64 %t15 %t21 = getelementptr inbounds %S.gen.FnSig, ptr %t20, i32 0, i32 0 @@ -26375,27 +29887,27 @@ inrange2713: store { ptr, i64, i64 } %t23, ptr %a25 %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.from2714 -logic.from2714: - br i1 %t27, label %logic.rhs2715, label %logic.end2716 -logic.rhs2715: + br label %logic.from2961 +logic.from2961: + br i1 %t27, label %logic.rhs2962, label %logic.end2963 +logic.rhs2962: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2717, label %ok2718 -panic2717: - call void @finch_panic(ptr @.str.1728, i64 1049, ptr @.str.1729) + br i1 %t29, label %panic2964, label %ok2965 +panic2964: + call void @finch_panic(ptr @.str.1905, i64 1168, ptr @.str.1906) unreachable -ok2718: +ok2965: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 14 %t31 = load i64, ptr %a9 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1730, i64 1049, i64 %t31, i64 %t33) + br i1 %t34, label %range2966, label %inrange2967 +range2966: + call void @finch_panic_index(ptr @.str.1907, i64 1168, i64 %t31, i64 %t33) unreachable -inrange2720: +inrange2967: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.FnSig, ptr %t35, i64 %t31 %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 1 @@ -26405,55 +29917,55 @@ inrange2720: store { ptr, i64, i64 } %t39, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br label %logic.rend2721 -logic.rend2721: - br label %logic.end2716 -logic.end2716: - %t44 = phi i1 [ false, %logic.from2714 ], [ %t43, %logic.rend2721 ] - br label %logic.from2722 -logic.from2722: - br i1 %t44, label %logic.rhs2723, label %logic.end2724 -logic.rhs2723: + br label %logic.rend2968 +logic.rend2968: + br label %logic.end2963 +logic.end2963: + %t44 = phi i1 [ false, %logic.from2961 ], [ %t43, %logic.rend2968 ] + br label %logic.from2969 +logic.from2969: + br i1 %t44, label %logic.rhs2970, label %logic.end2971 +logic.rhs2970: %t45 = load ptr, ptr %a1 %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic2725, label %ok2726 -panic2725: - call void @finch_panic(ptr @.str.1731, i64 1049, ptr @.str.1732) + br i1 %t46, label %panic2972, label %ok2973 +panic2972: + call void @finch_panic(ptr @.str.1908, i64 1168, ptr @.str.1909) unreachable -ok2726: +ok2973: %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 14 %t48 = load i64, ptr %a9 %t49 = load { ptr, i64, i64 }, ptr %t47 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range2727, label %inrange2728 -range2727: - call void @finch_panic_index(ptr @.str.1733, i64 1049, i64 %t48, i64 %t50) + br i1 %t51, label %range2974, label %inrange2975 +range2974: + call void @finch_panic_index(ptr @.str.1910, i64 1168, i64 %t48, i64 %t50) unreachable -inrange2728: +inrange2975: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds %S.gen.FnSig, ptr %t52, i64 %t48 %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 2 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 %t56 = load i64, ptr %t55 %t57 = icmp eq i64 %t56, 0 - br label %logic.rend2729 -logic.rend2729: - br label %logic.end2724 -logic.end2724: - %t58 = phi i1 [ false, %logic.from2722 ], [ %t57, %logic.rend2729 ] - br i1 %t58, label %then2730, label %endif2732 -then2730: + br label %logic.rend2976 +logic.rend2976: + br label %logic.end2971 +logic.end2971: + %t58 = phi i1 [ false, %logic.from2969 ], [ %t57, %logic.rend2976 ] + br i1 %t58, label %then2977, label %endif2979 +then2977: %t59 = load i64, ptr %a9 ret i64 %t59 -endif2732: - br label %for.step2708 -for.step2708: +endif2979: + br label %for.step2955 +for.step2955: %t60 = load i64, ptr %a9 %t61 = add i64 %t60, 1 store i64 %t61, ptr %a9 - br label %for.cond2706 -for.end2709: + br label %for.cond2953 +for.end2956: ret i64 -1 } @@ -26476,38 +29988,38 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic2733, label %ok2734 -panic2733: - call void @finch_panic(ptr @.str.1734, i64 1057, ptr @.str.1735) + br i1 %t6, label %panic2980, label %ok2981 +panic2980: + call void @finch_panic(ptr @.str.1911, i64 1176, ptr @.str.1912) unreachable -ok2734: +ok2981: %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 14 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 %t9 = load i64, ptr %t8 store i64 0, ptr %a10 - br label %for.cond2735 -for.cond2735: + br label %for.cond2982 +for.cond2982: %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body2736, label %for.end2738 -for.body2736: + br i1 %t12, label %for.body2983, label %for.end2985 +for.body2983: %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic2739, label %ok2740 -panic2739: - call void @finch_panic(ptr @.str.1736, i64 1058, ptr @.str.1737) + br i1 %t14, label %panic2986, label %ok2987 +panic2986: + call void @finch_panic(ptr @.str.1913, i64 1177, ptr @.str.1914) unreachable -ok2740: +ok2987: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 14 %t16 = load i64, ptr %a10 %t17 = load { ptr, i64, i64 }, ptr %t15 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1738, i64 1058, i64 %t16, i64 %t18) + br i1 %t19, label %range2988, label %inrange2989 +range2988: + call void @finch_panic_index(ptr @.str.1915, i64 1177, i64 %t16, i64 %t18) unreachable -inrange2742: +inrange2989: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.gen.FnSig, ptr %t20, i64 %t16 %t22 = getelementptr inbounds %S.gen.FnSig, ptr %t21, i32 0, i32 3 @@ -26517,27 +30029,27 @@ inrange2742: store { ptr, i64, i64 } %t24, ptr %a26 %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) %t28 = icmp ne i32 %t27, 0 - br label %logic.from2743 -logic.from2743: - br i1 %t28, label %logic.rhs2744, label %logic.end2745 -logic.rhs2744: + br label %logic.from2990 +logic.from2990: + br i1 %t28, label %logic.rhs2991, label %logic.end2992 +logic.rhs2991: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2746, label %ok2747 -panic2746: - call void @finch_panic(ptr @.str.1739, i64 1058, ptr @.str.1740) + br i1 %t30, label %panic2993, label %ok2994 +panic2993: + call void @finch_panic(ptr @.str.1916, i64 1177, ptr @.str.1917) unreachable -ok2747: +ok2994: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 14 %t32 = load i64, ptr %a10 %t33 = load { ptr, i64, i64 }, ptr %t31 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range2748, label %inrange2749 -range2748: - call void @finch_panic_index(ptr @.str.1741, i64 1058, i64 %t32, i64 %t34) + br i1 %t35, label %range2995, label %inrange2996 +range2995: + call void @finch_panic_index(ptr @.str.1918, i64 1177, i64 %t32, i64 %t34) unreachable -inrange2749: +inrange2996: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i64 %t32 %t38 = getelementptr inbounds %S.gen.FnSig, ptr %t37, i32 0, i32 2 @@ -26547,32 +30059,32 @@ inrange2749: store { ptr, i64, i64 } %t40, ptr %a42 %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) %t44 = icmp ne i32 %t43, 0 - br label %logic.rend2750 -logic.rend2750: - br label %logic.end2745 -logic.end2745: - %t45 = phi i1 [ false, %logic.from2743 ], [ %t44, %logic.rend2750 ] - br label %logic.from2751 -logic.from2751: - br i1 %t45, label %logic.rhs2752, label %logic.end2753 -logic.rhs2752: + br label %logic.rend2997 +logic.rend2997: + br label %logic.end2992 +logic.end2992: + %t45 = phi i1 [ false, %logic.from2990 ], [ %t44, %logic.rend2997 ] + br label %logic.from2998 +logic.from2998: + br i1 %t45, label %logic.rhs2999, label %logic.end3000 +logic.rhs2999: %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic2754, label %ok2755 -panic2754: - call void @finch_panic(ptr @.str.1742, i64 1058, ptr @.str.1743) + br i1 %t47, label %panic3001, label %ok3002 +panic3001: + call void @finch_panic(ptr @.str.1919, i64 1177, ptr @.str.1920) unreachable -ok2755: +ok3002: %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 14 %t49 = load i64, ptr %a10 %t50 = load { ptr, i64, i64 }, ptr %t48 %t51 = extractvalue { ptr, i64, i64 } %t50, 1 %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1744, i64 1058, i64 %t49, i64 %t51) + br i1 %t52, label %range3003, label %inrange3004 +range3003: + call void @finch_panic_index(ptr @.str.1921, i64 1177, i64 %t49, i64 %t51) unreachable -inrange2757: +inrange3004: %t53 = extractvalue { ptr, i64, i64 } %t50, 0 %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i64 %t49 %t55 = getelementptr inbounds %S.gen.FnSig, ptr %t54, i32 0, i32 1 @@ -26582,23 +30094,23 @@ inrange2757: store { ptr, i64, i64 } %t57, ptr %a59 %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) %t61 = icmp ne i32 %t60, 0 - br label %logic.rend2758 -logic.rend2758: - br label %logic.end2753 -logic.end2753: - %t62 = phi i1 [ false, %logic.from2751 ], [ %t61, %logic.rend2758 ] - br i1 %t62, label %then2759, label %endif2761 -then2759: + br label %logic.rend3005 +logic.rend3005: + br label %logic.end3000 +logic.end3000: + %t62 = phi i1 [ false, %logic.from2998 ], [ %t61, %logic.rend3005 ] + br i1 %t62, label %then3006, label %endif3008 +then3006: %t63 = load i64, ptr %a10 ret i64 %t63 -endif2761: - br label %for.step2737 -for.step2737: +endif3008: + br label %for.step2984 +for.step2984: %t64 = load i64, ptr %a10 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a10 - br label %for.cond2735 -for.end2738: + br label %for.cond2982 +for.end2985: ret i64 -1 } @@ -26614,61 +30126,61 @@ entry: %t2 = mul i64 28, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.1745, i64 5, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.1922, i64 5, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.1746, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.1923, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.1747, i64 3, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.1924, i64 3, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.1748, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.1925, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.1749, i64 4, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.1926, i64 4, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.1750, i64 5, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.1927, i64 5, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.1751, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.1928, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.1752, i64 9, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.1929, i64 9, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.1753, i64 10, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.1930, i64 10, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.1754, i64 11, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.1931, i64 11, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.1755, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.1932, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.1933, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.1757, i64 5, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.1934, i64 5, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.1758, i64 3, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.1935, i64 3, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.1759, i64 4, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.1936, i64 4, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.1760, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.1937, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.1761, i64 11, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.1938, i64 11, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.1762, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.1939, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.1763, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.1940, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.1764, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.1941, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.1765, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.1942, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.1766, i64 2, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.1943, i64 2, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.1767, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.1944, i64 3, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.1768, i64 3, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.1945, i64 3, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.1769, i64 3, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.1946, i64 3, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.1770, i64 3, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.1947, i64 3, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.1771, i64 3, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.1948, i64 3, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.1772, i64 5, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.1949, i64 5, i64 0 }, ptr %t31 %t32 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t33 = insertvalue { ptr, i64, i64 } %t32, i64 28, 1 %t34 = insertvalue { ptr, i64, i64 } %t33, i64 28, 2 @@ -26679,27 +30191,27 @@ entry: %t39 = load i64, ptr %t36 %t40 = load ptr, ptr %a35 store i64 0, ptr %a41 - br label %find.cond2762 -find.cond2762: + br label %find.cond3009 +find.cond3009: %t42 = load i64, ptr %a41 %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body2763, label %find.end2766 -find.body2763: + br i1 %t43, label %find.body3010, label %find.end3013 +find.body3010: %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t42 %t45 = load { ptr, i64, i64 }, ptr %t44 store { ptr, i64, i64 } %t45, ptr %a46 store { ptr, i64, i64 } %t37, ptr %a47 %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %find.hit2764, label %find.next2765 -find.hit2764: + br i1 %t49, label %find.hit3011, label %find.next3012 +find.hit3011: store i64 %t42, ptr %a38 - br label %find.end2766 -find.next2765: + br label %find.end3013 +find.next3012: %t50 = add i64 %t42, 1 store i64 %t50, ptr %a41 - br label %find.cond2762 -find.end2766: + br label %find.cond3009 +find.end3013: %t51 = load i64, ptr %a38 %t52 = icmp sge i64 %t51, 0 ret i1 %t52 @@ -26740,8 +30252,79 @@ entry: %a95 = alloca %S.ast.Type, align 16 %a99 = alloca { ptr, i64, i64 }, align 16 %a100 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 + %a121 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca %S.ast.Node, align 16 + %a189 = alloca %S.ast.Node, align 16 + %a191 = alloca %S.ast.Node, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a201 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a211 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a273 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a279 = alloca { ptr, i64, i64 }, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a291 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a295 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a310 = alloca { ptr, i64, i64 }, align 16 + %a311 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 + %a328 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 @@ -26752,83 +30335,83 @@ entry: %t8 = load { ptr, i64, i64 }, ptr %a3 %t9 = call i64 @finch.gen.lookup(ptr %t7, { ptr, i64, i64 } %t8) %t10 = icmp sge i64 %t9, 0 - br label %logic.from2767 -logic.from2767: - br i1 %t10, label %logic.rhs2768, label %logic.end2769 -logic.rhs2768: + br label %logic.from3014 +logic.from3014: + br i1 %t10, label %logic.rhs3015, label %logic.end3016 +logic.rhs3015: %t11 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t11, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1773, i64 3, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.1950, i64 3, i64 0 }, ptr %a13 %t14 = call i32 @finch_str_eq(ptr %a12, ptr %a13) %t15 = icmp eq i32 %t14, 0 - br label %logic.rend2770 -logic.rend2770: - br label %logic.end2769 -logic.end2769: - %t16 = phi i1 [ false, %logic.from2767 ], [ %t15, %logic.rend2770 ] - br i1 %t16, label %then2771, label %endif2773 -then2771: + br label %logic.rend3017 +logic.rend3017: + br label %logic.end3016 +logic.end3016: + %t16 = phi i1 [ false, %logic.from3014 ], [ %t15, %logic.rend3017 ] + br i1 %t16, label %then3018, label %endif3020 +then3018: %t17 = load ptr, ptr %a1 %t18 = load %S.ast.Node, ptr %a2 %t19 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1774, i64 18, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.1951, i64 18, i64 0 }, ptr %a21 store { ptr, i64, i64 } %t19, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1775, i64 21, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.1952, i64 21, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } %t27) - br label %endif2773 -endif2773: + br label %endif3020 +endif3020: %t28 = load ptr, ptr %a1 %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2774, label %ok2775 -panic2774: - call void @finch_panic(ptr @.str.1776, i64 1076, ptr @.str.1777) + br i1 %t30, label %panic3021, label %ok3022 +panic3021: + call void @finch_panic(ptr @.str.1953, i64 1195, ptr @.str.1954) unreachable -ok2775: +ok3022: %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 13 %t32 = load { ptr, i64, i64 }, ptr %t31 %t33 = load { ptr, i64, i64 }, ptr %a3 %t34 = call i64 @finch.gen.findFn(ptr %t28, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33) %t35 = icmp sge i64 %t34, 0 - br i1 %t35, label %then2776, label %endif2778 -then2776: + br i1 %t35, label %then3023, label %endif3025 +then3023: %t36 = load ptr, ptr %a1 %t37 = load %S.ast.Node, ptr %a2 %t38 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.1955, i64 1, i64 0 }, ptr %a40 store { ptr, i64, i64 } %t38, ptr %a41 call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1779, i64 35, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.1956, i64 35, i64 0 }, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t46) - br label %endif2778 -endif2778: + br label %endif3025 +endif3025: %t47 = load { ptr, i64, i64 }, ptr %a3 %t48 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t47) - br i1 %t48, label %then2779, label %endif2781 -then2779: + br i1 %t48, label %then3026, label %endif3028 +then3026: %t49 = load ptr, ptr %a1 %t50 = load %S.ast.Node, ptr %a2 %t51 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1780, i64 1, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.1957, i64 1, i64 0 }, ptr %a53 store { ptr, i64, i64 } %t51, ptr %a54 call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) %t55 = load { ptr, i64, i64 }, ptr %a52 store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1781, i64 38, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.1958, i64 38, i64 0 }, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 call void @finch.gen.fail(ptr %t49, %S.ast.Node %t50, { ptr, i64, i64 } %t59) - br label %endif2781 -endif2781: + br label %endif3028 +endif3028: %t60 = load ptr, ptr %a1 %t61 = load ptr, ptr %a1 %t62 = load %S.ast.Type, ptr %a4 @@ -26844,19 +30427,19 @@ endif2781: call void @finch.gen.store(ptr %t66, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t70, { ptr, i64, i64 } %t71) %t72 = load ptr, ptr %a1 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic2782, label %ok2783 -panic2782: - call void @finch_panic(ptr @.str.1782, i64 1084, ptr @.str.1783) + br i1 %t73, label %panic3029, label %ok3030 +panic3029: + call void @finch_panic(ptr @.str.1959, i64 1203, ptr @.str.1960) unreachable -ok2783: +ok3030: %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 10 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2784, label %ok2785 -panic2784: - call void @finch_panic(ptr @.str.1784, i64 1084, ptr @.str.1785) + br i1 %t76, label %panic3031, label %ok3032 +panic3031: + call void @finch_panic(ptr @.str.1961, i64 1203, ptr @.str.1962) unreachable -ok2785: +ok3032: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 10 %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 %t79 = load i64, ptr %t78 @@ -26864,11 +30447,11 @@ ok2785: %t81 = load { ptr, i64, i64 }, ptr %t74 %t82 = extractvalue { ptr, i64, i64 } %t81, 1 %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range2786, label %inrange2787 -range2786: - call void @finch_panic_index(ptr @.str.1786, i64 1084, i64 %t80, i64 %t82) + br i1 %t83, label %range3033, label %inrange3034 +range3033: + call void @finch_panic_index(ptr @.str.1963, i64 1203, i64 %t80, i64 %t82) unreachable -inrange2787: +inrange3034: %t84 = extractvalue { ptr, i64, i64 } %t81, 0 %t85 = getelementptr inbounds %S.gen.Scope, ptr %t84, i64 %t80 %t86 = getelementptr inbounds %S.gen.Scope, ptr %t85, i32 0, i32 0 @@ -26892,43 +30475,333 @@ inrange2787: %t104 = insertvalue %S.gen.Var %t102, i1 %t103, 3 %t105 = load ptr, ptr %a1 %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic2788, label %ok2789 -panic2788: - call void @finch_panic(ptr @.str.1787, i64 1084, ptr @.str.1788) + br i1 %t106, label %panic3035, label %ok3036 +panic3035: + call void @finch_panic(ptr @.str.1964, i64 1203, ptr @.str.1965) unreachable -ok2789: +ok3036: %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 23 %t108 = load i64, ptr %t107 %t109 = insertvalue %S.gen.Var %t104, i64 %t108, 4 - %t110 = load i64, ptr %t87 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t111, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t86 - %t113 = getelementptr inbounds %S.gen.Var, ptr %t112, i64 %t110 - store %S.gen.Var %t109, ptr %t113 - store i64 %t111, ptr %t87 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic2790, label %ok2791 -panic2790: - call void @finch_panic(ptr @.str.1789, i64 1085, ptr @.str.1790) + %t110 = load ptr, ptr %a1 + %t111 = icmp eq ptr %t110, null + br i1 %t111, label %panic3037, label %ok3038 +panic3037: + call void @finch_panic(ptr @.str.1966, i64 1203, ptr @.str.1967) unreachable -ok2791: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 23 - %t117 = load i64, ptr %t116 - %t118 = add i64 %t117, 1 - store i64 %t118, ptr %t116 - %t119 = load ptr, ptr %a1 - %t120 = load %S.ast.Node, ptr %a2 - %t121 = load { ptr, i64, i64 }, ptr %a3 - %t122 = load %S.ast.Type, ptr %a4 - %t123 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.dbgVariable(ptr %t119, %S.ast.Node %t120, { ptr, i64, i64 } %t121, %S.ast.Type %t122, { ptr, i64, i64 } %t123) - %t124 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_copy(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - ret { ptr, i64, i64 } %t127 +ok3038: + %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 1 + %t113 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t114 = load i64, ptr %t113 + %t115 = load { ptr, i64, i64 }, ptr %t112 + %t116 = extractvalue { ptr, i64, i64 } %t115, 1 + %t117 = icmp uge i64 %t114, %t116 + br i1 %t117, label %range3039, label %inrange3040 +range3039: + call void @finch_panic_index(ptr @.str.1968, i64 1203, i64 %t114, i64 %t116) + unreachable +inrange3040: + %t118 = extractvalue { ptr, i64, i64 } %t115, 0 + %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t114 + %t120 = load { ptr, i64, i64 }, ptr %t119 + store { ptr, i64, i64 } %t120, ptr %a121 + call void @finch_str_copy(ptr %a122, ptr %a121) + %t123 = load { ptr, i64, i64 }, ptr %a122 + %t124 = insertvalue %S.gen.Var %t109, { ptr, i64, i64 } %t123, 5 + %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t126 = load i64, ptr %t125 + %t127 = insertvalue %S.gen.Var %t124, i64 %t126, 6 + %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t129 = load i64, ptr %t128 + %t130 = insertvalue %S.gen.Var %t127, i64 %t129, 7 + %t131 = load i64, ptr %t87 + %t132 = add i64 %t131, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) + %t133 = load ptr, ptr %t86 + %t134 = getelementptr inbounds %S.gen.Var, ptr %t133, i64 %t131 + store %S.gen.Var %t130, ptr %t134 + store i64 %t132, ptr %t87 + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic3041, label %ok3042 +panic3041: + call void @finch_panic(ptr @.str.1969, i64 1204, ptr @.str.1970) + unreachable +ok3042: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 23 + %t138 = load i64, ptr %t137 + %t139 = add i64 %t138, 1 + store i64 %t139, ptr %t137 + %t140 = load ptr, ptr %a1 + %t141 = load %S.ast.Node, ptr %a2 + %t142 = load { ptr, i64, i64 }, ptr %a3 + %t143 = load %S.ast.Type, ptr %a4 + %t144 = load { ptr, i64, i64 }, ptr %a65 + call void @finch.gen.dbgVariable(ptr %t140, %S.ast.Node %t141, { ptr, i64, i64 } %t142, %S.ast.Type %t143, { ptr, i64, i64 } %t144) + %t145 = load ptr, ptr %a1 + %t146 = icmp eq ptr %t145, null + br i1 %t146, label %panic3043, label %ok3044 +panic3043: + call void @finch_panic(ptr @.str.1971, i64 1206, ptr @.str.1972) + unreachable +ok3044: + %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 26 + %t148 = load i1, ptr %t147 + br label %logic.from3045 +logic.from3045: + br i1 %t148, label %logic.rhs3046, label %logic.end3047 +logic.rhs3046: + %t149 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t149, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.1973, i64 3, i64 0 }, ptr %a151 + %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) + %t153 = icmp eq i32 %t152, 0 + br label %logic.rend3048 +logic.rend3048: + br label %logic.end3047 +logic.end3047: + %t154 = phi i1 [ false, %logic.from3045 ], [ %t153, %logic.rend3048 ] + br label %logic.from3049 +logic.from3049: + br i1 %t154, label %logic.rhs3050, label %logic.end3051 +logic.rhs3050: + %t155 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t155, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.1975, i64 1, i64 0 }, ptr %a158 + %t159 = call i32 @finch_str_starts(ptr %a156, ptr %a158) + %t160 = icmp ne i32 %t159, 0 + %t161 = xor i1 %t160, true + br label %logic.rend3052 +logic.rend3052: + br label %logic.end3051 +logic.end3051: + %t162 = phi i1 [ false, %logic.from3049 ], [ %t161, %logic.rend3052 ] + br i1 %t162, label %then3053, label %endif3055 +then3053: + %t163 = load ptr, ptr %a1 + %t164 = icmp eq ptr %t163, null + br i1 %t164, label %panic3056, label %ok3057 +panic3056: + call void @finch_panic(ptr @.str.1976, i64 1207, ptr @.str.1977) + unreachable +ok3057: + %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 0 + %t166 = load ptr, ptr %a1 + %t167 = icmp eq ptr %t166, null + br i1 %t167, label %panic3058, label %ok3059 +panic3058: + call void @finch_panic(ptr @.str.1978, i64 1207, ptr @.str.1979) + unreachable +ok3059: + %t168 = getelementptr inbounds %S.gen.Gen, ptr %t166, i32 0, i32 12 + %t169 = getelementptr inbounds %S.gen.FnSig, ptr %t168, i32 0, i32 16 + %t170 = load i64, ptr %t169 + %t171 = load { ptr, i64, i64 }, ptr %t165 + %t172 = extractvalue { ptr, i64, i64 } %t171, 1 + %t173 = icmp uge i64 %t170, %t172 + br i1 %t173, label %range3060, label %inrange3061 +range3060: + call void @finch_panic_index(ptr @.str.1980, i64 1207, i64 %t170, i64 %t172) + unreachable +inrange3061: + %t174 = extractvalue { ptr, i64, i64 } %t171, 0 + %t175 = getelementptr inbounds %S.ast.Program, ptr %t174, i64 %t170 + %t176 = getelementptr inbounds %S.ast.Program, ptr %t175, i32 0, i32 8 + %t177 = load ptr, ptr %a1 + %t178 = icmp eq ptr %t177, null + br i1 %t178, label %panic3062, label %ok3063 +panic3062: + call void @finch_panic(ptr @.str.1981, i64 1207, ptr @.str.1982) + unreachable +ok3063: + %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 12 + %t180 = getelementptr inbounds %S.gen.FnSig, ptr %t179, i32 0, i32 17 + %t181 = load i64, ptr %t180 + %t182 = load { ptr, i64, i64 }, ptr %t176 + %t183 = extractvalue { ptr, i64, i64 } %t182, 1 + %t184 = icmp uge i64 %t181, %t183 + br i1 %t184, label %range3064, label %inrange3065 +range3064: + call void @finch_panic_index(ptr @.str.1983, i64 1207, i64 %t181, i64 %t183) + unreachable +inrange3065: + %t185 = extractvalue { ptr, i64, i64 } %t182, 0 + %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t181 + %t187 = load %S.ast.Node, ptr %t186 + store %S.ast.Node %t187, ptr %a188 + call void @finch.copy.S_ast_Node(ptr %a189, ptr %a188) + %t190 = load %S.ast.Node, ptr %a189 + store %S.ast.Node %t190, ptr %a191 + %t192 = load ptr, ptr %a1 + %t193 = icmp eq ptr %t192, null + br i1 %t193, label %panic3066, label %ok3067 +panic3066: + call void @finch_panic(ptr @.str.1984, i64 1208, ptr @.str.1985) + unreachable +ok3067: + %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 27 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 + %t196 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.1986, i64 3, i64 0 }, ptr %a198 + store { ptr, i64, i64 } %t196, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a197 + store { ptr, i64, i64 } %t200, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.1987, i64 1, i64 0 }, ptr %a203 + call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) + %t204 = load { ptr, i64, i64 }, ptr %a201 + %t205 = load %S.ast.Type, ptr %a4 + %t206 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t205) + store { ptr, i64, i64 } %t204, ptr %a208 + store { ptr, i64, i64 } %t206, ptr %a209 + call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) + %t210 = load { ptr, i64, i64 }, ptr %a207 + store { ptr, i64, i64 } %t210, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a213 + call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) + %t214 = load { ptr, i64, i64 }, ptr %a211 + %t215 = load ptr, ptr %a1 + %t216 = icmp eq ptr %t215, null + br i1 %t216, label %panic3068, label %ok3069 +panic3068: + call void @finch_panic(ptr @.str.1989, i64 1208, ptr @.str.1990) + unreachable +ok3069: + %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 1 + %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t219 = load i64, ptr %t218 + %t220 = load { ptr, i64, i64 }, ptr %t217 + %t221 = extractvalue { ptr, i64, i64 } %t220, 1 + %t222 = icmp uge i64 %t219, %t221 + br i1 %t222, label %range3070, label %inrange3071 +range3070: + call void @finch_panic_index(ptr @.str.1991, i64 1208, i64 %t219, i64 %t221) + unreachable +inrange3071: + %t223 = extractvalue { ptr, i64, i64 } %t220, 0 + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t219 + %t225 = load { ptr, i64, i64 }, ptr %t224 + store { ptr, i64, i64 } %t214, ptr %a227 + store { ptr, i64, i64 } %t225, ptr %a228 + call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) + %t229 = load { ptr, i64, i64 }, ptr %a226 + store { ptr, i64, i64 } %t229, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.1992, i64 1, i64 0 }, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a230 + %t234 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t235 = load i64, ptr %t234 + call void @finch_str_from_int(ptr %a236, i64 %t235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + store { ptr, i64, i64 } %t233, ptr %a239 + store { ptr, i64, i64 } %t237, ptr %a240 + call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) + %t241 = load { ptr, i64, i64 }, ptr %a238 + store { ptr, i64, i64 } %t241, ptr %a243 + store { ptr, i64, i64 } { ptr @.str.1993, i64 1, i64 0 }, ptr %a244 + call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a242 + %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t247 = load i64, ptr %t246 + call void @finch_str_from_int(ptr %a248, i64 %t247) + %t249 = load { ptr, i64, i64 }, ptr %a248 + store { ptr, i64, i64 } %t245, ptr %a251 + store { ptr, i64, i64 } %t249, ptr %a252 + call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) + %t253 = load { ptr, i64, i64 }, ptr %a250 + store { ptr, i64, i64 } %t253, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a256 + call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) + %t257 = load { ptr, i64, i64 }, ptr %a254 + %t258 = load ptr, ptr %a1 + %t259 = icmp eq ptr %t258, null + br i1 %t259, label %panic3072, label %ok3073 +panic3072: + call void @finch_panic(ptr @.str.1995, i64 1208, ptr @.str.1996) + unreachable +ok3073: + %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 1 + %t261 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 13 + %t262 = load i64, ptr %t261 + %t263 = load { ptr, i64, i64 }, ptr %t260 + %t264 = extractvalue { ptr, i64, i64 } %t263, 1 + %t265 = icmp uge i64 %t262, %t264 + br i1 %t265, label %range3074, label %inrange3075 +range3074: + call void @finch_panic_index(ptr @.str.1997, i64 1208, i64 %t262, i64 %t264) + unreachable +inrange3075: + %t266 = extractvalue { ptr, i64, i64 } %t263, 0 + %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t262 + %t268 = load { ptr, i64, i64 }, ptr %t267 + store { ptr, i64, i64 } %t257, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } %t272, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.1998, i64 1, i64 0 }, ptr %a275 + call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) + %t276 = load { ptr, i64, i64 }, ptr %a273 + %t277 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 11 + %t278 = load i64, ptr %t277 + call void @finch_str_from_int(ptr %a279, i64 %t278) + %t280 = load { ptr, i64, i64 }, ptr %a279 + store { ptr, i64, i64 } %t276, ptr %a282 + store { ptr, i64, i64 } %t280, ptr %a283 + call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) + %t284 = load { ptr, i64, i64 }, ptr %a281 + store { ptr, i64, i64 } %t284, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.1999, i64 1, i64 0 }, ptr %a287 + call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) + %t288 = load { ptr, i64, i64 }, ptr %a285 + %t289 = getelementptr inbounds %S.ast.Node, ptr %a191, i32 0, i32 14 + %t290 = load i64, ptr %t289 + call void @finch_str_from_int(ptr %a291, i64 %t290) + %t292 = load { ptr, i64, i64 }, ptr %a291 + store { ptr, i64, i64 } %t288, ptr %a294 + store { ptr, i64, i64 } %t292, ptr %a295 + call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) + %t296 = load { ptr, i64, i64 }, ptr %a293 + %t297 = load i64, ptr %t195 + %t298 = add i64 %t297, 1 + call void @finch_arr_reserve(ptr %t194, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t299 = load ptr, ptr %t194 + %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 + store { ptr, i64, i64 } %t296, ptr %t300 + store i64 %t298, ptr %t195 + %t301 = load ptr, ptr %a1 + %t302 = load %S.ast.Node, ptr %a2 + %t303 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t304 = load i64, ptr %t303 + %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t306 = load i64, ptr %t305 + %t307 = load %S.ast.Type, ptr %a4 + %t308 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t307) + store { ptr, i64, i64 } { ptr @.str.2000, i64 9, i64 0 }, ptr %a310 + store { ptr, i64, i64 } %t308, ptr %a311 + call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) + %t312 = load { ptr, i64, i64 }, ptr %a309 + store { ptr, i64, i64 } %t312, ptr %a314 + store { ptr, i64, i64 } { ptr @.str.2001, i64 1, i64 0 }, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + %t317 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t316, ptr %a319 + store { ptr, i64, i64 } %t317, ptr %a320 + call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) + %t321 = load { ptr, i64, i64 }, ptr %a318 + store { ptr, i64, i64 } %t321, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.2002, i64 4, i64 0 }, ptr %a324 + call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) + %t325 = load { ptr, i64, i64 }, ptr %a322 + call void @finch.gen.noteRef(ptr %t301, %S.ast.Node %t302, i64 %t304, i64 %t306, { ptr, i64, i64 } %t325, { ptr, i64, i64 } { ptr @.str.2003, i64 0, i64 0 }, i64 0, i64 0) + br label %endif3055 +endif3055: + %t326 = load { ptr, i64, i64 }, ptr %a65 + store { ptr, i64, i64 } %t326, ptr %a327 + call void @finch_str_copy(ptr %a328, ptr %a327) + %t329 = load { ptr, i64, i64 }, ptr %a328 + ret { ptr, i64, i64 } %t329 } define internal void @finch.gen.pushScope(ptr %p0) { @@ -26937,11 +30810,11 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2792, label %ok2793 -panic2792: - call void @finch_panic(ptr @.str.1791, i64 1091, ptr @.str.1792) + br i1 %t3, label %panic3076, label %ok3077 +panic3076: + call void @finch_panic(ptr @.str.2004, i64 1215, ptr @.str.2005) unreachable -ok2793: +ok3077: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 10 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 %t6 = load i64, ptr %t5 @@ -26960,20 +30833,20 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1793, i64 1095, ptr @.str.1794) + br i1 %t3, label %panic3078, label %ok3079 +panic3078: + call void @finch_panic(ptr @.str.2006, i64 1219, ptr @.str.2007) unreachable -ok2795: +ok3079: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 10 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = icmp eq i64 %t6, 0 - br i1 %t7, label %panic2796, label %ok2797 -panic2796: - call void @finch_panic(ptr @.str.1795, i64 1095, ptr @.str.1796) + br i1 %t7, label %panic3080, label %ok3081 +panic3080: + call void @finch_panic(ptr @.str.2008, i64 1219, ptr @.str.2009) unreachable -ok2797: +ok3081: %t8 = sub i64 %t6, 1 %t9 = load ptr, ptr %t4 %t10 = getelementptr inbounds %S.gen.Scope, ptr %t9, i64 %t8 @@ -26991,20 +30864,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond2802 -n.cond2802: + br label %n.cond3086 +n.cond3086: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body2803, label %n.end2804 -n.body2803: + br i1 %t7, label %n.body3087, label %n.end3088 +n.body3087: %t8 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.gen.Var, ptr %t2, i64 %t6 call void @finch.copy.S_gen_Var(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond2802 -n.end2804: + br label %n.cond3086 +n.end3088: ret void } @@ -27039,21 +30912,21 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2798, label %ok2799 -panic2798: - call void @finch_panic(ptr @.str.1797, i64 1100, ptr @.str.1798) + br i1 %t4, label %panic3082, label %ok3083 +panic3082: + call void @finch_panic(ptr @.str.2010, i64 1224, ptr @.str.2011) unreachable -ok2799: +ok3083: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 %t6 = load i64, ptr %a2 %t7 = load { ptr, i64, i64 }, ptr %t5 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range2800, label %inrange2801 -range2800: - call void @finch_panic_index(ptr @.str.1799, i64 1100, i64 %t6, i64 %t8) + br i1 %t9, label %range3084, label %inrange3085 +range3084: + call void @finch_panic_index(ptr @.str.2012, i64 1224, i64 %t6, i64 %t8) unreachable -inrange2801: +inrange3085: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 %t12 = load %S.gen.Scope, ptr %t11 @@ -27065,74 +30938,74 @@ inrange2801: %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 store i64 %t19, ptr %a20 - br label %while.cond2805 -while.cond2805: + br label %while.cond3089 +while.cond3089: %t21 = load i64, ptr %a20 %t22 = icmp sgt i64 %t21, 0 - br i1 %t22, label %while.body2806, label %while.end2807 -while.body2806: + br i1 %t22, label %while.body3090, label %while.end3091 +while.body3090: %t23 = load i64, ptr %a20 %t24 = sub i64 %t23, 1 store i64 %t24, ptr %a20 %t25 = load ptr, ptr %a1 %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic2808, label %ok2809 -panic2808: - call void @finch_panic(ptr @.str.1800, i64 1104, ptr @.str.1801) + br i1 %t26, label %panic3092, label %ok3093 +panic3092: + call void @finch_panic(ptr @.str.2013, i64 1228, ptr @.str.2014) unreachable -ok2809: - %t27 = getelementptr inbounds %S.gen.Gen, ptr %t25, i32 0, i32 40 +ok3093: + %t27 = getelementptr inbounds %S.gen.Gen, ptr %t25, i32 0, i32 42 %t28 = load i1, ptr %t27 store i1 %t28, ptr %a29 %t30 = load ptr, ptr %a1 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2810, label %ok2811 -panic2810: - call void @finch_panic(ptr @.str.1802, i64 1105, ptr @.str.1803) + br i1 %t31, label %panic3094, label %ok3095 +panic3094: + call void @finch_panic(ptr @.str.2015, i64 1229, ptr @.str.2016) unreachable -ok2811: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 41 +ok3095: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 43 %t33 = load i64, ptr %t32 store i64 %t33, ptr %a34 %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic2812, label %ok2813 -panic2812: - call void @finch_panic(ptr @.str.1804, i64 1106, ptr @.str.1805) + br i1 %t36, label %panic3096, label %ok3097 +panic3096: + call void @finch_panic(ptr @.str.2017, i64 1230, ptr @.str.2018) unreachable -ok2813: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 40 +ok3097: + %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 42 store i1 true, ptr %t37 %t38 = getelementptr inbounds %S.gen.Scope, ptr %a16, i32 0, i32 2 %t39 = load i64, ptr %a20 %t40 = load { ptr, i64, i64 }, ptr %t38 %t41 = extractvalue { ptr, i64, i64 } %t40, 1 %t42 = icmp uge i64 %t39, %t41 - br i1 %t42, label %range2814, label %inrange2815 -range2814: - call void @finch_panic_index(ptr @.str.1806, i64 1107, i64 %t39, i64 %t41) + br i1 %t42, label %range3098, label %inrange3099 +range3098: + call void @finch_panic_index(ptr @.str.2019, i64 1231, i64 %t39, i64 %t41) unreachable -inrange2815: +inrange3099: %t43 = extractvalue { ptr, i64, i64 } %t40, 0 %t44 = getelementptr inbounds i64, ptr %t43, i64 %t39 %t45 = load i64, ptr %t44 %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic2816, label %ok2817 -panic2816: - call void @finch_panic(ptr @.str.1807, i64 1107, ptr @.str.1808) + br i1 %t47, label %panic3100, label %ok3101 +panic3100: + call void @finch_panic(ptr @.str.2020, i64 1231, ptr @.str.2021) unreachable -ok2817: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 41 +ok3101: + %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 43 store i64 %t45, ptr %t48 %t49 = load ptr, ptr %a1 %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic2818, label %ok2819 -panic2818: - call void @finch_panic(ptr @.str.1809, i64 1108, ptr @.str.1810) + br i1 %t50, label %panic3102, label %ok3103 +panic3102: + call void @finch_panic(ptr @.str.2022, i64 1232, ptr @.str.2023) unreachable -ok2819: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 +ok3103: + %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 44 %t52 = load i64, ptr %t51 %t53 = add i64 %t52, 1 store i64 %t53, ptr %t51 @@ -27144,11 +31017,11 @@ ok2819: %t58 = load { ptr, i64, i64 }, ptr %t56 %t59 = extractvalue { ptr, i64, i64 } %t58, 1 %t60 = icmp uge i64 %t57, %t59 - br i1 %t60, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1811, i64 1110, i64 %t57, i64 %t59) + br i1 %t60, label %range3104, label %inrange3105 +range3104: + call void @finch_panic_index(ptr @.str.2024, i64 1234, i64 %t57, i64 %t59) unreachable -inrange2821: +inrange3105: %t61 = extractvalue { ptr, i64, i64 } %t58, 0 %t62 = getelementptr inbounds %S.ast.Node, ptr %t61, i64 %t57 %t63 = load %S.ast.Node, ptr %t62 @@ -27157,37 +31030,37 @@ inrange2821: call void @finch.gen.popScope(ptr %t64) %t65 = load ptr, ptr %a1 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1812, i64 1112, ptr @.str.1813) + br i1 %t66, label %panic3106, label %ok3107 +panic3106: + call void @finch_panic(ptr @.str.2025, i64 1236, ptr @.str.2026) unreachable -ok2823: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 42 +ok3107: + %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 44 %t68 = load i64, ptr %t67 %t69 = sub i64 %t68, 1 store i64 %t69, ptr %t67 %t70 = load i1, ptr %a29 %t71 = load ptr, ptr %a1 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic2824, label %ok2825 -panic2824: - call void @finch_panic(ptr @.str.1814, i64 1113, ptr @.str.1815) + br i1 %t72, label %panic3108, label %ok3109 +panic3108: + call void @finch_panic(ptr @.str.2027, i64 1237, ptr @.str.2028) unreachable -ok2825: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 40 +ok3109: + %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 42 store i1 %t70, ptr %t73 %t74 = load i64, ptr %a34 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2826, label %ok2827 -panic2826: - call void @finch_panic(ptr @.str.1816, i64 1114, ptr @.str.1817) + br i1 %t76, label %panic3110, label %ok3111 +panic3110: + call void @finch_panic(ptr @.str.2029, i64 1238, ptr @.str.2030) unreachable -ok2827: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 41 +ok3111: + %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 43 store i64 %t74, ptr %t77 - br label %while.cond2805 -while.end2807: + br label %while.cond3089 +while.end3091: ret void } @@ -27200,30 +31073,30 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2828, label %ok2829 -panic2828: - call void @finch_panic(ptr @.str.1818, i64 1120, ptr @.str.1819) + br i1 %t4, label %panic3112, label %ok3113 +panic3112: + call void @finch_panic(ptr @.str.2031, i64 1244, ptr @.str.2032) unreachable -ok2829: +ok3113: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 10 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load i64, ptr %t6 store i64 %t7, ptr %a8 - br label %while.cond2830 -while.cond2830: + br label %while.cond3114 +while.cond3114: %t9 = load i64, ptr %a8 %t10 = load i64, ptr %a2 %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2831, label %while.end2832 -while.body2831: + br i1 %t11, label %while.body3115, label %while.end3116 +while.body3115: %t12 = load i64, ptr %a8 %t13 = sub i64 %t12, 1 store i64 %t13, ptr %a8 %t14 = load ptr, ptr %a1 %t15 = load i64, ptr %a8 call void @finch.gen.runDefers(ptr %t14, i64 %t15) - br label %while.cond2830 -while.end2832: + br label %while.cond3114 +while.end3116: ret void } @@ -27233,47 +31106,47 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2833, label %ok2834 -panic2833: - call void @finch_panic(ptr @.str.1820, i64 1129, ptr @.str.1821) + br i1 %t3, label %panic3117, label %ok3118 +panic3117: + call void @finch_panic(ptr @.str.2033, i64 1253, ptr @.str.2034) unreachable -ok2834: +ok3118: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 9 %t5 = load i1, ptr %t4 %t6 = xor i1 %t5, true - br i1 %t6, label %then2835, label %endif2837 -then2835: + br i1 %t6, label %then3119, label %endif3121 +then3119: %t7 = load ptr, ptr %a1 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2838, label %ok2839 -panic2838: - call void @finch_panic(ptr @.str.1822, i64 1130, ptr @.str.1823) + br i1 %t9, label %panic3122, label %ok3123 +panic3122: + call void @finch_panic(ptr @.str.2035, i64 1254, ptr @.str.2036) unreachable -ok2839: +ok3123: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 %t12 = load i64, ptr %t11 %t13 = sub i64 %t12, 1 call void @finch.gen.runDefers(ptr %t7, i64 %t13) - br label %endif2837 -endif2837: + br label %endif3121 +endif3121: %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2840, label %ok2841 -panic2840: - call void @finch_panic(ptr @.str.1824, i64 1132, ptr @.str.1825) + br i1 %t15, label %panic3124, label %ok3125 +panic3124: + call void @finch_panic(ptr @.str.2037, i64 1256, ptr @.str.2038) unreachable -ok2841: +ok3125: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 10 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 %t18 = load i64, ptr %t17 %t19 = icmp eq i64 %t18, 0 - br i1 %t19, label %panic2842, label %ok2843 -panic2842: - call void @finch_panic(ptr @.str.1826, i64 1132, ptr @.str.1827) + br i1 %t19, label %panic3126, label %ok3127 +panic3126: + call void @finch_panic(ptr @.str.2039, i64 1256, ptr @.str.2040) unreachable -ok2843: +ok3127: %t20 = sub i64 %t18, 1 %t21 = load ptr, ptr %t16 %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 @@ -27297,57 +31170,57 @@ entry: %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1828, i64 3, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.2041, i64 3, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then2844, label %endif2846 -then2844: + br i1 %t7, label %then3128, label %endif3130 +then3128: %t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 1 %t9 = load { ptr, i64, i64 }, ptr %t8 store { ptr, i64, i64 } %t9, ptr %a10 call void @finch_str_copy(ptr %a11, ptr %a10) %t12 = load { ptr, i64, i64 }, ptr %a11 ret { ptr, i64, i64 } %t12 -endif2846: +endif3130: %t13 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t14 = load { ptr, i64, i64 }, ptr %t13 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.1829, i64 6, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2042, i64 6, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br label %logic.from2847 -logic.from2847: - br i1 %t18, label %logic.end2849, label %logic.rhs2848 -logic.rhs2848: + br label %logic.from3131 +logic.from3131: + br i1 %t18, label %logic.end3133, label %logic.rhs3132 +logic.rhs3132: %t19 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t20 = load { ptr, i64, i64 }, ptr %t19 store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1830, i64 5, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2043, i64 5, i64 0 }, ptr %a22 %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) %t24 = icmp ne i32 %t23, 0 - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t25 = phi i1 [ true, %logic.from2847 ], [ %t24, %logic.rend2850 ] - br i1 %t25, label %then2851, label %endif2853 -then2851: + br label %logic.rend3134 +logic.rend3134: + br label %logic.end3133 +logic.end3133: + %t25 = phi i1 [ true, %logic.from3131 ], [ %t24, %logic.rend3134 ] + br i1 %t25, label %then3135, label %endif3137 +then3135: %t26 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 %t27 = load { ptr, i64, i64 }, ptr %t26 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 0, %t28 - br i1 %t29, label %range2854, label %inrange2855 -range2854: - call void @finch_panic_index(ptr @.str.1831, i64 1142, i64 0, i64 %t28) + br i1 %t29, label %range3138, label %inrange3139 +range3138: + call void @finch_panic_index(ptr @.str.2044, i64 1266, i64 0, i64 %t28) unreachable -inrange2855: +inrange3139: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 %t32 = load %S.ast.Node, ptr %t31 %t33 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t32) ret { ptr, i64, i64 } %t33 -endif2853: - ret { ptr, i64, i64 } { ptr @.str.1832, i64 0, i64 0 } +endif3137: + ret { ptr, i64, i64 } { ptr @.str.2045, i64 0, i64 0 } } define internal i1 @finch.gen.mutates(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Node %p2) { @@ -27386,21 +31259,21 @@ entry: %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t5 = call ptr @finch_alloc(i64 %t4) %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.2046, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.1834, i64 3, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.2047, i64 3, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.1835, i64 6, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.2048, i64 6, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.1836, i64 6, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.2049, i64 6, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.1837, i64 5, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.2050, i64 5, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.1838, i64 6, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.2051, i64 6, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.1839, i64 4, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.2052, i64 4, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.1840, i64 7, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.2053, i64 7, i64 0 }, ptr %t13 %t14 = insertvalue { ptr, i64, i64 } undef, ptr %t5, 0 %t15 = insertvalue { ptr, i64, i64 } %t14, i64 8, 1 %t16 = insertvalue { ptr, i64, i64 } %t15, i64 8, 2 @@ -27408,22 +31281,22 @@ entry: %t18 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 %t19 = load { ptr, i64, i64 }, ptr %t18 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1841, i64 6, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2054, i64 6, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.from2856 -logic.from2856: - br i1 %t23, label %logic.rhs2857, label %logic.end2858 -logic.rhs2857: + br label %logic.from3140 +logic.from3140: + br i1 %t23, label %logic.rhs3141, label %logic.end3142 +logic.rhs3141: %t24 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 %t25 = load { ptr, i64, i64 }, ptr %t24 %t26 = extractvalue { ptr, i64, i64 } %t25, 1 %t27 = icmp uge i64 0, %t26 - br i1 %t27, label %range2859, label %inrange2860 -range2859: - call void @finch_panic_index(ptr @.str.1842, i64 1149, i64 0, i64 %t26) + br i1 %t27, label %range3143, label %inrange3144 +range3143: + call void @finch_panic_index(ptr @.str.2055, i64 1273, i64 0, i64 %t26) unreachable -inrange2860: +inrange3144: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 %t30 = load %S.ast.Node, ptr %t29 @@ -27433,25 +31306,25 @@ inrange2860: store { ptr, i64, i64 } %t32, ptr %a34 %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) %t36 = icmp ne i32 %t35, 0 - br label %logic.rend2861 -logic.rend2861: - br label %logic.end2858 -logic.end2858: - %t37 = phi i1 [ false, %logic.from2856 ], [ %t36, %logic.rend2861 ] - br i1 %t37, label %then2862, label %endif2864 -then2862: + br label %logic.rend3145 +logic.rend3145: + br label %logic.end3142 +logic.end3142: + %t37 = phi i1 [ false, %logic.from3140 ], [ %t36, %logic.rend3145 ] + br i1 %t37, label %then3146, label %endif3148 +then3146: ret i1 true -endif2864: +endif3148: %t38 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 %t39 = load { ptr, i64, i64 }, ptr %t38 store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2056, i64 6, i64 0 }, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br label %logic.from2865 -logic.from2865: - br i1 %t43, label %logic.rhs2866, label %logic.end2867 -logic.rhs2866: + br label %logic.from3149 +logic.from3149: + br i1 %t43, label %logic.rhs3150, label %logic.end3151 +logic.rhs3150: %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 %t45 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 %t46 = load { ptr, i64, i64 }, ptr %t45 @@ -27459,40 +31332,40 @@ logic.rhs2866: %t48 = load i64, ptr %t44 %t49 = load ptr, ptr %a17 store i64 0, ptr %a50 - br label %find.cond2868 -find.cond2868: + br label %find.cond3152 +find.cond3152: %t51 = load i64, ptr %a50 %t52 = icmp slt i64 %t51, %t48 - br i1 %t52, label %find.body2869, label %find.end2872 -find.body2869: + br i1 %t52, label %find.body3153, label %find.end3156 +find.body3153: %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t51 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 store { ptr, i64, i64 } %t46, ptr %a56 %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %find.hit2870, label %find.next2871 -find.hit2870: + br i1 %t58, label %find.hit3154, label %find.next3155 +find.hit3154: store i64 %t51, ptr %a47 - br label %find.end2872 -find.next2871: + br label %find.end3156 +find.next3155: %t59 = add i64 %t51, 1 store i64 %t59, ptr %a50 - br label %find.cond2868 -find.end2872: + br label %find.cond3152 +find.end3156: %t60 = load i64, ptr %a47 %t61 = icmp sge i64 %t60, 0 - br label %logic.from2873 -logic.from2873: - br i1 %t61, label %logic.end2875, label %logic.rhs2874 -logic.rhs2874: + br label %logic.from3157 +logic.from3157: + br i1 %t61, label %logic.end3159, label %logic.rhs3158 +logic.rhs3158: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1844, i64 1155, ptr @.str.1845) + br i1 %t63, label %panic3160, label %ok3161 +panic3160: + call void @finch_panic(ptr @.str.2057, i64 1279, ptr @.str.2058) unreachable -ok2877: +ok3161: %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 22 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 %t66 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 @@ -27501,52 +31374,52 @@ ok2877: %t69 = load i64, ptr %t65 %t70 = load ptr, ptr %t64 store i64 0, ptr %a71 - br label %find.cond2878 -find.cond2878: + br label %find.cond3162 +find.cond3162: %t72 = load i64, ptr %a71 %t73 = icmp slt i64 %t72, %t69 - br i1 %t73, label %find.body2879, label %find.end2882 -find.body2879: + br i1 %t73, label %find.body3163, label %find.end3166 +find.body3163: %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t72 %t75 = load { ptr, i64, i64 }, ptr %t74 store { ptr, i64, i64 } %t75, ptr %a76 store { ptr, i64, i64 } %t67, ptr %a77 %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) %t79 = icmp ne i32 %t78, 0 - br i1 %t79, label %find.hit2880, label %find.next2881 -find.hit2880: + br i1 %t79, label %find.hit3164, label %find.next3165 +find.hit3164: store i64 %t72, ptr %a68 - br label %find.end2882 -find.next2881: + br label %find.end3166 +find.next3165: %t80 = add i64 %t72, 1 store i64 %t80, ptr %a71 - br label %find.cond2878 -find.end2882: + br label %find.cond3162 +find.end3166: %t81 = load i64, ptr %a68 %t82 = icmp sge i64 %t81, 0 - br label %logic.rend2883 -logic.rend2883: - br label %logic.end2875 -logic.end2875: - %t83 = phi i1 [ true, %logic.from2873 ], [ %t82, %logic.rend2883 ] - br label %logic.rend2884 -logic.rend2884: - br label %logic.end2867 -logic.end2867: - %t84 = phi i1 [ false, %logic.from2865 ], [ %t83, %logic.rend2884 ] - br label %logic.from2885 -logic.from2885: - br i1 %t84, label %logic.rhs2886, label %logic.end2887 -logic.rhs2886: + br label %logic.rend3167 +logic.rend3167: + br label %logic.end3159 +logic.end3159: + %t83 = phi i1 [ true, %logic.from3157 ], [ %t82, %logic.rend3167 ] + br label %logic.rend3168 +logic.rend3168: + br label %logic.end3151 +logic.end3151: + %t84 = phi i1 [ false, %logic.from3149 ], [ %t83, %logic.rend3168 ] + br label %logic.from3169 +logic.from3169: + br i1 %t84, label %logic.rhs3170, label %logic.end3171 +logic.rhs3170: %t85 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 %t86 = load { ptr, i64, i64 }, ptr %t85 %t87 = extractvalue { ptr, i64, i64 } %t86, 1 %t88 = icmp uge i64 0, %t87 - br i1 %t88, label %range2888, label %inrange2889 -range2888: - call void @finch_panic_index(ptr @.str.1846, i64 1155, i64 0, i64 %t87) + br i1 %t88, label %range3172, label %inrange3173 +range3172: + call void @finch_panic_index(ptr @.str.2059, i64 1279, i64 0, i64 %t87) unreachable -inrange2889: +inrange3173: %t89 = extractvalue { ptr, i64, i64 } %t86, 0 %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0 %t91 = load %S.ast.Node, ptr %t90 @@ -27556,62 +31429,62 @@ inrange2889: store { ptr, i64, i64 } %t93, ptr %a95 %t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95) %t97 = icmp ne i32 %t96, 0 - br label %logic.rend2890 -logic.rend2890: - br label %logic.end2887 -logic.end2887: - %t98 = phi i1 [ false, %logic.from2885 ], [ %t97, %logic.rend2890 ] - br i1 %t98, label %then2891, label %endif2893 -then2891: + br label %logic.rend3174 +logic.rend3174: + br label %logic.end3171 +logic.end3171: + %t98 = phi i1 [ false, %logic.from3169 ], [ %t97, %logic.rend3174 ] + br i1 %t98, label %then3175, label %endif3177 +then3175: ret i1 true -endif2893: +endif3177: %t99 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 %t100 = load { ptr, i64, i64 }, ptr %t99 store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.2060, i64 4, i64 0 }, ptr %a102 %t103 = call i32 @finch_str_eq(ptr %a101, ptr %a102) %t104 = icmp ne i32 %t103, 0 - br label %logic.from2894 -logic.from2894: - br i1 %t104, label %logic.rhs2895, label %logic.end2896 -logic.rhs2895: + br label %logic.from3178 +logic.from3178: + br i1 %t104, label %logic.rhs3179, label %logic.end3180 +logic.rhs3179: %t105 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 %t106 = load { ptr, i64, i64 }, ptr %t105 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1848, i64 4, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.2061, i64 4, i64 0 }, ptr %a108 %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) %t110 = icmp ne i32 %t109, 0 - br label %logic.rend2897 -logic.rend2897: - br label %logic.end2896 -logic.end2896: - %t111 = phi i1 [ false, %logic.from2894 ], [ %t110, %logic.rend2897 ] - br label %logic.from2898 -logic.from2898: - br i1 %t111, label %logic.rhs2899, label %logic.end2900 -logic.rhs2899: + br label %logic.rend3181 +logic.rend3181: + br label %logic.end3180 +logic.end3180: + %t111 = phi i1 [ false, %logic.from3178 ], [ %t110, %logic.rend3181 ] + br label %logic.from3182 +logic.from3182: + br i1 %t111, label %logic.rhs3183, label %logic.end3184 +logic.rhs3183: %t112 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = icmp eq i64 %t114, 1 - br label %logic.rend2901 -logic.rend2901: - br label %logic.end2900 -logic.end2900: - %t116 = phi i1 [ false, %logic.from2898 ], [ %t115, %logic.rend2901 ] - br label %logic.from2902 -logic.from2902: - br i1 %t116, label %logic.rhs2903, label %logic.end2904 -logic.rhs2903: + br label %logic.rend3185 +logic.rend3185: + br label %logic.end3184 +logic.end3184: + %t116 = phi i1 [ false, %logic.from3182 ], [ %t115, %logic.rend3185 ] + br label %logic.from3186 +logic.from3186: + br i1 %t116, label %logic.rhs3187, label %logic.end3188 +logic.rhs3187: %t117 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 %t118 = load { ptr, i64, i64 }, ptr %t117 %t119 = extractvalue { ptr, i64, i64 } %t118, 1 %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2905, label %inrange2906 -range2905: - call void @finch_panic_index(ptr @.str.1849, i64 1158, i64 0, i64 %t119) + br i1 %t120, label %range3189, label %inrange3190 +range3189: + call void @finch_panic_index(ptr @.str.2062, i64 1282, i64 0, i64 %t119) unreachable -inrange2906: +inrange3190: %t121 = extractvalue { ptr, i64, i64 } %t118, 0 %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 0 %t123 = load %S.ast.Node, ptr %t122 @@ -27621,25 +31494,25 @@ inrange2906: store { ptr, i64, i64 } %t125, ptr %a127 %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) %t129 = icmp ne i32 %t128, 0 - br label %logic.rend2907 -logic.rend2907: - br label %logic.end2904 -logic.end2904: - %t130 = phi i1 [ false, %logic.from2902 ], [ %t129, %logic.rend2907 ] - br i1 %t130, label %then2908, label %endif2910 -then2908: + br label %logic.rend3191 +logic.rend3191: + br label %logic.end3188 +logic.end3188: + %t130 = phi i1 [ false, %logic.from3186 ], [ %t129, %logic.rend3191 ] + br i1 %t130, label %then3192, label %endif3194 +then3192: ret i1 true -endif2910: +endif3194: %t131 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 store i64 0, ptr %a132 - br label %each.cond2911 -each.cond2911: + br label %each.cond3195 +each.cond3195: %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 %t134 = load i64, ptr %t133 %t135 = load i64, ptr %a132 %t136 = icmp slt i64 %t135, %t134 - br i1 %t136, label %each.body2912, label %each.end2914 -each.body2912: + br i1 %t136, label %each.body3196, label %each.end3198 +each.body3196: %t137 = load ptr, ptr %t131 %t138 = getelementptr inbounds %S.ast.Node, ptr %t137, i64 %t135 %t139 = load %S.ast.Node, ptr %t138 @@ -27648,91 +31521,20 @@ each.body2912: %t142 = load { ptr, i64, i64 }, ptr %a2 %t143 = load %S.ast.Node, ptr %a140 %t144 = call i1 @finch.gen.mutates(ptr %t141, { ptr, i64, i64 } %t142, %S.ast.Node %t143) - br i1 %t144, label %then2915, label %endif2917 -then2915: + br i1 %t144, label %then3199, label %endif3201 +then3199: ret i1 true -endif2917: - br label %each.step2913 -each.step2913: +endif3201: + br label %each.step3197 +each.step3197: %t145 = load i64, ptr %a132 %t146 = add i64 %t145, 1 store i64 %t146, ptr %a132 - br label %each.cond2911 -each.end2914: + br label %each.cond3195 +each.end3198: ret i1 false } -define internal void @finch.copy.arr_bool(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_FnSig(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.FnSig, ptr %src - store %S.gen.FnSig %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 6 - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 6 - call void @finch.copy.arr_str(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 7 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 7 - call void @finch.copy.arr_S_ast_Type(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 8 - %t15 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 8 - call void @finch_str_copy(ptr %t14, ptr %t15) - %t16 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 11 - %t17 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 11 - call void @finch_str_copy(ptr %t16, ptr %t17) - %t18 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 12 - %t19 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 12 - call void @finch.copy.S_ast_Type(ptr %t18, ptr %t19) - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 13 - %t21 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 13 - call void @finch.copy.arr_S_ast_Type(ptr %t20, ptr %t21) - %t22 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 14 - %t23 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 14 - call void @finch.copy.arr_str(ptr %t22, ptr %t23) - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %dst, i32 0, i32 15 - %t25 = getelementptr inbounds %S.gen.FnSig, ptr %src, i32 0, i32 15 - call void @finch.copy.arr_bool(ptr %t24, ptr %t25) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Template, ptr %src - store %S.gen.Template %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Template, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Template, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_str(ptr %t8, ptr %t9) - ret void -} - define internal void @finch.gen.declare(ptr %p0) { entry: %a1 = alloca ptr, align 16 @@ -27986,49 +31788,49 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2918, label %ok2919 -panic2918: - call void @finch_panic(ptr @.str.1850, i64 1172, ptr @.str.1851) + br i1 %t3, label %panic3202, label %ok3203 +panic3202: + call void @finch_panic(ptr @.str.2063, i64 1296, ptr @.str.2064) unreachable -ok2919: +ok3203: %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 0 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 %t6 = load i64, ptr %t5 store i64 0, ptr %a7 - br label %for.cond2920 -for.cond2920: + br label %for.cond3204 +for.cond3204: %t8 = load i64, ptr %a7 %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body2921, label %for.end2923 -for.body2921: + br i1 %t9, label %for.body3205, label %for.end3207 +for.body3205: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2924, label %ok2925 -panic2924: - call void @finch_panic(ptr @.str.1852, i64 1173, ptr @.str.1853) + br i1 %t11, label %panic3208, label %ok3209 +panic3208: + call void @finch_panic(ptr @.str.2065, i64 1297, ptr @.str.2066) unreachable -ok2925: +ok3209: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 0 %t13 = load i64, ptr %a7 %t14 = load { ptr, i64, i64 }, ptr %t12 %t15 = extractvalue { ptr, i64, i64 } %t14, 1 %t16 = icmp uge i64 %t13, %t15 - br i1 %t16, label %range2926, label %inrange2927 -range2926: - call void @finch_panic_index(ptr @.str.1854, i64 1173, i64 %t13, i64 %t15) + br i1 %t16, label %range3210, label %inrange3211 +range3210: + call void @finch_panic_index(ptr @.str.2067, i64 1297, i64 %t13, i64 %t15) unreachable -inrange2927: +inrange3211: %t17 = extractvalue { ptr, i64, i64 } %t14, 0 %t18 = getelementptr inbounds %S.ast.Program, ptr %t17, i64 %t13 %t19 = getelementptr inbounds %S.ast.Program, ptr %t18, i32 0, i32 0 %t20 = load { ptr, i64, i64 }, ptr %t19 %t21 = load ptr, ptr %a1 %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic2928, label %ok2929 -panic2928: - call void @finch_panic(ptr @.str.1855, i64 1173, ptr @.str.1856) + br i1 %t22, label %panic3212, label %ok3213 +panic3212: + call void @finch_panic(ptr @.str.2068, i64 1297, ptr @.str.2069) unreachable -ok2929: +ok3213: %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 store { ptr, i64, i64 } %t20, ptr %a24 call void @finch_str_copy(ptr %a25, ptr %a24) @@ -28036,50 +31838,50 @@ ok2929: store { ptr, i64, i64 } %t26, ptr %t23 %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic2930, label %ok2931 -panic2930: - call void @finch_panic(ptr @.str.1857, i64 1174, ptr @.str.1858) + br i1 %t28, label %panic3214, label %ok3215 +panic3214: + call void @finch_panic(ptr @.str.2070, i64 1298, ptr @.str.2071) unreachable -ok2931: +ok3215: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 0 %t30 = load i64, ptr %a7 %t31 = load { ptr, i64, i64 }, ptr %t29 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range2932, label %inrange2933 -range2932: - call void @finch_panic_index(ptr @.str.1859, i64 1174, i64 %t30, i64 %t32) + br i1 %t33, label %range3216, label %inrange3217 +range3216: + call void @finch_panic_index(ptr @.str.2072, i64 1298, i64 %t30, i64 %t32) unreachable -inrange2933: +inrange3217: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Program, ptr %t34, i64 %t30 %t36 = getelementptr inbounds %S.ast.Program, ptr %t35, i32 0, i32 6 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 %t38 = load i64, ptr %t37 store i64 0, ptr %a39 - br label %for.cond2934 -for.cond2934: + br label %for.cond3218 +for.cond3218: %t40 = load i64, ptr %a39 %t41 = icmp slt i64 %t40, %t38 - br i1 %t41, label %for.body2935, label %for.end2937 -for.body2935: + br i1 %t41, label %for.body3219, label %for.end3221 +for.body3219: %t42 = load ptr, ptr %a1 %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic2938, label %ok2939 -panic2938: - call void @finch_panic(ptr @.str.1860, i64 1175, ptr @.str.1861) + br i1 %t43, label %panic3222, label %ok3223 +panic3222: + call void @finch_panic(ptr @.str.2073, i64 1299, ptr @.str.2074) unreachable -ok2939: +ok3223: %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 0 %t45 = load i64, ptr %a7 %t46 = load { ptr, i64, i64 }, ptr %t44 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 %t45, %t47 - br i1 %t48, label %range2940, label %inrange2941 -range2940: - call void @finch_panic_index(ptr @.str.1862, i64 1175, i64 %t45, i64 %t47) + br i1 %t48, label %range3224, label %inrange3225 +range3224: + call void @finch_panic_index(ptr @.str.2075, i64 1299, i64 %t45, i64 %t47) unreachable -inrange2941: +inrange3225: %t49 = extractvalue { ptr, i64, i64 } %t46, 0 %t50 = getelementptr inbounds %S.ast.Program, ptr %t49, i64 %t45 %t51 = getelementptr inbounds %S.ast.Program, ptr %t50, i32 0, i32 6 @@ -28087,11 +31889,11 @@ inrange2941: %t53 = load { ptr, i64, i64 }, ptr %t51 %t54 = extractvalue { ptr, i64, i64 } %t53, 1 %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range2942, label %inrange2943 -range2942: - call void @finch_panic_index(ptr @.str.1863, i64 1175, i64 %t52, i64 %t54) + br i1 %t55, label %range3226, label %inrange3227 +range3226: + call void @finch_panic_index(ptr @.str.2076, i64 1299, i64 %t52, i64 %t54) unreachable -inrange2943: +inrange3227: %t56 = extractvalue { ptr, i64, i64 } %t53, 0 %t57 = getelementptr inbounds %S.ast.Node, ptr %t56, i64 %t52 %t58 = load %S.ast.Node, ptr %t57 @@ -28102,79 +31904,79 @@ inrange2943: %t63 = load ptr, ptr %a1 %t64 = load ptr, ptr %a1 %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic2944, label %ok2945 -panic2944: - call void @finch_panic(ptr @.str.1864, i64 1176, ptr @.str.1865) + br i1 %t65, label %panic3228, label %ok3229 +panic3228: + call void @finch_panic(ptr @.str.2077, i64 1300, ptr @.str.2078) unreachable -ok2945: +ok3229: %t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 13 %t67 = load { ptr, i64, i64 }, ptr %t66 %t68 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 %t69 = load { ptr, i64, i64 }, ptr %t68 %t70 = call i64 @finch.gen.findStruct(ptr %t63, { ptr, i64, i64 } %t67, { ptr, i64, i64 } %t69) %t71 = icmp sge i64 %t70, 0 - br label %logic.from2946 -logic.from2946: - br i1 %t71, label %logic.end2948, label %logic.rhs2947 -logic.rhs2947: + br label %logic.from3230 +logic.from3230: + br i1 %t71, label %logic.end3232, label %logic.rhs3231 +logic.rhs3231: %t72 = load ptr, ptr %a1 %t73 = load ptr, ptr %a1 %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic2949, label %ok2950 -panic2949: - call void @finch_panic(ptr @.str.1866, i64 1176, ptr @.str.1867) + br i1 %t74, label %panic3233, label %ok3234 +panic3233: + call void @finch_panic(ptr @.str.2079, i64 1300, ptr @.str.2080) unreachable -ok2950: +ok3234: %t75 = getelementptr inbounds %S.gen.Gen, ptr %t73, i32 0, i32 13 %t76 = load { ptr, i64, i64 }, ptr %t75 %t77 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = call i64 @finch.gen.findTemplate(ptr %t72, { ptr, i64, i64 } %t76, { ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.1868, i64 0, i64 0 }, i1 true) + %t79 = call i64 @finch.gen.findTemplate(ptr %t72, { ptr, i64, i64 } %t76, { ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.2081, i64 0, i64 0 }, i1 true) %t80 = icmp sge i64 %t79, 0 - br label %logic.rend2951 -logic.rend2951: - br label %logic.end2948 -logic.end2948: - %t81 = phi i1 [ true, %logic.from2946 ], [ %t80, %logic.rend2951 ] - br i1 %t81, label %then2952, label %endif2954 -then2952: + br label %logic.rend3235 +logic.rend3235: + br label %logic.end3232 +logic.end3232: + %t81 = phi i1 [ true, %logic.from3230 ], [ %t80, %logic.rend3235 ] + br i1 %t81, label %then3236, label %endif3238 +then3236: %t82 = load ptr, ptr %a1 %t83 = load %S.ast.Node, ptr %a62 %t84 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 1 %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1869, i64 12, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2082, i64 12, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1870, i64 18, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.2083, i64 18, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 call void @finch.gen.fail(ptr %t82, %S.ast.Node %t83, { ptr, i64, i64 } %t93) - br label %endif2954 -endif2954: + br label %endif3238 +endif3238: %t94 = getelementptr inbounds %S.ast.Node, ptr %a62, i32 0, i32 3 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 %t96 = load i64, ptr %t95 %t97 = icmp sgt i64 %t96, 0 - br i1 %t97, label %then2955, label %endif2957 -then2955: + br i1 %t97, label %then3239, label %endif3241 +then3239: %t98 = load ptr, ptr %a1 %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic2958, label %ok2959 -panic2958: - call void @finch_panic(ptr @.str.1871, i64 1181, ptr @.str.1872) + br i1 %t99, label %panic3242, label %ok3243 +panic3242: + call void @finch_panic(ptr @.str.2084, i64 1305, ptr @.str.2085) unreachable -ok2959: +ok3243: %t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 16 %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i32 0, i32 1 %t102 = load ptr, ptr %a1 %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic2960, label %ok2961 -panic2960: - call void @finch_panic(ptr @.str.1873, i64 1181, ptr @.str.1874) + br i1 %t103, label %panic3244, label %ok3245 +panic3244: + call void @finch_panic(ptr @.str.2086, i64 1305, ptr @.str.2087) unreachable -ok2961: +ok3245: %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 13 %t105 = load { ptr, i64, i64 }, ptr %t104 store { ptr, i64, i64 } %t105, ptr %a106 @@ -28205,24 +32007,24 @@ ok2961: %t130 = getelementptr inbounds %S.gen.Template, ptr %t129, i64 %t127 store %S.gen.Template %t126, ptr %t130 store i64 %t128, ptr %t101 - br label %for.step2936 -endif2957: + br label %for.step3220 +endif3241: %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic2962, label %ok2963 -panic2962: - call void @finch_panic(ptr @.str.1875, i64 1184, ptr @.str.1876) + br i1 %t132, label %panic3246, label %ok3247 +panic3246: + call void @finch_panic(ptr @.str.2088, i64 1308, ptr @.str.2089) unreachable -ok2963: +ok3247: %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 15 %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic2964, label %ok2965 -panic2964: - call void @finch_panic(ptr @.str.1877, i64 1184, ptr @.str.1878) + br i1 %t136, label %panic3248, label %ok3249 +panic3248: + call void @finch_panic(ptr @.str.2090, i64 1308, ptr @.str.2091) unreachable -ok2965: +ok3249: %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 13 %t138 = load { ptr, i64, i64 }, ptr %t137 store { ptr, i64, i64 } %t138, ptr %a139 @@ -28246,65 +32048,65 @@ ok2965: %t156 = getelementptr inbounds %S.gen.StructDef, ptr %t155, i64 %t153 store %S.gen.StructDef %t152, ptr %t156 store i64 %t154, ptr %t134 - br label %for.step2936 -for.step2936: + br label %for.step3220 +for.step3220: %t157 = load i64, ptr %a39 %t158 = add i64 %t157, 1 store i64 %t158, ptr %a39 - br label %for.cond2934 -for.end2937: - br label %for.step2922 -for.step2922: + br label %for.cond3218 +for.end3221: + br label %for.step3206 +for.step3206: %t159 = load i64, ptr %a7 %t160 = add i64 %t159, 1 store i64 %t160, ptr %a7 - br label %for.cond2920 -for.end2923: + br label %for.cond3204 +for.end3207: %t161 = load ptr, ptr %a1 %t162 = icmp eq ptr %t161, null - br i1 %t162, label %panic2966, label %ok2967 -panic2966: - call void @finch_panic(ptr @.str.1879, i64 1187, ptr @.str.1880) + br i1 %t162, label %panic3250, label %ok3251 +panic3250: + call void @finch_panic(ptr @.str.2092, i64 1311, ptr @.str.2093) unreachable -ok2967: +ok3251: %t163 = getelementptr inbounds %S.gen.Gen, ptr %t161, i32 0, i32 0 %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 %t165 = load i64, ptr %t164 store i64 0, ptr %a166 - br label %for.cond2968 -for.cond2968: + br label %for.cond3252 +for.cond3252: %t167 = load i64, ptr %a166 %t168 = icmp slt i64 %t167, %t165 - br i1 %t168, label %for.body2969, label %for.end2971 -for.body2969: + br i1 %t168, label %for.body3253, label %for.end3255 +for.body3253: %t169 = load ptr, ptr %a1 %t170 = icmp eq ptr %t169, null - br i1 %t170, label %panic2972, label %ok2973 -panic2972: - call void @finch_panic(ptr @.str.1881, i64 1188, ptr @.str.1882) + br i1 %t170, label %panic3256, label %ok3257 +panic3256: + call void @finch_panic(ptr @.str.2094, i64 1312, ptr @.str.2095) unreachable -ok2973: +ok3257: %t171 = getelementptr inbounds %S.gen.Gen, ptr %t169, i32 0, i32 0 %t172 = load i64, ptr %a166 %t173 = load { ptr, i64, i64 }, ptr %t171 %t174 = extractvalue { ptr, i64, i64 } %t173, 1 %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range2974, label %inrange2975 -range2974: - call void @finch_panic_index(ptr @.str.1883, i64 1188, i64 %t172, i64 %t174) + br i1 %t175, label %range3258, label %inrange3259 +range3258: + call void @finch_panic_index(ptr @.str.2096, i64 1312, i64 %t172, i64 %t174) unreachable -inrange2975: +inrange3259: %t176 = extractvalue { ptr, i64, i64 } %t173, 0 %t177 = getelementptr inbounds %S.ast.Program, ptr %t176, i64 %t172 %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 %t180 = load ptr, ptr %a1 %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic2976, label %ok2977 -panic2976: - call void @finch_panic(ptr @.str.1884, i64 1188, ptr @.str.1885) + br i1 %t181, label %panic3260, label %ok3261 +panic3260: + call void @finch_panic(ptr @.str.2097, i64 1312, ptr @.str.2098) unreachable -ok2977: +ok3261: %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 13 store { ptr, i64, i64 } %t179, ptr %a183 call void @finch_str_copy(ptr %a184, ptr %a183) @@ -28312,50 +32114,50 @@ ok2977: store { ptr, i64, i64 } %t185, ptr %t182 %t186 = load ptr, ptr %a1 %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic2978, label %ok2979 -panic2978: - call void @finch_panic(ptr @.str.1886, i64 1189, ptr @.str.1887) + br i1 %t187, label %panic3262, label %ok3263 +panic3262: + call void @finch_panic(ptr @.str.2099, i64 1313, ptr @.str.2100) unreachable -ok2979: +ok3263: %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 0 %t189 = load i64, ptr %a166 %t190 = load { ptr, i64, i64 }, ptr %t188 %t191 = extractvalue { ptr, i64, i64 } %t190, 1 %t192 = icmp uge i64 %t189, %t191 - br i1 %t192, label %range2980, label %inrange2981 -range2980: - call void @finch_panic_index(ptr @.str.1888, i64 1189, i64 %t189, i64 %t191) + br i1 %t192, label %range3264, label %inrange3265 +range3264: + call void @finch_panic_index(ptr @.str.2101, i64 1313, i64 %t189, i64 %t191) unreachable -inrange2981: +inrange3265: %t193 = extractvalue { ptr, i64, i64 } %t190, 0 %t194 = getelementptr inbounds %S.ast.Program, ptr %t193, i64 %t189 %t195 = getelementptr inbounds %S.ast.Program, ptr %t194, i32 0, i32 7 %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i32 0, i32 1 %t197 = load i64, ptr %t196 store i64 0, ptr %a198 - br label %for.cond2982 -for.cond2982: + br label %for.cond3266 +for.cond3266: %t199 = load i64, ptr %a198 %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body2983, label %for.end2985 -for.body2983: + br i1 %t200, label %for.body3267, label %for.end3269 +for.body3267: %t201 = load ptr, ptr %a1 %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic2986, label %ok2987 -panic2986: - call void @finch_panic(ptr @.str.1889, i64 1190, ptr @.str.1890) + br i1 %t202, label %panic3270, label %ok3271 +panic3270: + call void @finch_panic(ptr @.str.2102, i64 1314, ptr @.str.2103) unreachable -ok2987: +ok3271: %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 0 %t204 = load i64, ptr %a166 %t205 = load { ptr, i64, i64 }, ptr %t203 %t206 = extractvalue { ptr, i64, i64 } %t205, 1 %t207 = icmp uge i64 %t204, %t206 - br i1 %t207, label %range2988, label %inrange2989 -range2988: - call void @finch_panic_index(ptr @.str.1891, i64 1190, i64 %t204, i64 %t206) + br i1 %t207, label %range3272, label %inrange3273 +range3272: + call void @finch_panic_index(ptr @.str.2104, i64 1314, i64 %t204, i64 %t206) unreachable -inrange2989: +inrange3273: %t208 = extractvalue { ptr, i64, i64 } %t205, 0 %t209 = getelementptr inbounds %S.ast.Program, ptr %t208, i64 %t204 %t210 = getelementptr inbounds %S.ast.Program, ptr %t209, i32 0, i32 7 @@ -28363,11 +32165,11 @@ inrange2989: %t212 = load { ptr, i64, i64 }, ptr %t210 %t213 = extractvalue { ptr, i64, i64 } %t212, 1 %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range2990, label %inrange2991 -range2990: - call void @finch_panic_index(ptr @.str.1892, i64 1190, i64 %t211, i64 %t213) + br i1 %t214, label %range3274, label %inrange3275 +range3274: + call void @finch_panic_index(ptr @.str.2105, i64 1314, i64 %t211, i64 %t213) unreachable -inrange2991: +inrange3275: %t215 = extractvalue { ptr, i64, i64 } %t212, 0 %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 %t217 = load %S.ast.Node, ptr %t216 @@ -28378,64 +32180,64 @@ inrange2991: %t222 = load ptr, ptr %a1 %t223 = load ptr, ptr %a1 %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic2992, label %ok2993 -panic2992: - call void @finch_panic(ptr @.str.1893, i64 1191, ptr @.str.1894) + br i1 %t224, label %panic3276, label %ok3277 +panic3276: + call void @finch_panic(ptr @.str.2106, i64 1315, ptr @.str.2107) unreachable -ok2993: +ok3277: %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 13 %t226 = load { ptr, i64, i64 }, ptr %t225 %t227 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 %t228 = load { ptr, i64, i64 }, ptr %t227 %t229 = call i64 @finch.gen.findEnum(ptr %t222, { ptr, i64, i64 } %t226, { ptr, i64, i64 } %t228) %t230 = icmp sge i64 %t229, 0 - br label %logic.from2994 -logic.from2994: - br i1 %t230, label %logic.end2996, label %logic.rhs2995 -logic.rhs2995: + br label %logic.from3278 +logic.from3278: + br i1 %t230, label %logic.end3280, label %logic.rhs3279 +logic.rhs3279: %t231 = load ptr, ptr %a1 %t232 = load ptr, ptr %a1 %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic2997, label %ok2998 -panic2997: - call void @finch_panic(ptr @.str.1895, i64 1191, ptr @.str.1896) + br i1 %t233, label %panic3281, label %ok3282 +panic3281: + call void @finch_panic(ptr @.str.2108, i64 1315, ptr @.str.2109) unreachable -ok2998: +ok3282: %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 13 %t235 = load { ptr, i64, i64 }, ptr %t234 %t236 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 %t237 = load { ptr, i64, i64 }, ptr %t236 %t238 = call i64 @finch.gen.findStruct(ptr %t231, { ptr, i64, i64 } %t235, { ptr, i64, i64 } %t237) %t239 = icmp sge i64 %t238, 0 - br label %logic.rend2999 -logic.rend2999: - br label %logic.end2996 -logic.end2996: - %t240 = phi i1 [ true, %logic.from2994 ], [ %t239, %logic.rend2999 ] - br i1 %t240, label %then3000, label %endif3002 -then3000: + br label %logic.rend3283 +logic.rend3283: + br label %logic.end3280 +logic.end3280: + %t240 = phi i1 [ true, %logic.from3278 ], [ %t239, %logic.rend3283 ] + br i1 %t240, label %then3284, label %endif3286 +then3284: %t241 = load ptr, ptr %a1 %t242 = load %S.ast.Node, ptr %a221 %t243 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } { ptr @.str.1897, i64 1, i64 0 }, ptr %a246 + store { ptr, i64, i64 } { ptr @.str.2110, i64 1, i64 0 }, ptr %a246 store { ptr, i64, i64 } %t244, ptr %a247 call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) %t248 = load { ptr, i64, i64 }, ptr %a245 store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.1898, i64 18, i64 0 }, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.2111, i64 18, i64 0 }, ptr %a251 call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) %t252 = load { ptr, i64, i64 }, ptr %a249 call void @finch.gen.fail(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t252) - br label %endif3002 -endif3002: + br label %endif3286 +endif3286: %t253 = load ptr, ptr %a1 %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic3003, label %ok3004 -panic3003: - call void @finch_panic(ptr @.str.1899, i64 1194, ptr @.str.1900) + br i1 %t254, label %panic3287, label %ok3288 +panic3287: + call void @finch_panic(ptr @.str.2112, i64 1318, ptr @.str.2113) unreachable -ok3004: +ok3288: %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 13 %t256 = load { ptr, i64, i64 }, ptr %t255 store { ptr, i64, i64 } %t256, ptr %a257 @@ -28452,14 +32254,14 @@ ok3004: store i64 0, ptr %a268 %t269 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 9 store i64 0, ptr %a270 - br label %each.cond3005 -each.cond3005: + br label %each.cond3289 +each.cond3289: %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i32 0, i32 1 %t272 = load i64, ptr %t271 %t273 = load i64, ptr %a270 %t274 = icmp slt i64 %t273, %t272 - br i1 %t274, label %each.body3006, label %each.end3008 -each.body3006: + br i1 %t274, label %each.body3290, label %each.end3292 +each.body3290: %t275 = load ptr, ptr %t269 %t276 = getelementptr inbounds %S.ast.Node, ptr %t275, i64 %t273 %t277 = load %S.ast.Node, ptr %t276 @@ -28468,15 +32270,15 @@ each.body3006: %t280 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 %t281 = load i64, ptr %t280 %t282 = icmp sgt i64 %t281, 0 - br i1 %t282, label %then3009, label %endif3011 -then3009: + br i1 %t282, label %then3293, label %endif3295 +then3293: %t283 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 4 %t284 = load { ptr, i64, i64 }, ptr %t283 store { ptr, i64, i64 } %t284, ptr %a285 - %t286 = call i64 @finch_str_to_int(ptr %a285, ptr @.str.1901, i64 1198) + %t286 = call i64 @finch_str_to_int(ptr %a285, ptr @.str.2114, i64 1322) store i64 %t286, ptr %a268 - br label %endif3011 -endif3011: + br label %endif3295 +endif3295: %t287 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 %t289 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 @@ -28485,41 +32287,41 @@ endif3011: %t292 = load i64, ptr %t288 %t293 = load ptr, ptr %t287 store i64 0, ptr %a294 - br label %find.cond3012 -find.cond3012: + br label %find.cond3296 +find.cond3296: %t295 = load i64, ptr %a294 %t296 = icmp slt i64 %t295, %t292 - br i1 %t296, label %find.body3013, label %find.end3016 -find.body3013: + br i1 %t296, label %find.body3297, label %find.end3300 +find.body3297: %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t295 %t298 = load { ptr, i64, i64 }, ptr %t297 store { ptr, i64, i64 } %t298, ptr %a299 store { ptr, i64, i64 } %t290, ptr %a300 %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %find.hit3014, label %find.next3015 -find.hit3014: + br i1 %t302, label %find.hit3298, label %find.next3299 +find.hit3298: store i64 %t295, ptr %a291 - br label %find.end3016 -find.next3015: + br label %find.end3300 +find.next3299: %t303 = add i64 %t295, 1 store i64 %t303, ptr %a294 - br label %find.cond3012 -find.end3016: + br label %find.cond3296 +find.end3300: %t304 = load i64, ptr %a291 %t305 = icmp sge i64 %t304, 0 - br i1 %t305, label %then3017, label %endif3019 -then3017: + br i1 %t305, label %then3301, label %endif3303 +then3301: %t306 = load ptr, ptr %a1 %t307 = load %S.ast.Node, ptr %a278 %t308 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 %t309 = load { ptr, i64, i64 }, ptr %t308 - store { ptr, i64, i64 } { ptr @.str.1902, i64 9, i64 0 }, ptr %a311 + store { ptr, i64, i64 } { ptr @.str.2115, i64 9, i64 0 }, ptr %a311 store { ptr, i64, i64 } %t309, ptr %a312 call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) %t313 = load { ptr, i64, i64 }, ptr %a310 store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.1903, i64 17, i64 0 }, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.2116, i64 17, i64 0 }, ptr %a316 call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) %t317 = load { ptr, i64, i64 }, ptr %a314 %t318 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 @@ -28529,12 +32331,12 @@ then3017: call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) %t323 = load { ptr, i64, i64 }, ptr %a320 store { ptr, i64, i64 } %t323, ptr %a325 - store { ptr, i64, i64 } { ptr @.str.1904, i64 6, i64 0 }, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.2117, i64 6, i64 0 }, ptr %a326 call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) %t327 = load { ptr, i64, i64 }, ptr %a324 call void @finch.gen.fail(ptr %t306, %S.ast.Node %t307, { ptr, i64, i64 } %t327) - br label %endif3019 -endif3019: + br label %endif3303 +endif3303: %t328 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 3 %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i32 0, i32 1 %t330 = load i64, ptr %a268 @@ -28542,38 +32344,38 @@ endif3019: %t332 = load i64, ptr %t329 %t333 = load ptr, ptr %t328 store i64 0, ptr %a334 - br label %find.cond3020 -find.cond3020: + br label %find.cond3304 +find.cond3304: %t335 = load i64, ptr %a334 %t336 = icmp slt i64 %t335, %t332 - br i1 %t336, label %find.body3021, label %find.end3024 -find.body3021: + br i1 %t336, label %find.body3305, label %find.end3308 +find.body3305: %t337 = getelementptr inbounds i64, ptr %t333, i64 %t335 %t338 = load i64, ptr %t337 %t339 = icmp eq i64 %t338, %t330 - br i1 %t339, label %find.hit3022, label %find.next3023 -find.hit3022: + br i1 %t339, label %find.hit3306, label %find.next3307 +find.hit3306: store i64 %t335, ptr %a331 - br label %find.end3024 -find.next3023: + br label %find.end3308 +find.next3307: %t340 = add i64 %t335, 1 store i64 %t340, ptr %a334 - br label %find.cond3020 -find.end3024: + br label %find.cond3304 +find.end3308: %t341 = load i64, ptr %a331 %t342 = icmp sge i64 %t341, 0 - br i1 %t342, label %then3025, label %endif3027 -then3025: + br i1 %t342, label %then3309, label %endif3311 +then3309: %t343 = load ptr, ptr %a1 %t344 = load %S.ast.Node, ptr %a278 %t345 = getelementptr inbounds %S.ast.Node, ptr %a221, i32 0, i32 1 %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.1905, i64 16, i64 0 }, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.2118, i64 16, i64 0 }, ptr %a348 store { ptr, i64, i64 } %t346, ptr %a349 call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) %t350 = load { ptr, i64, i64 }, ptr %a347 store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.1906, i64 17, i64 0 }, ptr %a353 + store { ptr, i64, i64 } { ptr @.str.2119, i64 17, i64 0 }, ptr %a353 call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) %t354 = load { ptr, i64, i64 }, ptr %a351 %t355 = load i64, ptr %a268 @@ -28584,12 +32386,12 @@ then3025: call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) %t361 = load { ptr, i64, i64 }, ptr %a358 store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.1907, i64 20, i64 0 }, ptr %a364 + store { ptr, i64, i64 } { ptr @.str.2120, i64 20, i64 0 }, ptr %a364 call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) %t365 = load { ptr, i64, i64 }, ptr %a362 call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t365) - br label %endif3027 -endif3027: + br label %endif3311 +endif3311: %t366 = getelementptr inbounds %S.gen.EnumDef, ptr %a267, i32 0, i32 2 %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 %t368 = getelementptr inbounds %S.ast.Node, ptr %a278, i32 0, i32 1 @@ -28617,20 +32419,20 @@ endif3027: %t384 = load i64, ptr %a268 %t385 = add i64 %t384, 1 store i64 %t385, ptr %a268 - br label %each.step3007 -each.step3007: + br label %each.step3291 +each.step3291: %t386 = load i64, ptr %a270 %t387 = add i64 %t386, 1 store i64 %t387, ptr %a270 - br label %each.cond3005 -each.end3008: + br label %each.cond3289 +each.end3292: %t388 = load ptr, ptr %a1 %t389 = icmp eq ptr %t388, null - br i1 %t389, label %panic3028, label %ok3029 -panic3028: - call void @finch_panic(ptr @.str.1908, i64 1210, ptr @.str.1909) + br i1 %t389, label %panic3312, label %ok3313 +panic3312: + call void @finch_panic(ptr @.str.2121, i64 1334, ptr @.str.2122) unreachable -ok3029: +ok3313: %t390 = getelementptr inbounds %S.gen.Gen, ptr %t388, i32 0, i32 20 %t391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t390, i32 0, i32 1 %t392 = load %S.gen.EnumDef, ptr %a267 @@ -28644,66 +32446,66 @@ ok3029: %t399 = getelementptr inbounds %S.gen.EnumDef, ptr %t398, i64 %t396 store %S.gen.EnumDef %t395, ptr %t399 store i64 %t397, ptr %t391 - br label %for.step2984 -for.step2984: + br label %for.step3268 +for.step3268: %t400 = load i64, ptr %a198 %t401 = add i64 %t400, 1 store i64 %t401, ptr %a198 - br label %for.cond2982 -for.end2985: - br label %for.step2970 -for.step2970: + br label %for.cond3266 +for.end3269: + br label %for.step3254 +for.step3254: %t402 = load i64, ptr %a166 %t403 = add i64 %t402, 1 store i64 %t403, ptr %a166 - br label %for.cond2968 -for.end2971: + br label %for.cond3252 +for.end3255: %t404 = load ptr, ptr %a1 %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3030, label %ok3031 -panic3030: - call void @finch_panic(ptr @.str.1910, i64 1213, ptr @.str.1911) + br i1 %t405, label %panic3314, label %ok3315 +panic3314: + call void @finch_panic(ptr @.str.2123, i64 1337, ptr @.str.2124) unreachable -ok3031: +ok3315: %t406 = getelementptr inbounds %S.gen.Gen, ptr %t404, i32 0, i32 24 %t407 = getelementptr inbounds %S.cimport.CImports, ptr %t406, i32 0, i32 4 %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %t407, i32 0, i32 1 %t409 = load i64, ptr %t408 store i64 0, ptr %a410 - br label %for.cond3032 -for.cond3032: + br label %for.cond3316 +for.cond3316: %t411 = load i64, ptr %a410 %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body3033, label %for.end3035 -for.body3033: + br i1 %t412, label %for.body3317, label %for.end3319 +for.body3317: %t413 = load ptr, ptr %a1 %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3036, label %ok3037 -panic3036: - call void @finch_panic(ptr @.str.1912, i64 1214, ptr @.str.1913) + br i1 %t414, label %panic3320, label %ok3321 +panic3320: + call void @finch_panic(ptr @.str.2125, i64 1338, ptr @.str.2126) unreachable -ok3037: +ok3321: %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 15 %t416 = getelementptr inbounds { ptr, i64, i64 }, ptr %t415, i32 0, i32 1 - %t417 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.1914, i64 1, i64 0 }, 0 + %t417 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2127, i64 1, i64 0 }, 0 %t418 = load ptr, ptr %a1 %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic3038, label %ok3039 -panic3038: - call void @finch_panic(ptr @.str.1915, i64 1214, ptr @.str.1916) + br i1 %t419, label %panic3322, label %ok3323 +panic3322: + call void @finch_panic(ptr @.str.2128, i64 1338, ptr @.str.2129) unreachable -ok3039: +ok3323: %t420 = getelementptr inbounds %S.gen.Gen, ptr %t418, i32 0, i32 24 %t421 = getelementptr inbounds %S.cimport.CImports, ptr %t420, i32 0, i32 4 %t422 = load i64, ptr %a410 %t423 = load { ptr, i64, i64 }, ptr %t421 %t424 = extractvalue { ptr, i64, i64 } %t423, 1 %t425 = icmp uge i64 %t422, %t424 - br i1 %t425, label %range3040, label %inrange3041 -range3040: - call void @finch_panic_index(ptr @.str.1917, i64 1214, i64 %t422, i64 %t424) + br i1 %t425, label %range3324, label %inrange3325 +range3324: + call void @finch_panic_index(ptr @.str.2130, i64 1338, i64 %t422, i64 %t424) unreachable -inrange3041: +inrange3325: %t426 = extractvalue { ptr, i64, i64 } %t423, 0 %t427 = getelementptr inbounds { ptr, i64, i64 }, ptr %t426, i64 %t422 %t428 = load { ptr, i64, i64 }, ptr %t427 @@ -28722,85 +32524,85 @@ inrange3041: %t440 = getelementptr inbounds %S.gen.StructDef, ptr %t439, i64 %t437 store %S.gen.StructDef %t436, ptr %t440 store i64 %t438, ptr %t416 - br label %for.step3034 -for.step3034: + br label %for.step3318 +for.step3318: %t441 = load i64, ptr %a410 %t442 = add i64 %t441, 1 store i64 %t442, ptr %a410 - br label %for.cond3032 -for.end3035: + br label %for.cond3316 +for.end3319: %t443 = load ptr, ptr %a1 %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic3042, label %ok3043 -panic3042: - call void @finch_panic(ptr @.str.1918, i64 1216, ptr @.str.1919) + br i1 %t444, label %panic3326, label %ok3327 +panic3326: + call void @finch_panic(ptr @.str.2131, i64 1340, ptr @.str.2132) unreachable -ok3043: +ok3327: %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 15 %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i32 0, i32 1 %t447 = load i64, ptr %t446 store i64 0, ptr %a448 - br label %for.cond3044 -for.cond3044: + br label %for.cond3328 +for.cond3328: %t449 = load i64, ptr %a448 %t450 = icmp slt i64 %t449, %t447 - br i1 %t450, label %for.body3045, label %for.end3047 -for.body3045: + br i1 %t450, label %for.body3329, label %for.end3331 +for.body3329: %t451 = load ptr, ptr %a1 %t452 = load i64, ptr %a448 call void @finch.gen.resolveStruct(ptr %t451, i64 %t452) - br label %for.step3046 -for.step3046: + br label %for.step3330 +for.step3330: %t453 = load i64, ptr %a448 %t454 = add i64 %t453, 1 store i64 %t454, ptr %a448 - br label %for.cond3044 -for.end3047: + br label %for.cond3328 +for.end3331: %t455 = load ptr, ptr %a1 %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic3048, label %ok3049 -panic3048: - call void @finch_panic(ptr @.str.1920, i64 1219, ptr @.str.1921) + br i1 %t456, label %panic3332, label %ok3333 +panic3332: + call void @finch_panic(ptr @.str.2133, i64 1343, ptr @.str.2134) unreachable -ok3049: +ok3333: %t457 = getelementptr inbounds %S.gen.Gen, ptr %t455, i32 0, i32 0 %t458 = getelementptr inbounds { ptr, i64, i64 }, ptr %t457, i32 0, i32 1 %t459 = load i64, ptr %t458 store i64 0, ptr %a460 - br label %for.cond3050 -for.cond3050: + br label %for.cond3334 +for.cond3334: %t461 = load i64, ptr %a460 %t462 = icmp slt i64 %t461, %t459 - br i1 %t462, label %for.body3051, label %for.end3053 -for.body3051: + br i1 %t462, label %for.body3335, label %for.end3337 +for.body3335: %t463 = load ptr, ptr %a1 %t464 = icmp eq ptr %t463, null - br i1 %t464, label %panic3054, label %ok3055 -panic3054: - call void @finch_panic(ptr @.str.1922, i64 1220, ptr @.str.1923) + br i1 %t464, label %panic3338, label %ok3339 +panic3338: + call void @finch_panic(ptr @.str.2135, i64 1344, ptr @.str.2136) unreachable -ok3055: +ok3339: %t465 = getelementptr inbounds %S.gen.Gen, ptr %t463, i32 0, i32 0 %t466 = load i64, ptr %a460 %t467 = load { ptr, i64, i64 }, ptr %t465 %t468 = extractvalue { ptr, i64, i64 } %t467, 1 %t469 = icmp uge i64 %t466, %t468 - br i1 %t469, label %range3056, label %inrange3057 -range3056: - call void @finch_panic_index(ptr @.str.1924, i64 1220, i64 %t466, i64 %t468) + br i1 %t469, label %range3340, label %inrange3341 +range3340: + call void @finch_panic_index(ptr @.str.2137, i64 1344, i64 %t466, i64 %t468) unreachable -inrange3057: +inrange3341: %t470 = extractvalue { ptr, i64, i64 } %t467, 0 %t471 = getelementptr inbounds %S.ast.Program, ptr %t470, i64 %t466 %t472 = getelementptr inbounds %S.ast.Program, ptr %t471, i32 0, i32 0 %t473 = load { ptr, i64, i64 }, ptr %t472 %t474 = load ptr, ptr %a1 %t475 = icmp eq ptr %t474, null - br i1 %t475, label %panic3058, label %ok3059 -panic3058: - call void @finch_panic(ptr @.str.1925, i64 1220, ptr @.str.1926) + br i1 %t475, label %panic3342, label %ok3343 +panic3342: + call void @finch_panic(ptr @.str.2138, i64 1344, ptr @.str.2139) unreachable -ok3059: +ok3343: %t476 = getelementptr inbounds %S.gen.Gen, ptr %t474, i32 0, i32 13 store { ptr, i64, i64 } %t473, ptr %a477 call void @finch_str_copy(ptr %a478, ptr %a477) @@ -28808,50 +32610,50 @@ ok3059: store { ptr, i64, i64 } %t479, ptr %t476 %t480 = load ptr, ptr %a1 %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic3060, label %ok3061 -panic3060: - call void @finch_panic(ptr @.str.1927, i64 1221, ptr @.str.1928) + br i1 %t481, label %panic3344, label %ok3345 +panic3344: + call void @finch_panic(ptr @.str.2140, i64 1345, ptr @.str.2141) unreachable -ok3061: +ok3345: %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 0 %t483 = load i64, ptr %a460 %t484 = load { ptr, i64, i64 }, ptr %t482 %t485 = extractvalue { ptr, i64, i64 } %t484, 1 %t486 = icmp uge i64 %t483, %t485 - br i1 %t486, label %range3062, label %inrange3063 -range3062: - call void @finch_panic_index(ptr @.str.1929, i64 1221, i64 %t483, i64 %t485) + br i1 %t486, label %range3346, label %inrange3347 +range3346: + call void @finch_panic_index(ptr @.str.2142, i64 1345, i64 %t483, i64 %t485) unreachable -inrange3063: +inrange3347: %t487 = extractvalue { ptr, i64, i64 } %t484, 0 %t488 = getelementptr inbounds %S.ast.Program, ptr %t487, i64 %t483 %t489 = getelementptr inbounds %S.ast.Program, ptr %t488, i32 0, i32 8 %t490 = getelementptr inbounds { ptr, i64, i64 }, ptr %t489, i32 0, i32 1 %t491 = load i64, ptr %t490 store i64 0, ptr %a492 - br label %for.cond3064 -for.cond3064: + br label %for.cond3348 +for.cond3348: %t493 = load i64, ptr %a492 %t494 = icmp slt i64 %t493, %t491 - br i1 %t494, label %for.body3065, label %for.end3067 -for.body3065: + br i1 %t494, label %for.body3349, label %for.end3351 +for.body3349: %t495 = load ptr, ptr %a1 %t496 = icmp eq ptr %t495, null - br i1 %t496, label %panic3068, label %ok3069 -panic3068: - call void @finch_panic(ptr @.str.1930, i64 1222, ptr @.str.1931) + br i1 %t496, label %panic3352, label %ok3353 +panic3352: + call void @finch_panic(ptr @.str.2143, i64 1346, ptr @.str.2144) unreachable -ok3069: +ok3353: %t497 = getelementptr inbounds %S.gen.Gen, ptr %t495, i32 0, i32 0 %t498 = load i64, ptr %a460 %t499 = load { ptr, i64, i64 }, ptr %t497 %t500 = extractvalue { ptr, i64, i64 } %t499, 1 %t501 = icmp uge i64 %t498, %t500 - br i1 %t501, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1932, i64 1222, i64 %t498, i64 %t500) + br i1 %t501, label %range3354, label %inrange3355 +range3354: + call void @finch_panic_index(ptr @.str.2145, i64 1346, i64 %t498, i64 %t500) unreachable -inrange3071: +inrange3355: %t502 = extractvalue { ptr, i64, i64 } %t499, 0 %t503 = getelementptr inbounds %S.ast.Program, ptr %t502, i64 %t498 %t504 = getelementptr inbounds %S.ast.Program, ptr %t503, i32 0, i32 8 @@ -28859,11 +32661,11 @@ inrange3071: %t506 = load { ptr, i64, i64 }, ptr %t504 %t507 = extractvalue { ptr, i64, i64 } %t506, 1 %t508 = icmp uge i64 %t505, %t507 - br i1 %t508, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1933, i64 1222, i64 %t505, i64 %t507) + br i1 %t508, label %range3356, label %inrange3357 +range3356: + call void @finch_panic_index(ptr @.str.2146, i64 1346, i64 %t505, i64 %t507) unreachable -inrange3073: +inrange3357: %t509 = extractvalue { ptr, i64, i64 } %t506, 0 %t510 = getelementptr inbounds %S.ast.Node, ptr %t509, i64 %t505 %t511 = load %S.ast.Node, ptr %t510 @@ -28875,16 +32677,16 @@ inrange3073: %t517 = getelementptr inbounds { ptr, i64, i64 }, ptr %t516, i32 0, i32 1 %t518 = load i64, ptr %t517 %t519 = icmp sgt i64 %t518, 0 - br i1 %t519, label %then3074, label %endif3076 -then3074: + br i1 %t519, label %then3358, label %endif3360 +then3358: %t520 = load ptr, ptr %a1 %t521 = load ptr, ptr %a1 %t522 = icmp eq ptr %t521, null - br i1 %t522, label %panic3077, label %ok3078 -panic3077: - call void @finch_panic(ptr @.str.1934, i64 1225, ptr @.str.1935) + br i1 %t522, label %panic3361, label %ok3362 +panic3361: + call void @finch_panic(ptr @.str.2147, i64 1349, ptr @.str.2148) unreachable -ok3078: +ok3362: %t523 = getelementptr inbounds %S.gen.Gen, ptr %t521, i32 0, i32 13 %t524 = load { ptr, i64, i64 }, ptr %t523 %t525 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -28893,83 +32695,83 @@ ok3078: %t528 = load { ptr, i64, i64 }, ptr %t527 %t529 = call i64 @finch.gen.findTemplate(ptr %t520, { ptr, i64, i64 } %t524, { ptr, i64, i64 } %t526, { ptr, i64, i64 } %t528, i1 false) %t530 = icmp sge i64 %t529, 0 - br i1 %t530, label %then3079, label %endif3081 -then3079: + br i1 %t530, label %then3363, label %endif3365 +then3363: %t531 = load ptr, ptr %a1 %t532 = load %S.ast.Node, ptr %a515 %t533 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 %t534 = load { ptr, i64, i64 }, ptr %t533 - store { ptr, i64, i64 } { ptr @.str.1936, i64 10, i64 0 }, ptr %a536 + store { ptr, i64, i64 } { ptr @.str.2149, i64 10, i64 0 }, ptr %a536 store { ptr, i64, i64 } %t534, ptr %a537 call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537) %t538 = load { ptr, i64, i64 }, ptr %a535 store { ptr, i64, i64 } %t538, ptr %a540 - store { ptr, i64, i64 } { ptr @.str.1937, i64 18, i64 0 }, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.2150, i64 18, i64 0 }, ptr %a541 call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541) %t542 = load { ptr, i64, i64 }, ptr %a539 call void @finch.gen.fail(ptr %t531, %S.ast.Node %t532, { ptr, i64, i64 } %t542) - br label %endif3081 -endif3081: + br label %endif3365 +endif3365: %t543 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 %t545 = load i64, ptr %t544 %t546 = icmp sgt i64 %t545, 0 - br label %logic.from3082 -logic.from3082: - br i1 %t546, label %logic.rhs3083, label %logic.end3084 -logic.rhs3083: + br label %logic.from3366 +logic.from3366: + br i1 %t546, label %logic.rhs3367, label %logic.end3368 +logic.rhs3367: %t547 = load ptr, ptr %a1 %t548 = load ptr, ptr %a1 %t549 = icmp eq ptr %t548, null - br i1 %t549, label %panic3085, label %ok3086 -panic3085: - call void @finch_panic(ptr @.str.1938, i64 1228, ptr @.str.1939) + br i1 %t549, label %panic3369, label %ok3370 +panic3369: + call void @finch_panic(ptr @.str.2151, i64 1352, ptr @.str.2152) unreachable -ok3086: +ok3370: %t550 = getelementptr inbounds %S.gen.Gen, ptr %t548, i32 0, i32 13 %t551 = load { ptr, i64, i64 }, ptr %t550 %t552 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t553 = load { ptr, i64, i64 }, ptr %t552 - %t554 = call i64 @finch.gen.findTemplate(ptr %t547, { ptr, i64, i64 } %t551, { ptr, i64, i64 } %t553, { ptr, i64, i64 } { ptr @.str.1940, i64 0, i64 0 }, i1 true) + %t554 = call i64 @finch.gen.findTemplate(ptr %t547, { ptr, i64, i64 } %t551, { ptr, i64, i64 } %t553, { ptr, i64, i64 } { ptr @.str.2153, i64 0, i64 0 }, i1 true) %t555 = icmp slt i64 %t554, 0 - br label %logic.rend3087 -logic.rend3087: - br label %logic.end3084 -logic.end3084: - %t556 = phi i1 [ false, %logic.from3082 ], [ %t555, %logic.rend3087 ] - br i1 %t556, label %then3088, label %endif3090 -then3088: + br label %logic.rend3371 +logic.rend3371: + br label %logic.end3368 +logic.end3368: + %t556 = phi i1 [ false, %logic.from3366 ], [ %t555, %logic.rend3371 ] + br i1 %t556, label %then3372, label %endif3374 +then3372: %t557 = load ptr, ptr %a1 %t558 = load %S.ast.Node, ptr %a515 %t559 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t560 = load { ptr, i64, i64 }, ptr %t559 - store { ptr, i64, i64 } { ptr @.str.1941, i64 34, i64 0 }, ptr %a562 + store { ptr, i64, i64 } { ptr @.str.2154, i64 34, i64 0 }, ptr %a562 store { ptr, i64, i64 } %t560, ptr %a563 call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) %t564 = load { ptr, i64, i64 }, ptr %a561 store { ptr, i64, i64 } %t564, ptr %a566 - store { ptr, i64, i64 } { ptr @.str.1942, i64 53, i64 0 }, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.2155, i64 53, i64 0 }, ptr %a567 call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) %t568 = load { ptr, i64, i64 }, ptr %a565 call void @finch.gen.fail(ptr %t557, %S.ast.Node %t558, { ptr, i64, i64 } %t568) - br label %endif3090 -endif3090: + br label %endif3374 +endif3374: %t569 = load ptr, ptr %a1 %t570 = icmp eq ptr %t569, null - br i1 %t570, label %panic3091, label %ok3092 -panic3091: - call void @finch_panic(ptr @.str.1943, i64 1231, ptr @.str.1944) + br i1 %t570, label %panic3375, label %ok3376 +panic3375: + call void @finch_panic(ptr @.str.2156, i64 1355, ptr @.str.2157) unreachable -ok3092: +ok3376: %t571 = getelementptr inbounds %S.gen.Gen, ptr %t569, i32 0, i32 16 %t572 = getelementptr inbounds { ptr, i64, i64 }, ptr %t571, i32 0, i32 1 %t573 = load ptr, ptr %a1 %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3093, label %ok3094 -panic3093: - call void @finch_panic(ptr @.str.1945, i64 1231, ptr @.str.1946) + br i1 %t574, label %panic3377, label %ok3378 +panic3377: + call void @finch_panic(ptr @.str.2158, i64 1355, ptr @.str.2159) unreachable -ok3094: +ok3378: %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 13 %t576 = load { ptr, i64, i64 }, ptr %t575 store { ptr, i64, i64 } %t576, ptr %a577 @@ -29005,15 +32807,15 @@ ok3094: %t606 = getelementptr inbounds %S.gen.Template, ptr %t605, i64 %t603 store %S.gen.Template %t602, ptr %t606 store i64 %t604, ptr %t572 - br label %for.step3066 -endif3076: + br label %for.step3350 +endif3360: %t607 = load ptr, ptr %a1 %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic3095, label %ok3096 -panic3095: - call void @finch_panic(ptr @.str.1947, i64 1234, ptr @.str.1948) + br i1 %t608, label %panic3379, label %ok3380 +panic3379: + call void @finch_panic(ptr @.str.2160, i64 1358, ptr @.str.2161) unreachable -ok3096: +ok3380: %t609 = getelementptr inbounds %S.gen.Gen, ptr %t607, i32 0, i32 13 %t610 = load { ptr, i64, i64 }, ptr %t609 store { ptr, i64, i64 } %t610, ptr %a611 @@ -29025,31 +32827,31 @@ ok3096: %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i32 0, i32 1 %t618 = load i64, ptr %t617 %t619 = icmp sgt i64 %t618, 0 - br label %logic.from3097 -logic.from3097: - br i1 %t619, label %logic.rhs3098, label %logic.end3099 -logic.rhs3098: + br label %logic.from3381 +logic.from3381: + br i1 %t619, label %logic.rhs3382, label %logic.end3383 +logic.rhs3382: %t620 = load ptr, ptr %a1 %t621 = load ptr, ptr %a1 %t622 = icmp eq ptr %t621, null - br i1 %t622, label %panic3100, label %ok3101 -panic3100: - call void @finch_panic(ptr @.str.1949, i64 1236, ptr @.str.1950) + br i1 %t622, label %panic3384, label %ok3385 +panic3384: + call void @finch_panic(ptr @.str.2162, i64 1360, ptr @.str.2163) unreachable -ok3101: +ok3385: %t623 = getelementptr inbounds %S.gen.Gen, ptr %t621, i32 0, i32 13 %t624 = load { ptr, i64, i64 }, ptr %t623 %t625 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t626 = load { ptr, i64, i64 }, ptr %t625 %t627 = call i64 @finch.gen.findEnum(ptr %t620, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) %t628 = icmp sge i64 %t627, 0 - br label %logic.rend3102 -logic.rend3102: - br label %logic.end3099 -logic.end3099: - %t629 = phi i1 [ false, %logic.from3097 ], [ %t628, %logic.rend3102 ] - br i1 %t629, label %then3103, label %else3104 -then3103: + br label %logic.rend3386 +logic.rend3386: + br label %logic.end3383 +logic.end3383: + %t629 = phi i1 [ false, %logic.from3381 ], [ %t628, %logic.rend3386 ] + br i1 %t629, label %then3387, label %else3388 +then3387: store i1 true, ptr %a615 %t630 = load ptr, ptr %a1 %t631 = load { ptr, i64, i64 }, ptr %a614 @@ -29059,18 +32861,18 @@ then3103: %t635 = load { ptr, i64, i64 }, ptr %t634 %t636 = call i64 @finch.gen.findMethod(ptr %t630, { ptr, i64, i64 } %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635) %t637 = icmp sge i64 %t636, 0 - br i1 %t637, label %then3106, label %endif3108 -then3106: + br i1 %t637, label %then3390, label %endif3392 +then3390: %t638 = load ptr, ptr %a1 %t639 = load %S.ast.Node, ptr %a515 %t640 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t641 = load { ptr, i64, i64 }, ptr %t640 - store { ptr, i64, i64 } { ptr @.str.1951, i64 11, i64 0 }, ptr %a643 + store { ptr, i64, i64 } { ptr @.str.2164, i64 11, i64 0 }, ptr %a643 store { ptr, i64, i64 } %t641, ptr %a644 call void @finch_str_concat(ptr %a642, ptr %a643, ptr %a644) %t645 = load { ptr, i64, i64 }, ptr %a642 store { ptr, i64, i64 } %t645, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.1952, i64 1, i64 0 }, ptr %a648 + store { ptr, i64, i64 } { ptr @.str.2165, i64 1, i64 0 }, ptr %a648 call void @finch_str_concat(ptr %a646, ptr %a647, ptr %a648) %t649 = load { ptr, i64, i64 }, ptr %a646 %t650 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -29080,28 +32882,28 @@ then3106: call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) %t655 = load { ptr, i64, i64 }, ptr %a652 store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.1953, i64 17, i64 0 }, ptr %a658 + store { ptr, i64, i64 } { ptr @.str.2166, i64 17, i64 0 }, ptr %a658 call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) %t659 = load { ptr, i64, i64 }, ptr %a656 call void @finch.gen.fail(ptr %t638, %S.ast.Node %t639, { ptr, i64, i64 } %t659) - br label %endif3108 -endif3108: - br label %endif3105 -else3104: + br label %endif3392 +endif3392: + br label %endif3389 +else3388: %t660 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 %t662 = load i64, ptr %t661 %t663 = icmp sgt i64 %t662, 0 - br i1 %t663, label %then3109, label %else3110 -then3109: + br i1 %t663, label %then3393, label %else3394 +then3393: %t664 = load ptr, ptr %a1 %t665 = load ptr, ptr %a1 %t666 = icmp eq ptr %t665, null - br i1 %t666, label %panic3112, label %ok3113 -panic3112: - call void @finch_panic(ptr @.str.1954, i64 1242, ptr @.str.1955) + br i1 %t666, label %panic3396, label %ok3397 +panic3396: + call void @finch_panic(ptr @.str.2167, i64 1366, ptr @.str.2168) unreachable -ok3113: +ok3397: %t667 = getelementptr inbounds %S.gen.Gen, ptr %t665, i32 0, i32 13 %t668 = load { ptr, i64, i64 }, ptr %t667 %t669 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 @@ -29110,49 +32912,49 @@ ok3113: store i64 %t671, ptr %a672 %t673 = load i64, ptr %a672 %t674 = icmp slt i64 %t673, 0 - br label %logic.from3114 -logic.from3114: - br i1 %t674, label %logic.rhs3115, label %logic.end3116 -logic.rhs3115: + br label %logic.from3398 +logic.from3398: + br i1 %t674, label %logic.rhs3399, label %logic.end3400 +logic.rhs3399: %t675 = load ptr, ptr %a1 %t676 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t677 = load { ptr, i64, i64 }, ptr %t676 - %t678 = call i64 @finch.gen.findStruct(ptr %t675, { ptr, i64, i64 } { ptr @.str.1956, i64 1, i64 0 }, { ptr, i64, i64 } %t677) + %t678 = call i64 @finch.gen.findStruct(ptr %t675, { ptr, i64, i64 } { ptr @.str.2169, i64 1, i64 0 }, { ptr, i64, i64 } %t677) %t679 = icmp sge i64 %t678, 0 - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3116 -logic.end3116: - %t680 = phi i1 [ false, %logic.from3114 ], [ %t679, %logic.rend3117 ] - br i1 %t680, label %then3118, label %endif3120 -then3118: + br label %logic.rend3401 +logic.rend3401: + br label %logic.end3400 +logic.end3400: + %t680 = phi i1 [ false, %logic.from3398 ], [ %t679, %logic.rend3401 ] + br i1 %t680, label %then3402, label %endif3404 +then3402: %t681 = load ptr, ptr %a1 %t682 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t683 = load { ptr, i64, i64 }, ptr %t682 - %t684 = call i64 @finch.gen.findStruct(ptr %t681, { ptr, i64, i64 } { ptr @.str.1957, i64 1, i64 0 }, { ptr, i64, i64 } %t683) + %t684 = call i64 @finch.gen.findStruct(ptr %t681, { ptr, i64, i64 } { ptr @.str.2170, i64 1, i64 0 }, { ptr, i64, i64 } %t683) store i64 %t684, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.1958, i64 1, i64 0 }, ptr %a614 - br label %endif3120 -endif3120: + store { ptr, i64, i64 } { ptr @.str.2171, i64 1, i64 0 }, ptr %a614 + br label %endif3404 +endif3404: %t685 = load i64, ptr %a672 %t686 = icmp slt i64 %t685, 0 - br i1 %t686, label %then3121, label %endif3123 -then3121: + br i1 %t686, label %then3405, label %endif3407 +then3405: %t687 = load ptr, ptr %a1 %t688 = load %S.ast.Node, ptr %a515 %t689 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t690 = load { ptr, i64, i64 }, ptr %t689 - store { ptr, i64, i64 } { ptr @.str.1959, i64 26, i64 0 }, ptr %a692 + store { ptr, i64, i64 } { ptr @.str.2172, i64 26, i64 0 }, ptr %a692 store { ptr, i64, i64 } %t690, ptr %a693 call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) %t694 = load { ptr, i64, i64 }, ptr %a691 store { ptr, i64, i64 } %t694, ptr %a696 - store { ptr, i64, i64 } { ptr @.str.1960, i64 76, i64 0 }, ptr %a697 + store { ptr, i64, i64 } { ptr @.str.2173, i64 76, i64 0 }, ptr %a697 call void @finch_str_concat(ptr %a695, ptr %a696, ptr %a697) %t698 = load { ptr, i64, i64 }, ptr %a695 call void @finch.gen.fail(ptr %t687, %S.ast.Node %t688, { ptr, i64, i64 } %t698) - br label %endif3123 -endif3123: + br label %endif3407 +endif3407: %t699 = load ptr, ptr %a1 %t700 = load { ptr, i64, i64 }, ptr %a614 %t701 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 @@ -29161,18 +32963,18 @@ endif3123: %t704 = load { ptr, i64, i64 }, ptr %t703 %t705 = call i64 @finch.gen.findMethod(ptr %t699, { ptr, i64, i64 } %t700, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t704) %t706 = icmp sge i64 %t705, 0 - br i1 %t706, label %then3124, label %endif3126 -then3124: + br i1 %t706, label %then3408, label %endif3410 +then3408: %t707 = load ptr, ptr %a1 %t708 = load %S.ast.Node, ptr %a515 %t709 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t710 = load { ptr, i64, i64 }, ptr %t709 - store { ptr, i64, i64 } { ptr @.str.1961, i64 11, i64 0 }, ptr %a712 + store { ptr, i64, i64 } { ptr @.str.2174, i64 11, i64 0 }, ptr %a712 store { ptr, i64, i64 } %t710, ptr %a713 call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) %t714 = load { ptr, i64, i64 }, ptr %a711 store { ptr, i64, i64 } %t714, ptr %a716 - store { ptr, i64, i64 } { ptr @.str.1962, i64 1, i64 0 }, ptr %a717 + store { ptr, i64, i64 } { ptr @.str.2175, i64 1, i64 0 }, ptr %a717 call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717) %t718 = load { ptr, i64, i64 }, ptr %a715 %t719 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -29182,29 +32984,29 @@ then3124: call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) %t724 = load { ptr, i64, i64 }, ptr %a721 store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.1963, i64 17, i64 0 }, ptr %a727 + store { ptr, i64, i64 } { ptr @.str.2176, i64 17, i64 0 }, ptr %a727 call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) %t728 = load { ptr, i64, i64 }, ptr %a725 call void @finch.gen.fail(ptr %t707, %S.ast.Node %t708, { ptr, i64, i64 } %t728) - br label %endif3126 -endif3126: + br label %endif3410 +endif3410: %t729 = load ptr, ptr %a1 %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic3127, label %ok3128 -panic3127: - call void @finch_panic(ptr @.str.1964, i64 1253, ptr @.str.1965) + br i1 %t730, label %panic3411, label %ok3412 +panic3411: + call void @finch_panic(ptr @.str.2177, i64 1377, ptr @.str.2178) unreachable -ok3128: +ok3412: %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 15 %t732 = load i64, ptr %a672 %t733 = load { ptr, i64, i64 }, ptr %t731 %t734 = extractvalue { ptr, i64, i64 } %t733, 1 %t735 = icmp uge i64 %t732, %t734 - br i1 %t735, label %range3129, label %inrange3130 -range3129: - call void @finch_panic_index(ptr @.str.1966, i64 1253, i64 %t732, i64 %t734) + br i1 %t735, label %range3413, label %inrange3414 +range3413: + call void @finch_panic_index(ptr @.str.2179, i64 1377, i64 %t732, i64 %t734) unreachable -inrange3130: +inrange3414: %t736 = extractvalue { ptr, i64, i64 } %t733, 0 %t737 = getelementptr inbounds %S.gen.StructDef, ptr %t736, i64 %t732 %t738 = getelementptr inbounds %S.gen.StructDef, ptr %t737, i32 0, i32 11 @@ -29215,41 +33017,41 @@ inrange3130: %t743 = load i64, ptr %t739 %t744 = load ptr, ptr %t738 store i64 0, ptr %a745 - br label %find.cond3131 -find.cond3131: + br label %find.cond3415 +find.cond3415: %t746 = load i64, ptr %a745 %t747 = icmp slt i64 %t746, %t743 - br i1 %t747, label %find.body3132, label %find.end3135 -find.body3132: + br i1 %t747, label %find.body3416, label %find.end3419 +find.body3416: %t748 = getelementptr inbounds { ptr, i64, i64 }, ptr %t744, i64 %t746 %t749 = load { ptr, i64, i64 }, ptr %t748 store { ptr, i64, i64 } %t749, ptr %a750 store { ptr, i64, i64 } %t741, ptr %a751 %t752 = call i32 @finch_str_eq(ptr %a750, ptr %a751) %t753 = icmp ne i32 %t752, 0 - br i1 %t753, label %find.hit3133, label %find.next3134 -find.hit3133: + br i1 %t753, label %find.hit3417, label %find.next3418 +find.hit3417: store i64 %t746, ptr %a742 - br label %find.end3135 -find.next3134: + br label %find.end3419 +find.next3418: %t754 = add i64 %t746, 1 store i64 %t754, ptr %a745 - br label %find.cond3131 -find.end3135: + br label %find.cond3415 +find.end3419: %t755 = load i64, ptr %a742 %t756 = icmp sge i64 %t755, 0 - br i1 %t756, label %then3136, label %endif3138 -then3136: + br i1 %t756, label %then3420, label %endif3422 +then3420: %t757 = load ptr, ptr %a1 %t758 = load %S.ast.Node, ptr %a515 %t759 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t760 = load { ptr, i64, i64 }, ptr %t759 - store { ptr, i64, i64 } { ptr @.str.1967, i64 11, i64 0 }, ptr %a762 + store { ptr, i64, i64 } { ptr @.str.2180, i64 11, i64 0 }, ptr %a762 store { ptr, i64, i64 } %t760, ptr %a763 call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763) %t764 = load { ptr, i64, i64 }, ptr %a761 store { ptr, i64, i64 } %t764, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.1968, i64 28, i64 0 }, ptr %a767 + store { ptr, i64, i64 } { ptr @.str.2181, i64 28, i64 0 }, ptr %a767 call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767) %t768 = load { ptr, i64, i64 }, ptr %a765 %t769 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -29259,76 +33061,76 @@ then3136: call void @finch_str_concat(ptr %a771, ptr %a772, ptr %a773) %t774 = load { ptr, i64, i64 }, ptr %a771 store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1969, i64 1, i64 0 }, ptr %a777 + store { ptr, i64, i64 } { ptr @.str.2182, i64 1, i64 0 }, ptr %a777 call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) %t778 = load { ptr, i64, i64 }, ptr %a775 call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t778) - br label %endif3138 -endif3138: - br label %endif3111 -else3110: + br label %endif3422 +endif3422: + br label %endif3395 +else3394: %t779 = load ptr, ptr %a1 %t780 = load ptr, ptr %a1 %t781 = icmp eq ptr %t780, null - br i1 %t781, label %panic3139, label %ok3140 -panic3139: - call void @finch_panic(ptr @.str.1970, i64 1257, ptr @.str.1971) + br i1 %t781, label %panic3423, label %ok3424 +panic3423: + call void @finch_panic(ptr @.str.2183, i64 1381, ptr @.str.2184) unreachable -ok3140: +ok3424: %t782 = getelementptr inbounds %S.gen.Gen, ptr %t780, i32 0, i32 13 %t783 = load { ptr, i64, i64 }, ptr %t782 %t784 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 %t785 = load { ptr, i64, i64 }, ptr %t784 %t786 = call i64 @finch.gen.findFn(ptr %t779, { ptr, i64, i64 } %t783, { ptr, i64, i64 } %t785) %t787 = icmp sge i64 %t786, 0 - br i1 %t787, label %then3141, label %endif3143 -then3141: + br i1 %t787, label %then3425, label %endif3427 +then3425: %t788 = load ptr, ptr %a1 %t789 = load %S.ast.Node, ptr %a515 %t790 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } { ptr @.str.1972, i64 10, i64 0 }, ptr %a793 + store { ptr, i64, i64 } { ptr @.str.2185, i64 10, i64 0 }, ptr %a793 store { ptr, i64, i64 } %t791, ptr %a794 call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) %t795 = load { ptr, i64, i64 }, ptr %a792 store { ptr, i64, i64 } %t795, ptr %a797 - store { ptr, i64, i64 } { ptr @.str.1973, i64 18, i64 0 }, ptr %a798 + store { ptr, i64, i64 } { ptr @.str.2186, i64 18, i64 0 }, ptr %a798 call void @finch_str_concat(ptr %a796, ptr %a797, ptr %a798) %t799 = load { ptr, i64, i64 }, ptr %a796 call void @finch.gen.fail(ptr %t788, %S.ast.Node %t789, { ptr, i64, i64 } %t799) - br label %endif3143 -endif3143: + br label %endif3427 +endif3427: %t800 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 %t801 = load { ptr, i64, i64 }, ptr %t800 %t802 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t801) - br i1 %t802, label %then3144, label %endif3146 -then3144: + br i1 %t802, label %then3428, label %endif3430 +then3428: %t803 = load ptr, ptr %a1 %t804 = load %S.ast.Node, ptr %a515 %t805 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }, ptr %a808 + store { ptr, i64, i64 } { ptr @.str.2187, i64 1, i64 0 }, ptr %a808 store { ptr, i64, i64 } %t806, ptr %a809 call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) %t810 = load { ptr, i64, i64 }, ptr %a807 store { ptr, i64, i64 } %t810, ptr %a812 - store { ptr, i64, i64 } { ptr @.str.1975, i64 43, i64 0 }, ptr %a813 + store { ptr, i64, i64 } { ptr @.str.2188, i64 43, i64 0 }, ptr %a813 call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) %t814 = load { ptr, i64, i64 }, ptr %a811 call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t814) - br label %endif3146 -endif3146: - br label %endif3111 -endif3111: - br label %endif3105 -endif3105: + br label %endif3430 +endif3430: + br label %endif3395 +endif3395: + br label %endif3389 +endif3389: %t815 = load ptr, ptr %a1 %t816 = icmp eq ptr %t815, null - br i1 %t816, label %panic3147, label %ok3148 -panic3147: - call void @finch_panic(ptr @.str.1976, i64 1264, ptr @.str.1977) + br i1 %t816, label %panic3431, label %ok3432 +panic3431: + call void @finch_panic(ptr @.str.2189, i64 1388, ptr @.str.2190) unreachable -ok3148: +ok3432: %t817 = getelementptr inbounds %S.gen.Gen, ptr %t815, i32 0, i32 13 %t818 = load { ptr, i64, i64 }, ptr %t817 store { ptr, i64, i64 } %t818, ptr %a819 @@ -29367,20 +33169,20 @@ ok3148: store %S.gen.FnSig %t851, ptr %a852 %t853 = load ptr, ptr %a1 %t854 = icmp eq ptr %t853, null - br i1 %t854, label %panic3149, label %ok3150 -panic3149: - call void @finch_panic(ptr @.str.1979, i64 1265, ptr @.str.1980) + br i1 %t854, label %panic3433, label %ok3434 +panic3433: + call void @finch_panic(ptr @.str.2192, i64 1389, ptr @.str.2193) unreachable -ok3150: +ok3434: %t855 = getelementptr inbounds %S.gen.Gen, ptr %t853, i32 0, i32 13 %t856 = load { ptr, i64, i64 }, ptr %t855 %t857 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t856) - store { ptr, i64, i64 } { ptr @.str.1978, i64 7, i64 0 }, ptr %a859 + store { ptr, i64, i64 } { ptr @.str.2191, i64 7, i64 0 }, ptr %a859 store { ptr, i64, i64 } %t857, ptr %a860 call void @finch_str_concat(ptr %a858, ptr %a859, ptr %a860) %t861 = load { ptr, i64, i64 }, ptr %a858 store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.1981, i64 1, i64 0 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.2194, i64 1, i64 0 }, ptr %a864 call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) %t865 = load { ptr, i64, i64 }, ptr %a862 %t866 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -29395,24 +33197,24 @@ ok3150: %t874 = getelementptr inbounds { ptr, i64, i64 }, ptr %t873, i32 0, i32 1 %t875 = load i64, ptr %t874 %t876 = icmp sgt i64 %t875, 0 - br i1 %t876, label %then3151, label %endif3153 -then3151: + br i1 %t876, label %then3435, label %endif3437 +then3435: %t877 = load ptr, ptr %a1 %t878 = icmp eq ptr %t877, null - br i1 %t878, label %panic3154, label %ok3155 -panic3154: - call void @finch_panic(ptr @.str.1983, i64 1267, ptr @.str.1984) + br i1 %t878, label %panic3438, label %ok3439 +panic3438: + call void @finch_panic(ptr @.str.2196, i64 1391, ptr @.str.2197) unreachable -ok3155: +ok3439: %t879 = getelementptr inbounds %S.gen.Gen, ptr %t877, i32 0, i32 13 %t880 = load { ptr, i64, i64 }, ptr %t879 %t881 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t880) - store { ptr, i64, i64 } { ptr @.str.1982, i64 7, i64 0 }, ptr %a883 + store { ptr, i64, i64 } { ptr @.str.2195, i64 7, i64 0 }, ptr %a883 store { ptr, i64, i64 } %t881, ptr %a884 call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) %t885 = load { ptr, i64, i64 }, ptr %a882 store { ptr, i64, i64 } %t885, ptr %a887 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a888 + store { ptr, i64, i64 } { ptr @.str.2198, i64 1, i64 0 }, ptr %a888 call void @finch_str_concat(ptr %a886, ptr %a887, ptr %a888) %t889 = load { ptr, i64, i64 }, ptr %a886 %t890 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 @@ -29422,7 +33224,7 @@ ok3155: call void @finch_str_concat(ptr %a892, ptr %a893, ptr %a894) %t895 = load { ptr, i64, i64 }, ptr %a892 store { ptr, i64, i64 } %t895, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.1986, i64 1, i64 0 }, ptr %a898 + store { ptr, i64, i64 } { ptr @.str.2199, i64 1, i64 0 }, ptr %a898 call void @finch_str_concat(ptr %a896, ptr %a897, ptr %a898) %t899 = load { ptr, i64, i64 }, ptr %a896 %t900 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 1 @@ -29433,8 +33235,8 @@ ok3155: %t905 = load { ptr, i64, i64 }, ptr %a902 %t906 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 11 store { ptr, i64, i64 } %t905, ptr %t906 - br label %endif3153 -endif3153: + br label %endif3437 +endif3437: %t907 = load ptr, ptr %a1 %t908 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 5 %t909 = load %S.ast.Type, ptr %t908 @@ -29447,72 +33249,72 @@ endif3153: %t915 = load i64, ptr %t914 %t916 = sub i64 %t915, 1 store i64 0, ptr %a917 - br label %for.cond3156 -for.cond3156: + br label %for.cond3440 +for.cond3440: %t918 = load i64, ptr %a917 %t919 = icmp slt i64 %t918, %t916 - br i1 %t919, label %for.body3157, label %for.end3159 -for.body3157: + br i1 %t919, label %for.body3441, label %for.end3443 +for.body3441: %t920 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 %t921 = load i64, ptr %a917 %t922 = load { ptr, i64, i64 }, ptr %t920 %t923 = extractvalue { ptr, i64, i64 } %t922, 1 %t924 = icmp uge i64 %t921, %t923 - br i1 %t924, label %range3160, label %inrange3161 -range3160: - call void @finch_panic_index(ptr @.str.1987, i64 1271, i64 %t921, i64 %t923) + br i1 %t924, label %range3444, label %inrange3445 +range3444: + call void @finch_panic_index(ptr @.str.2200, i64 1395, i64 %t921, i64 %t923) unreachable -inrange3161: +inrange3445: %t925 = extractvalue { ptr, i64, i64 } %t922, 0 %t926 = getelementptr inbounds %S.ast.Node, ptr %t925, i64 %t921 %t927 = getelementptr inbounds %S.ast.Node, ptr %t926, i32 0, i32 1 %t928 = load { ptr, i64, i64 }, ptr %t927 store { ptr, i64, i64 } %t928, ptr %a929 - store { ptr, i64, i64 } { ptr @.str.1988, i64 4, i64 0 }, ptr %a930 + store { ptr, i64, i64 } { ptr @.str.2201, i64 4, i64 0 }, ptr %a930 %t931 = call i32 @finch_str_eq(ptr %a929, ptr %a930) %t932 = icmp ne i32 %t931, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t932, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: + br label %logic.from3446 +logic.from3446: + br i1 %t932, label %logic.rhs3447, label %logic.end3448 +logic.rhs3447: %t933 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t934 = getelementptr inbounds { ptr, i64, i64 }, ptr %t933, i32 0, i32 1 %t935 = load i64, ptr %t934 %t936 = icmp sgt i64 %t935, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t937 = phi i1 [ false, %logic.from3162 ], [ %t936, %logic.rend3165 ] - br i1 %t937, label %then3166, label %endif3168 -then3166: + br label %logic.rend3449 +logic.rend3449: + br label %logic.end3448 +logic.end3448: + %t937 = phi i1 [ false, %logic.from3446 ], [ %t936, %logic.rend3449 ] + br i1 %t937, label %then3450, label %endif3452 +then3450: %t938 = load ptr, ptr %a1 %t939 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 9 %t940 = load i64, ptr %a917 %t941 = load { ptr, i64, i64 }, ptr %t939 %t942 = extractvalue { ptr, i64, i64 } %t941, 1 %t943 = icmp uge i64 %t940, %t942 - br i1 %t943, label %range3169, label %inrange3170 -range3169: - call void @finch_panic_index(ptr @.str.1989, i64 1272, i64 %t940, i64 %t942) + br i1 %t943, label %range3453, label %inrange3454 +range3453: + call void @finch_panic_index(ptr @.str.2202, i64 1396, i64 %t940, i64 %t942) unreachable -inrange3170: +inrange3454: %t944 = extractvalue { ptr, i64, i64 } %t941, 0 %t945 = getelementptr inbounds %S.ast.Node, ptr %t944, i64 %t940 %t946 = load %S.ast.Node, ptr %t945 %t947 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 2 %t948 = load { ptr, i64, i64 }, ptr %t947 - store { ptr, i64, i64 } { ptr @.str.1990, i64 22, i64 0 }, ptr %a950 + store { ptr, i64, i64 } { ptr @.str.2203, i64 22, i64 0 }, ptr %a950 store { ptr, i64, i64 } %t948, ptr %a951 call void @finch_str_concat(ptr %a949, ptr %a950, ptr %a951) %t952 = load { ptr, i64, i64 }, ptr %a949 store { ptr, i64, i64 } %t952, ptr %a954 - store { ptr, i64, i64 } { ptr @.str.1991, i64 24, i64 0 }, ptr %a955 + store { ptr, i64, i64 } { ptr @.str.2204, i64 24, i64 0 }, ptr %a955 call void @finch_str_concat(ptr %a953, ptr %a954, ptr %a955) %t956 = load { ptr, i64, i64 }, ptr %a953 call void @finch.gen.fail(ptr %t938, %S.ast.Node %t946, { ptr, i64, i64 } %t956) - br label %endif3168 -endif3168: + br label %endif3452 +endif3452: %t957 = getelementptr inbounds %S.gen.FnSig, ptr %a852, i32 0, i32 13 %t958 = getelementptr inbounds { ptr, i64, i64 }, ptr %t957, i32 0, i32 1 %t959 = load ptr, ptr %a1 @@ -29521,11 +33323,11 @@ endif3168: %t962 = load { ptr, i64, i64 }, ptr %t960 %t963 = extractvalue { ptr, i64, i64 } %t962, 1 %t964 = icmp uge i64 %t961, %t963 - br i1 %t964, label %range3171, label %inrange3172 -range3171: - call void @finch_panic_index(ptr @.str.1992, i64 1274, i64 %t961, i64 %t963) + br i1 %t964, label %range3455, label %inrange3456 +range3455: + call void @finch_panic_index(ptr @.str.2205, i64 1398, i64 %t961, i64 %t963) unreachable -inrange3172: +inrange3456: %t965 = extractvalue { ptr, i64, i64 } %t962, 0 %t966 = getelementptr inbounds %S.ast.Node, ptr %t965, i64 %t961 %t967 = getelementptr inbounds %S.ast.Node, ptr %t966, i32 0, i32 5 @@ -29535,11 +33337,11 @@ inrange3172: %t971 = load { ptr, i64, i64 }, ptr %t969 %t972 = extractvalue { ptr, i64, i64 } %t971, 1 %t973 = icmp uge i64 %t970, %t972 - br i1 %t973, label %range3173, label %inrange3174 -range3173: - call void @finch_panic_index(ptr @.str.1993, i64 1274, i64 %t970, i64 %t972) + br i1 %t973, label %range3457, label %inrange3458 +range3457: + call void @finch_panic_index(ptr @.str.2206, i64 1398, i64 %t970, i64 %t972) unreachable -inrange3174: +inrange3458: %t974 = extractvalue { ptr, i64, i64 } %t971, 0 %t975 = getelementptr inbounds %S.ast.Node, ptr %t974, i64 %t970 %t976 = load %S.ast.Node, ptr %t975 @@ -29558,11 +33360,11 @@ inrange3174: %t986 = load { ptr, i64, i64 }, ptr %t984 %t987 = extractvalue { ptr, i64, i64 } %t986, 1 %t988 = icmp uge i64 %t985, %t987 - br i1 %t988, label %range3175, label %inrange3176 -range3175: - call void @finch_panic_index(ptr @.str.1994, i64 1275, i64 %t985, i64 %t987) + br i1 %t988, label %range3459, label %inrange3460 +range3459: + call void @finch_panic_index(ptr @.str.2207, i64 1399, i64 %t985, i64 %t987) unreachable -inrange3176: +inrange3460: %t989 = extractvalue { ptr, i64, i64 } %t986, 0 %t990 = getelementptr inbounds %S.ast.Node, ptr %t989, i64 %t985 %t991 = getelementptr inbounds %S.ast.Node, ptr %t990, i32 0, i32 1 @@ -29577,30 +33379,30 @@ inrange3176: %t999 = getelementptr inbounds { ptr, i64, i64 }, ptr %t998, i64 %t996 store { ptr, i64, i64 } %t995, ptr %t999 store i64 %t997, ptr %t983 - br label %for.step3158 -for.step3158: + br label %for.step3442 +for.step3442: %t1000 = load i64, ptr %a917 %t1001 = add i64 %t1000, 1 store i64 %t1001, ptr %a917 - br label %for.cond3156 -for.end3159: + br label %for.cond3440 +for.end3443: %t1002 = getelementptr inbounds %S.ast.Node, ptr %a515, i32 0, i32 8 %t1003 = load i1, ptr %t1002 - br i1 %t1003, label %then3177, label %endif3179 -then3177: + br i1 %t1003, label %then3461, label %endif3463 +then3461: %t1004 = load ptr, ptr %a1 %t1005 = load %S.ast.Node, ptr %a515 %t1006 = load %S.gen.FnSig, ptr %a852 call void @finch.gen.checkExport(ptr %t1004, %S.ast.Node %t1005, %S.gen.FnSig %t1006) - br label %endif3179 -endif3179: + br label %endif3463 +endif3463: %t1007 = load ptr, ptr %a1 %t1008 = icmp eq ptr %t1007, null - br i1 %t1008, label %panic3180, label %ok3181 -panic3180: - call void @finch_panic(ptr @.str.1995, i64 1280, ptr @.str.1996) + br i1 %t1008, label %panic3464, label %ok3465 +panic3464: + call void @finch_panic(ptr @.str.2208, i64 1404, ptr @.str.2209) unreachable -ok3181: +ok3465: %t1009 = getelementptr inbounds %S.gen.Gen, ptr %t1007, i32 0, i32 14 %t1010 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1009, i32 0, i32 1 %t1011 = load %S.gen.FnSig, ptr %a852 @@ -29614,125 +33416,125 @@ ok3181: %t1018 = getelementptr inbounds %S.gen.FnSig, ptr %t1017, i64 %t1015 store %S.gen.FnSig %t1014, ptr %t1018 store i64 %t1016, ptr %t1010 - br label %for.step3066 -for.step3066: + br label %for.step3350 +for.step3350: %t1019 = load i64, ptr %a492 %t1020 = add i64 %t1019, 1 store i64 %t1020, ptr %a492 - br label %for.cond3064 -for.end3067: - br label %for.step3052 -for.step3052: + br label %for.cond3348 +for.end3351: + br label %for.step3336 +for.step3336: %t1021 = load i64, ptr %a460 %t1022 = add i64 %t1021, 1 store i64 %t1022, ptr %a460 - br label %for.cond3050 -for.end3053: + br label %for.cond3334 +for.end3337: store i1 true, ptr %a1023 - br label %while.cond3182 -while.cond3182: + br label %while.cond3466 +while.cond3466: %t1024 = load i1, ptr %a1023 - br i1 %t1024, label %while.body3183, label %while.end3184 -while.body3183: + br i1 %t1024, label %while.body3467, label %while.end3468 +while.body3467: store i1 false, ptr %a1023 %t1025 = load ptr, ptr %a1 %t1026 = icmp eq ptr %t1025, null - br i1 %t1026, label %panic3185, label %ok3186 -panic3185: - call void @finch_panic(ptr @.str.1997, i64 1288, ptr @.str.1998) + br i1 %t1026, label %panic3469, label %ok3470 +panic3469: + call void @finch_panic(ptr @.str.2210, i64 1412, ptr @.str.2211) unreachable -ok3186: +ok3470: %t1027 = getelementptr inbounds %S.gen.Gen, ptr %t1025, i32 0, i32 14 %t1028 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1027, i32 0, i32 1 %t1029 = load i64, ptr %t1028 store i64 0, ptr %a1030 - br label %for.cond3187 -for.cond3187: + br label %for.cond3471 +for.cond3471: %t1031 = load i64, ptr %a1030 %t1032 = icmp slt i64 %t1031, %t1029 - br i1 %t1032, label %for.body3188, label %for.end3190 -for.body3188: + br i1 %t1032, label %for.body3472, label %for.end3474 +for.body3472: %t1033 = load ptr, ptr %a1 %t1034 = icmp eq ptr %t1033, null - br i1 %t1034, label %panic3191, label %ok3192 -panic3191: - call void @finch_panic(ptr @.str.1999, i64 1289, ptr @.str.2000) + br i1 %t1034, label %panic3475, label %ok3476 +panic3475: + call void @finch_panic(ptr @.str.2212, i64 1413, ptr @.str.2213) unreachable -ok3192: +ok3476: %t1035 = getelementptr inbounds %S.gen.Gen, ptr %t1033, i32 0, i32 14 %t1036 = load i64, ptr %a1030 %t1037 = load { ptr, i64, i64 }, ptr %t1035 %t1038 = extractvalue { ptr, i64, i64 } %t1037, 1 %t1039 = icmp uge i64 %t1036, %t1038 - br i1 %t1039, label %range3193, label %inrange3194 -range3193: - call void @finch_panic_index(ptr @.str.2001, i64 1289, i64 %t1036, i64 %t1038) + br i1 %t1039, label %range3477, label %inrange3478 +range3477: + call void @finch_panic_index(ptr @.str.2214, i64 1413, i64 %t1036, i64 %t1038) unreachable -inrange3194: +inrange3478: %t1040 = extractvalue { ptr, i64, i64 } %t1037, 0 %t1041 = getelementptr inbounds %S.gen.FnSig, ptr %t1040, i64 %t1036 %t1042 = getelementptr inbounds %S.gen.FnSig, ptr %t1041, i32 0, i32 2 %t1043 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1042, i32 0, i32 1 %t1044 = load i64, ptr %t1043 %t1045 = icmp sgt i64 %t1044, 0 - br label %logic.from3195 -logic.from3195: - br i1 %t1045, label %logic.rhs3196, label %logic.end3197 -logic.rhs3196: + br label %logic.from3479 +logic.from3479: + br i1 %t1045, label %logic.rhs3480, label %logic.end3481 +logic.rhs3480: %t1046 = load ptr, ptr %a1 %t1047 = icmp eq ptr %t1046, null - br i1 %t1047, label %panic3198, label %ok3199 -panic3198: - call void @finch_panic(ptr @.str.2002, i64 1289, ptr @.str.2003) + br i1 %t1047, label %panic3482, label %ok3483 +panic3482: + call void @finch_panic(ptr @.str.2215, i64 1413, ptr @.str.2216) unreachable -ok3199: +ok3483: %t1048 = getelementptr inbounds %S.gen.Gen, ptr %t1046, i32 0, i32 14 %t1049 = load i64, ptr %a1030 %t1050 = load { ptr, i64, i64 }, ptr %t1048 %t1051 = extractvalue { ptr, i64, i64 } %t1050, 1 %t1052 = icmp uge i64 %t1049, %t1051 - br i1 %t1052, label %range3200, label %inrange3201 -range3200: - call void @finch_panic_index(ptr @.str.2004, i64 1289, i64 %t1049, i64 %t1051) + br i1 %t1052, label %range3484, label %inrange3485 +range3484: + call void @finch_panic_index(ptr @.str.2217, i64 1413, i64 %t1049, i64 %t1051) unreachable -inrange3201: +inrange3485: %t1053 = extractvalue { ptr, i64, i64 } %t1050, 0 %t1054 = getelementptr inbounds %S.gen.FnSig, ptr %t1053, i64 %t1049 %t1055 = getelementptr inbounds %S.gen.FnSig, ptr %t1054, i32 0, i32 10 %t1056 = load i1, ptr %t1055 %t1057 = xor i1 %t1056, true - br label %logic.rend3202 -logic.rend3202: - br label %logic.end3197 -logic.end3197: - %t1058 = phi i1 [ false, %logic.from3195 ], [ %t1057, %logic.rend3202 ] - br i1 %t1058, label %then3203, label %endif3205 -then3203: + br label %logic.rend3486 +logic.rend3486: + br label %logic.end3481 +logic.end3481: + %t1058 = phi i1 [ false, %logic.from3479 ], [ %t1057, %logic.rend3486 ] + br i1 %t1058, label %then3487, label %endif3489 +then3487: %t1059 = load ptr, ptr %a1 %t1060 = icmp eq ptr %t1059, null - br i1 %t1060, label %panic3206, label %ok3207 -panic3206: - call void @finch_panic(ptr @.str.2005, i64 1290, ptr @.str.2006) + br i1 %t1060, label %panic3490, label %ok3491 +panic3490: + call void @finch_panic(ptr @.str.2218, i64 1414, ptr @.str.2219) unreachable -ok3207: +ok3491: %t1061 = getelementptr inbounds %S.gen.Gen, ptr %t1059, i32 0, i32 0 %t1062 = load ptr, ptr %a1 %t1063 = icmp eq ptr %t1062, null - br i1 %t1063, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2007, i64 1290, ptr @.str.2008) + br i1 %t1063, label %panic3492, label %ok3493 +panic3492: + call void @finch_panic(ptr @.str.2220, i64 1414, ptr @.str.2221) unreachable -ok3209: +ok3493: %t1064 = getelementptr inbounds %S.gen.Gen, ptr %t1062, i32 0, i32 14 %t1065 = load i64, ptr %a1030 %t1066 = load { ptr, i64, i64 }, ptr %t1064 %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 %t1068 = icmp uge i64 %t1065, %t1067 - br i1 %t1068, label %range3210, label %inrange3211 -range3210: - call void @finch_panic_index(ptr @.str.2009, i64 1290, i64 %t1065, i64 %t1067) + br i1 %t1068, label %range3494, label %inrange3495 +range3494: + call void @finch_panic_index(ptr @.str.2222, i64 1414, i64 %t1065, i64 %t1067) unreachable -inrange3211: +inrange3495: %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %t1069, i64 %t1065 %t1071 = getelementptr inbounds %S.gen.FnSig, ptr %t1070, i32 0, i32 16 @@ -29740,31 +33542,31 @@ inrange3211: %t1073 = load { ptr, i64, i64 }, ptr %t1061 %t1074 = extractvalue { ptr, i64, i64 } %t1073, 1 %t1075 = icmp uge i64 %t1072, %t1074 - br i1 %t1075, label %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2010, i64 1290, i64 %t1072, i64 %t1074) + br i1 %t1075, label %range3496, label %inrange3497 +range3496: + call void @finch_panic_index(ptr @.str.2223, i64 1414, i64 %t1072, i64 %t1074) unreachable -inrange3213: +inrange3497: %t1076 = extractvalue { ptr, i64, i64 } %t1073, 0 %t1077 = getelementptr inbounds %S.ast.Program, ptr %t1076, i64 %t1072 %t1078 = getelementptr inbounds %S.ast.Program, ptr %t1077, i32 0, i32 8 %t1079 = load ptr, ptr %a1 %t1080 = icmp eq ptr %t1079, null - br i1 %t1080, label %panic3214, label %ok3215 -panic3214: - call void @finch_panic(ptr @.str.2011, i64 1290, ptr @.str.2012) + br i1 %t1080, label %panic3498, label %ok3499 +panic3498: + call void @finch_panic(ptr @.str.2224, i64 1414, ptr @.str.2225) unreachable -ok3215: +ok3499: %t1081 = getelementptr inbounds %S.gen.Gen, ptr %t1079, i32 0, i32 14 %t1082 = load i64, ptr %a1030 %t1083 = load { ptr, i64, i64 }, ptr %t1081 %t1084 = extractvalue { ptr, i64, i64 } %t1083, 1 %t1085 = icmp uge i64 %t1082, %t1084 - br i1 %t1085, label %range3216, label %inrange3217 -range3216: - call void @finch_panic_index(ptr @.str.2013, i64 1290, i64 %t1082, i64 %t1084) + br i1 %t1085, label %range3500, label %inrange3501 +range3500: + call void @finch_panic_index(ptr @.str.2226, i64 1414, i64 %t1082, i64 %t1084) unreachable -inrange3217: +inrange3501: %t1086 = extractvalue { ptr, i64, i64 } %t1083, 0 %t1087 = getelementptr inbounds %S.gen.FnSig, ptr %t1086, i64 %t1082 %t1088 = getelementptr inbounds %S.gen.FnSig, ptr %t1087, i32 0, i32 17 @@ -29772,11 +33574,11 @@ inrange3217: %t1090 = load { ptr, i64, i64 }, ptr %t1078 %t1091 = extractvalue { ptr, i64, i64 } %t1090, 1 %t1092 = icmp uge i64 %t1089, %t1091 - br i1 %t1092, label %range3218, label %inrange3219 -range3218: - call void @finch_panic_index(ptr @.str.2014, i64 1290, i64 %t1089, i64 %t1091) + br i1 %t1092, label %range3502, label %inrange3503 +range3502: + call void @finch_panic_index(ptr @.str.2227, i64 1414, i64 %t1089, i64 %t1091) unreachable -inrange3219: +inrange3503: %t1093 = extractvalue { ptr, i64, i64 } %t1090, 0 %t1094 = getelementptr inbounds %S.ast.Node, ptr %t1093, i64 %t1089 %t1095 = load %S.ast.Node, ptr %t1094 @@ -29793,64 +33595,64 @@ inrange3219: %t1106 = load { ptr, i64, i64 }, ptr %t1101 %t1107 = extractvalue { ptr, i64, i64 } %t1106, 1 %t1108 = icmp uge i64 %t1105, %t1107 - br i1 %t1108, label %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2016, i64 1291, i64 %t1105, i64 %t1107) + br i1 %t1108, label %range3504, label %inrange3505 +range3504: + call void @finch_panic_index(ptr @.str.2229, i64 1415, i64 %t1105, i64 %t1107) unreachable -inrange3221: +inrange3505: %t1109 = extractvalue { ptr, i64, i64 } %t1106, 0 %t1110 = getelementptr inbounds %S.ast.Node, ptr %t1109, i64 %t1105 %t1111 = load %S.ast.Node, ptr %t1110 - %t1112 = call i1 @finch.gen.mutates(ptr %t1100, { ptr, i64, i64 } { ptr @.str.2015, i64 4, i64 0 }, %S.ast.Node %t1111) - br i1 %t1112, label %then3222, label %endif3224 -then3222: + %t1112 = call i1 @finch.gen.mutates(ptr %t1100, { ptr, i64, i64 } { ptr @.str.2228, i64 4, i64 0 }, %S.ast.Node %t1111) + br i1 %t1112, label %then3506, label %endif3508 +then3506: %t1113 = load ptr, ptr %a1 %t1114 = icmp eq ptr %t1113, null - br i1 %t1114, label %panic3225, label %ok3226 -panic3225: - call void @finch_panic(ptr @.str.2017, i64 1292, ptr @.str.2018) + br i1 %t1114, label %panic3509, label %ok3510 +panic3509: + call void @finch_panic(ptr @.str.2230, i64 1416, ptr @.str.2231) unreachable -ok3226: +ok3510: %t1115 = getelementptr inbounds %S.gen.Gen, ptr %t1113, i32 0, i32 14 %t1116 = load i64, ptr %a1030 %t1117 = load { ptr, i64, i64 }, ptr %t1115 %t1118 = extractvalue { ptr, i64, i64 } %t1117, 1 %t1119 = icmp uge i64 %t1116, %t1118 - br i1 %t1119, label %range3227, label %inrange3228 -range3227: - call void @finch_panic_index(ptr @.str.2019, i64 1292, i64 %t1116, i64 %t1118) + br i1 %t1119, label %range3511, label %inrange3512 +range3511: + call void @finch_panic_index(ptr @.str.2232, i64 1416, i64 %t1116, i64 %t1118) unreachable -inrange3228: +inrange3512: %t1120 = extractvalue { ptr, i64, i64 } %t1117, 0 %t1121 = getelementptr inbounds %S.gen.FnSig, ptr %t1120, i64 %t1116 %t1122 = getelementptr inbounds %S.gen.FnSig, ptr %t1121, i32 0, i32 10 store i1 true, ptr %t1122 %t1123 = load ptr, ptr %a1 %t1124 = icmp eq ptr %t1123, null - br i1 %t1124, label %panic3229, label %ok3230 -panic3229: - call void @finch_panic(ptr @.str.2020, i64 1293, ptr @.str.2021) + br i1 %t1124, label %panic3513, label %ok3514 +panic3513: + call void @finch_panic(ptr @.str.2233, i64 1417, ptr @.str.2234) unreachable -ok3230: +ok3514: %t1125 = getelementptr inbounds %S.gen.Gen, ptr %t1123, i32 0, i32 22 %t1126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1125, i32 0, i32 1 %t1127 = load ptr, ptr %a1 %t1128 = icmp eq ptr %t1127, null - br i1 %t1128, label %panic3231, label %ok3232 -panic3231: - call void @finch_panic(ptr @.str.2022, i64 1293, ptr @.str.2023) + br i1 %t1128, label %panic3515, label %ok3516 +panic3515: + call void @finch_panic(ptr @.str.2235, i64 1417, ptr @.str.2236) unreachable -ok3232: +ok3516: %t1129 = getelementptr inbounds %S.gen.Gen, ptr %t1127, i32 0, i32 14 %t1130 = load i64, ptr %a1030 %t1131 = load { ptr, i64, i64 }, ptr %t1129 %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3233, label %inrange3234 -range3233: - call void @finch_panic_index(ptr @.str.2024, i64 1293, i64 %t1130, i64 %t1132) + br i1 %t1133, label %range3517, label %inrange3518 +range3517: + call void @finch_panic_index(ptr @.str.2237, i64 1417, i64 %t1130, i64 %t1132) unreachable -inrange3234: +inrange3518: %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 %t1135 = getelementptr inbounds %S.gen.FnSig, ptr %t1134, i64 %t1130 %t1136 = getelementptr inbounds %S.gen.FnSig, ptr %t1135, i32 0, i32 1 @@ -29866,51 +33668,51 @@ inrange3234: store { ptr, i64, i64 } %t1140, ptr %t1144 store i64 %t1142, ptr %t1126 store i1 true, ptr %a1023 - br label %endif3224 -endif3224: - br label %endif3205 -endif3205: - br label %for.step3189 -for.step3189: + br label %endif3508 +endif3508: + br label %endif3489 +endif3489: + br label %for.step3473 +for.step3473: %t1145 = load i64, ptr %a1030 %t1146 = add i64 %t1145, 1 store i64 %t1146, ptr %a1030 - br label %for.cond3187 -for.end3190: + br label %for.cond3471 +for.end3474: %t1147 = load ptr, ptr %a1 %t1148 = icmp eq ptr %t1147, null - br i1 %t1148, label %panic3235, label %ok3236 -panic3235: - call void @finch_panic(ptr @.str.2025, i64 1298, ptr @.str.2026) + br i1 %t1148, label %panic3519, label %ok3520 +panic3519: + call void @finch_panic(ptr @.str.2238, i64 1422, ptr @.str.2239) unreachable -ok3236: +ok3520: %t1149 = getelementptr inbounds %S.gen.Gen, ptr %t1147, i32 0, i32 16 %t1150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1149, i32 0, i32 1 %t1151 = load i64, ptr %t1150 store i64 0, ptr %a1152 - br label %for.cond3237 -for.cond3237: + br label %for.cond3521 +for.cond3521: %t1153 = load i64, ptr %a1152 %t1154 = icmp slt i64 %t1153, %t1151 - br i1 %t1154, label %for.body3238, label %for.end3240 -for.body3238: + br i1 %t1154, label %for.body3522, label %for.end3524 +for.body3522: %t1155 = load ptr, ptr %a1 %t1156 = icmp eq ptr %t1155, null - br i1 %t1156, label %panic3241, label %ok3242 -panic3241: - call void @finch_panic(ptr @.str.2027, i64 1299, ptr @.str.2028) + br i1 %t1156, label %panic3525, label %ok3526 +panic3525: + call void @finch_panic(ptr @.str.2240, i64 1423, ptr @.str.2241) unreachable -ok3242: +ok3526: %t1157 = getelementptr inbounds %S.gen.Gen, ptr %t1155, i32 0, i32 16 %t1158 = load i64, ptr %a1152 %t1159 = load { ptr, i64, i64 }, ptr %t1157 %t1160 = extractvalue { ptr, i64, i64 } %t1159, 1 %t1161 = icmp uge i64 %t1158, %t1160 - br i1 %t1161, label %range3243, label %inrange3244 -range3243: - call void @finch_panic_index(ptr @.str.2029, i64 1299, i64 %t1158, i64 %t1160) + br i1 %t1161, label %range3527, label %inrange3528 +range3527: + call void @finch_panic_index(ptr @.str.2242, i64 1423, i64 %t1158, i64 %t1160) unreachable -inrange3244: +inrange3528: %t1162 = extractvalue { ptr, i64, i64 } %t1159, 0 %t1163 = getelementptr inbounds %S.gen.Template, ptr %t1162, i64 %t1158 %t1164 = load %S.gen.Template, ptr %t1163 @@ -29922,38 +33724,38 @@ inrange3244: %t1170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1169, i32 0, i32 1 %t1171 = load i64, ptr %t1170 %t1172 = icmp sgt i64 %t1171, 0 - br label %logic.from3245 -logic.from3245: - br i1 %t1172, label %logic.rhs3246, label %logic.end3247 -logic.rhs3246: + br label %logic.from3529 +logic.from3529: + br i1 %t1172, label %logic.rhs3530, label %logic.end3531 +logic.rhs3530: %t1173 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 7 %t1174 = load i1, ptr %t1173 %t1175 = xor i1 %t1174, true - br label %logic.rend3248 -logic.rend3248: - br label %logic.end3247 -logic.end3247: - %t1176 = phi i1 [ false, %logic.from3245 ], [ %t1175, %logic.rend3248 ] - br i1 %t1176, label %then3249, label %endif3251 -then3249: + br label %logic.rend3532 +logic.rend3532: + br label %logic.end3531 +logic.end3531: + %t1176 = phi i1 [ false, %logic.from3529 ], [ %t1175, %logic.rend3532 ] + br i1 %t1176, label %then3533, label %endif3535 +then3533: %t1177 = load ptr, ptr %a1 %t1178 = icmp eq ptr %t1177, null - br i1 %t1178, label %panic3252, label %ok3253 -panic3252: - call void @finch_panic(ptr @.str.2030, i64 1301, ptr @.str.2031) + br i1 %t1178, label %panic3536, label %ok3537 +panic3536: + call void @finch_panic(ptr @.str.2243, i64 1425, ptr @.str.2244) unreachable -ok3253: +ok3537: %t1179 = getelementptr inbounds %S.gen.Gen, ptr %t1177, i32 0, i32 0 %t1180 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 4 %t1181 = load i64, ptr %t1180 %t1182 = load { ptr, i64, i64 }, ptr %t1179 %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3254, label %inrange3255 -range3254: - call void @finch_panic_index(ptr @.str.2032, i64 1301, i64 %t1181, i64 %t1183) + br i1 %t1184, label %range3538, label %inrange3539 +range3538: + call void @finch_panic_index(ptr @.str.2245, i64 1425, i64 %t1181, i64 %t1183) unreachable -inrange3255: +inrange3539: %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 %t1186 = getelementptr inbounds %S.ast.Program, ptr %t1185, i64 %t1181 %t1187 = getelementptr inbounds %S.ast.Program, ptr %t1186, i32 0, i32 8 @@ -29962,11 +33764,11 @@ inrange3255: %t1190 = load { ptr, i64, i64 }, ptr %t1187 %t1191 = extractvalue { ptr, i64, i64 } %t1190, 1 %t1192 = icmp uge i64 %t1189, %t1191 - br i1 %t1192, label %range3256, label %inrange3257 -range3256: - call void @finch_panic_index(ptr @.str.2033, i64 1301, i64 %t1189, i64 %t1191) + br i1 %t1192, label %range3540, label %inrange3541 +range3540: + call void @finch_panic_index(ptr @.str.2246, i64 1425, i64 %t1189, i64 %t1191) unreachable -inrange3257: +inrange3541: %t1193 = extractvalue { ptr, i64, i64 } %t1190, 0 %t1194 = getelementptr inbounds %S.ast.Node, ptr %t1193, i64 %t1189 %t1195 = load %S.ast.Node, ptr %t1194 @@ -29983,45 +33785,45 @@ inrange3257: %t1206 = load { ptr, i64, i64 }, ptr %t1201 %t1207 = extractvalue { ptr, i64, i64 } %t1206, 1 %t1208 = icmp uge i64 %t1205, %t1207 - br i1 %t1208, label %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2035, i64 1302, i64 %t1205, i64 %t1207) + br i1 %t1208, label %range3542, label %inrange3543 +range3542: + call void @finch_panic_index(ptr @.str.2248, i64 1426, i64 %t1205, i64 %t1207) unreachable -inrange3259: +inrange3543: %t1209 = extractvalue { ptr, i64, i64 } %t1206, 0 %t1210 = getelementptr inbounds %S.ast.Node, ptr %t1209, i64 %t1205 %t1211 = load %S.ast.Node, ptr %t1210 - %t1212 = call i1 @finch.gen.mutates(ptr %t1200, { ptr, i64, i64 } { ptr @.str.2034, i64 4, i64 0 }, %S.ast.Node %t1211) - br i1 %t1212, label %then3260, label %endif3262 -then3260: + %t1212 = call i1 @finch.gen.mutates(ptr %t1200, { ptr, i64, i64 } { ptr @.str.2247, i64 4, i64 0 }, %S.ast.Node %t1211) + br i1 %t1212, label %then3544, label %endif3546 +then3544: %t1213 = load ptr, ptr %a1 %t1214 = icmp eq ptr %t1213, null - br i1 %t1214, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2036, i64 1303, ptr @.str.2037) + br i1 %t1214, label %panic3547, label %ok3548 +panic3547: + call void @finch_panic(ptr @.str.2249, i64 1427, ptr @.str.2250) unreachable -ok3264: +ok3548: %t1215 = getelementptr inbounds %S.gen.Gen, ptr %t1213, i32 0, i32 16 %t1216 = load i64, ptr %a1152 %t1217 = load { ptr, i64, i64 }, ptr %t1215 %t1218 = extractvalue { ptr, i64, i64 } %t1217, 1 %t1219 = icmp uge i64 %t1216, %t1218 - br i1 %t1219, label %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2038, i64 1303, i64 %t1216, i64 %t1218) + br i1 %t1219, label %range3549, label %inrange3550 +range3549: + call void @finch_panic_index(ptr @.str.2251, i64 1427, i64 %t1216, i64 %t1218) unreachable -inrange3266: +inrange3550: %t1220 = extractvalue { ptr, i64, i64 } %t1217, 0 %t1221 = getelementptr inbounds %S.gen.Template, ptr %t1220, i64 %t1216 %t1222 = getelementptr inbounds %S.gen.Template, ptr %t1221, i32 0, i32 7 store i1 true, ptr %t1222 %t1223 = load ptr, ptr %a1 %t1224 = icmp eq ptr %t1223, null - br i1 %t1224, label %panic3267, label %ok3268 -panic3267: - call void @finch_panic(ptr @.str.2039, i64 1304, ptr @.str.2040) + br i1 %t1224, label %panic3551, label %ok3552 +panic3551: + call void @finch_panic(ptr @.str.2252, i64 1428, ptr @.str.2253) unreachable -ok3268: +ok3552: %t1225 = getelementptr inbounds %S.gen.Gen, ptr %t1223, i32 0, i32 22 %t1226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1225, i32 0, i32 1 %t1227 = getelementptr inbounds %S.gen.Template, ptr %a1168, i32 0, i32 1 @@ -30037,61 +33839,61 @@ ok3268: store { ptr, i64, i64 } %t1231, ptr %t1235 store i64 %t1233, ptr %t1226 store i1 true, ptr %a1023 - br label %endif3262 -endif3262: - br label %endif3251 -endif3251: - br label %for.step3239 -for.step3239: + br label %endif3546 +endif3546: + br label %endif3535 +endif3535: + br label %for.step3523 +for.step3523: %t1236 = load i64, ptr %a1152 %t1237 = add i64 %t1236, 1 store i64 %t1237, ptr %a1152 - br label %for.cond3237 -for.end3240: - br label %while.cond3182 -while.end3184: + br label %for.cond3521 +for.end3524: + br label %while.cond3466 +while.end3468: %t1238 = load ptr, ptr %a1 %t1239 = icmp eq ptr %t1238, null - br i1 %t1239, label %panic3269, label %ok3270 -panic3269: - call void @finch_panic(ptr @.str.2041, i64 1311, ptr @.str.2042) + br i1 %t1239, label %panic3553, label %ok3554 +panic3553: + call void @finch_panic(ptr @.str.2254, i64 1435, ptr @.str.2255) unreachable -ok3270: +ok3554: %t1240 = getelementptr inbounds %S.gen.Gen, ptr %t1238, i32 0, i32 14 %t1241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1240, i32 0, i32 1 %t1242 = load i64, ptr %t1241 store i64 0, ptr %a1243 - br label %for.cond3271 -for.cond3271: + br label %for.cond3555 +for.cond3555: %t1244 = load i64, ptr %a1243 %t1245 = icmp slt i64 %t1244, %t1242 - br i1 %t1245, label %for.body3272, label %for.end3274 -for.body3272: + br i1 %t1245, label %for.body3556, label %for.end3558 +for.body3556: %t1246 = load ptr, ptr %a1 %t1247 = icmp eq ptr %t1246, null - br i1 %t1247, label %panic3275, label %ok3276 -panic3275: - call void @finch_panic(ptr @.str.2043, i64 1312, ptr @.str.2044) + br i1 %t1247, label %panic3559, label %ok3560 +panic3559: + call void @finch_panic(ptr @.str.2256, i64 1436, ptr @.str.2257) unreachable -ok3276: +ok3560: %t1248 = getelementptr inbounds %S.gen.Gen, ptr %t1246, i32 0, i32 0 %t1249 = load ptr, ptr %a1 %t1250 = icmp eq ptr %t1249, null - br i1 %t1250, label %panic3277, label %ok3278 -panic3277: - call void @finch_panic(ptr @.str.2045, i64 1312, ptr @.str.2046) + br i1 %t1250, label %panic3561, label %ok3562 +panic3561: + call void @finch_panic(ptr @.str.2258, i64 1436, ptr @.str.2259) unreachable -ok3278: +ok3562: %t1251 = getelementptr inbounds %S.gen.Gen, ptr %t1249, i32 0, i32 14 %t1252 = load i64, ptr %a1243 %t1253 = load { ptr, i64, i64 }, ptr %t1251 %t1254 = extractvalue { ptr, i64, i64 } %t1253, 1 %t1255 = icmp uge i64 %t1252, %t1254 - br i1 %t1255, label %range3279, label %inrange3280 -range3279: - call void @finch_panic_index(ptr @.str.2047, i64 1312, i64 %t1252, i64 %t1254) + br i1 %t1255, label %range3563, label %inrange3564 +range3563: + call void @finch_panic_index(ptr @.str.2260, i64 1436, i64 %t1252, i64 %t1254) unreachable -inrange3280: +inrange3564: %t1256 = extractvalue { ptr, i64, i64 } %t1253, 0 %t1257 = getelementptr inbounds %S.gen.FnSig, ptr %t1256, i64 %t1252 %t1258 = getelementptr inbounds %S.gen.FnSig, ptr %t1257, i32 0, i32 16 @@ -30099,31 +33901,31 @@ inrange3280: %t1260 = load { ptr, i64, i64 }, ptr %t1248 %t1261 = extractvalue { ptr, i64, i64 } %t1260, 1 %t1262 = icmp uge i64 %t1259, %t1261 - br i1 %t1262, label %range3281, label %inrange3282 -range3281: - call void @finch_panic_index(ptr @.str.2048, i64 1312, i64 %t1259, i64 %t1261) + br i1 %t1262, label %range3565, label %inrange3566 +range3565: + call void @finch_panic_index(ptr @.str.2261, i64 1436, i64 %t1259, i64 %t1261) unreachable -inrange3282: +inrange3566: %t1263 = extractvalue { ptr, i64, i64 } %t1260, 0 %t1264 = getelementptr inbounds %S.ast.Program, ptr %t1263, i64 %t1259 %t1265 = getelementptr inbounds %S.ast.Program, ptr %t1264, i32 0, i32 8 %t1266 = load ptr, ptr %a1 %t1267 = icmp eq ptr %t1266, null - br i1 %t1267, label %panic3283, label %ok3284 -panic3283: - call void @finch_panic(ptr @.str.2049, i64 1312, ptr @.str.2050) + br i1 %t1267, label %panic3567, label %ok3568 +panic3567: + call void @finch_panic(ptr @.str.2262, i64 1436, ptr @.str.2263) unreachable -ok3284: +ok3568: %t1268 = getelementptr inbounds %S.gen.Gen, ptr %t1266, i32 0, i32 14 %t1269 = load i64, ptr %a1243 %t1270 = load { ptr, i64, i64 }, ptr %t1268 %t1271 = extractvalue { ptr, i64, i64 } %t1270, 1 %t1272 = icmp uge i64 %t1269, %t1271 - br i1 %t1272, label %range3285, label %inrange3286 -range3285: - call void @finch_panic_index(ptr @.str.2051, i64 1312, i64 %t1269, i64 %t1271) + br i1 %t1272, label %range3569, label %inrange3570 +range3569: + call void @finch_panic_index(ptr @.str.2264, i64 1436, i64 %t1269, i64 %t1271) unreachable -inrange3286: +inrange3570: %t1273 = extractvalue { ptr, i64, i64 } %t1270, 0 %t1274 = getelementptr inbounds %S.gen.FnSig, ptr %t1273, i64 %t1269 %t1275 = getelementptr inbounds %S.gen.FnSig, ptr %t1274, i32 0, i32 17 @@ -30131,11 +33933,11 @@ inrange3286: %t1277 = load { ptr, i64, i64 }, ptr %t1265 %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2052, i64 1312, i64 %t1276, i64 %t1278) + br i1 %t1279, label %range3571, label %inrange3572 +range3571: + call void @finch_panic_index(ptr @.str.2265, i64 1436, i64 %t1276, i64 %t1278) unreachable -inrange3288: +inrange3572: %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 %t1281 = getelementptr inbounds %S.ast.Node, ptr %t1280, i64 %t1276 %t1282 = load %S.ast.Node, ptr %t1281 @@ -30151,11 +33953,11 @@ inrange3288: %t1292 = load { ptr, i64, i64 }, ptr %t1287 %t1293 = extractvalue { ptr, i64, i64 } %t1292, 1 %t1294 = icmp uge i64 %t1291, %t1293 - br i1 %t1294, label %range3289, label %inrange3290 -range3289: - call void @finch_panic_index(ptr @.str.2053, i64 1313, i64 %t1291, i64 %t1293) + br i1 %t1294, label %range3573, label %inrange3574 +range3573: + call void @finch_panic_index(ptr @.str.2266, i64 1437, i64 %t1291, i64 %t1293) unreachable -inrange3290: +inrange3574: %t1295 = extractvalue { ptr, i64, i64 } %t1292, 0 %t1296 = getelementptr inbounds %S.ast.Node, ptr %t1295, i64 %t1291 %t1297 = load %S.ast.Node, ptr %t1296 @@ -30165,50 +33967,50 @@ inrange3290: store %S.ast.Node %t1300, ptr %a1301 %t1302 = load ptr, ptr %a1 %t1303 = icmp eq ptr %t1302, null - br i1 %t1303, label %panic3291, label %ok3292 -panic3291: - call void @finch_panic(ptr @.str.2054, i64 1314, ptr @.str.2055) + br i1 %t1303, label %panic3575, label %ok3576 +panic3575: + call void @finch_panic(ptr @.str.2267, i64 1438, ptr @.str.2268) unreachable -ok3292: +ok3576: %t1304 = getelementptr inbounds %S.gen.Gen, ptr %t1302, i32 0, i32 14 %t1305 = load i64, ptr %a1243 %t1306 = load { ptr, i64, i64 }, ptr %t1304 %t1307 = extractvalue { ptr, i64, i64 } %t1306, 1 %t1308 = icmp uge i64 %t1305, %t1307 - br i1 %t1308, label %range3293, label %inrange3294 -range3293: - call void @finch_panic_index(ptr @.str.2056, i64 1314, i64 %t1305, i64 %t1307) + br i1 %t1308, label %range3577, label %inrange3578 +range3577: + call void @finch_panic_index(ptr @.str.2269, i64 1438, i64 %t1305, i64 %t1307) unreachable -inrange3294: +inrange3578: %t1309 = extractvalue { ptr, i64, i64 } %t1306, 0 %t1310 = getelementptr inbounds %S.gen.FnSig, ptr %t1309, i64 %t1305 %t1311 = getelementptr inbounds %S.gen.FnSig, ptr %t1310, i32 0, i32 13 %t1312 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1311, i32 0, i32 1 %t1313 = load i64, ptr %t1312 store i64 0, ptr %a1314 - br label %for.cond3295 -for.cond3295: + br label %for.cond3579 +for.cond3579: %t1315 = load i64, ptr %a1314 %t1316 = icmp slt i64 %t1315, %t1313 - br i1 %t1316, label %for.body3296, label %for.end3298 -for.body3296: + br i1 %t1316, label %for.body3580, label %for.end3582 +for.body3580: %t1317 = load ptr, ptr %a1 %t1318 = icmp eq ptr %t1317, null - br i1 %t1318, label %panic3299, label %ok3300 -panic3299: - call void @finch_panic(ptr @.str.2057, i64 1315, ptr @.str.2058) + br i1 %t1318, label %panic3583, label %ok3584 +panic3583: + call void @finch_panic(ptr @.str.2270, i64 1439, ptr @.str.2271) unreachable -ok3300: +ok3584: %t1319 = getelementptr inbounds %S.gen.Gen, ptr %t1317, i32 0, i32 14 %t1320 = load i64, ptr %a1243 %t1321 = load { ptr, i64, i64 }, ptr %t1319 %t1322 = extractvalue { ptr, i64, i64 } %t1321, 1 %t1323 = icmp uge i64 %t1320, %t1322 - br i1 %t1323, label %range3301, label %inrange3302 -range3301: - call void @finch_panic_index(ptr @.str.2059, i64 1315, i64 %t1320, i64 %t1322) + br i1 %t1323, label %range3585, label %inrange3586 +range3585: + call void @finch_panic_index(ptr @.str.2272, i64 1439, i64 %t1320, i64 %t1322) unreachable -inrange3302: +inrange3586: %t1324 = extractvalue { ptr, i64, i64 } %t1321, 0 %t1325 = getelementptr inbounds %S.gen.FnSig, ptr %t1324, i64 %t1320 %t1326 = getelementptr inbounds %S.gen.FnSig, ptr %t1325, i32 0, i32 13 @@ -30216,11 +34018,11 @@ inrange3302: %t1328 = load { ptr, i64, i64 }, ptr %t1326 %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3303, label %inrange3304 -range3303: - call void @finch_panic_index(ptr @.str.2060, i64 1315, i64 %t1327, i64 %t1329) + br i1 %t1330, label %range3587, label %inrange3588 +range3587: + call void @finch_panic_index(ptr @.str.2273, i64 1439, i64 %t1327, i64 %t1329) unreachable -inrange3304: +inrange3588: %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 %t1332 = getelementptr inbounds %S.ast.Type, ptr %t1331, i64 %t1327 %t1333 = load %S.ast.Type, ptr %t1332 @@ -30230,21 +34032,21 @@ inrange3304: store %S.ast.Type %t1336, ptr %a1337 %t1338 = load ptr, ptr %a1 %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3305, label %ok3306 -panic3305: - call void @finch_panic(ptr @.str.2061, i64 1316, ptr @.str.2062) + br i1 %t1339, label %panic3589, label %ok3590 +panic3589: + call void @finch_panic(ptr @.str.2274, i64 1440, ptr @.str.2275) unreachable -ok3306: +ok3590: %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 14 %t1341 = load i64, ptr %a1243 %t1342 = load { ptr, i64, i64 }, ptr %t1340 %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3307, label %inrange3308 -range3307: - call void @finch_panic_index(ptr @.str.2063, i64 1316, i64 %t1341, i64 %t1343) + br i1 %t1344, label %range3591, label %inrange3592 +range3591: + call void @finch_panic_index(ptr @.str.2276, i64 1440, i64 %t1341, i64 %t1343) unreachable -inrange3308: +inrange3592: %t1345 = extractvalue { ptr, i64, i64 } %t1342, 0 %t1346 = getelementptr inbounds %S.gen.FnSig, ptr %t1345, i64 %t1341 %t1347 = getelementptr inbounds %S.gen.FnSig, ptr %t1346, i32 0, i32 15 @@ -30252,28 +34054,28 @@ inrange3308: %t1349 = load ptr, ptr %a1 %t1350 = load %S.ast.Type, ptr %a1337 %t1351 = call i1 @finch.gen.owning(ptr %t1349, %S.ast.Type %t1350) - br label %logic.from3309 -logic.from3309: - br i1 %t1351, label %logic.rhs3310, label %logic.end3311 -logic.rhs3310: + br label %logic.from3593 +logic.from3593: + br i1 %t1351, label %logic.rhs3594, label %logic.end3595 +logic.rhs3594: %t1352 = load ptr, ptr %a1 %t1353 = load ptr, ptr %a1 %t1354 = icmp eq ptr %t1353, null - br i1 %t1354, label %panic3312, label %ok3313 -panic3312: - call void @finch_panic(ptr @.str.2064, i64 1316, ptr @.str.2065) + br i1 %t1354, label %panic3596, label %ok3597 +panic3596: + call void @finch_panic(ptr @.str.2277, i64 1440, ptr @.str.2278) unreachable -ok3313: +ok3597: %t1355 = getelementptr inbounds %S.gen.Gen, ptr %t1353, i32 0, i32 14 %t1356 = load i64, ptr %a1243 %t1357 = load { ptr, i64, i64 }, ptr %t1355 %t1358 = extractvalue { ptr, i64, i64 } %t1357, 1 %t1359 = icmp uge i64 %t1356, %t1358 - br i1 %t1359, label %range3314, label %inrange3315 -range3314: - call void @finch_panic_index(ptr @.str.2066, i64 1316, i64 %t1356, i64 %t1358) + br i1 %t1359, label %range3598, label %inrange3599 +range3598: + call void @finch_panic_index(ptr @.str.2279, i64 1440, i64 %t1356, i64 %t1358) unreachable -inrange3315: +inrange3599: %t1360 = extractvalue { ptr, i64, i64 } %t1357, 0 %t1361 = getelementptr inbounds %S.gen.FnSig, ptr %t1360, i64 %t1356 %t1362 = getelementptr inbounds %S.gen.FnSig, ptr %t1361, i32 0, i32 14 @@ -30281,22 +34083,22 @@ inrange3315: %t1364 = load { ptr, i64, i64 }, ptr %t1362 %t1365 = extractvalue { ptr, i64, i64 } %t1364, 1 %t1366 = icmp uge i64 %t1363, %t1365 - br i1 %t1366, label %range3316, label %inrange3317 -range3316: - call void @finch_panic_index(ptr @.str.2067, i64 1316, i64 %t1363, i64 %t1365) + br i1 %t1366, label %range3600, label %inrange3601 +range3600: + call void @finch_panic_index(ptr @.str.2280, i64 1440, i64 %t1363, i64 %t1365) unreachable -inrange3317: +inrange3601: %t1367 = extractvalue { ptr, i64, i64 } %t1364, 0 %t1368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1367, i64 %t1363 %t1369 = load { ptr, i64, i64 }, ptr %t1368 %t1370 = load %S.ast.Node, ptr %a1301 %t1371 = call i1 @finch.gen.mutates(ptr %t1352, { ptr, i64, i64 } %t1369, %S.ast.Node %t1370) %t1372 = xor i1 %t1371, true - br label %logic.rend3318 -logic.rend3318: - br label %logic.end3311 -logic.end3311: - %t1373 = phi i1 [ false, %logic.from3309 ], [ %t1372, %logic.rend3318 ] + br label %logic.rend3602 +logic.rend3602: + br label %logic.end3595 +logic.end3595: + %t1373 = phi i1 [ false, %logic.from3593 ], [ %t1372, %logic.rend3602 ] %t1374 = load i64, ptr %t1348 %t1375 = add i64 %t1374, 1 call void @finch_arr_reserve(ptr %t1347, i64 %t1375, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) @@ -30304,20 +34106,20 @@ logic.end3311: %t1377 = getelementptr inbounds i1, ptr %t1376, i64 %t1374 store i1 %t1373, ptr %t1377 store i64 %t1375, ptr %t1348 - br label %for.step3297 -for.step3297: + br label %for.step3581 +for.step3581: %t1378 = load i64, ptr %a1314 %t1379 = add i64 %t1378, 1 store i64 %t1379, ptr %a1314 - br label %for.cond3295 -for.end3298: - br label %for.step3273 -for.step3273: + br label %for.cond3579 +for.end3582: + br label %for.step3557 +for.step3557: %t1380 = load i64, ptr %a1243 %t1381 = add i64 %t1380, 1 store i64 %t1381, ptr %a1243 - br label %for.cond3271 -for.end3274: + br label %for.cond3555 +for.end3558: ret void } @@ -30345,38 +34147,38 @@ entry: store i1 %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3319, label %ok3320 -panic3319: - call void @finch_panic(ptr @.str.2068, i64 1322, ptr @.str.2069) + br i1 %t7, label %panic3603, label %ok3604 +panic3603: + call void @finch_panic(ptr @.str.2281, i64 1446, ptr @.str.2282) unreachable -ok3320: +ok3604: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 %t10 = load i64, ptr %t9 store i64 0, ptr %a11 - br label %for.cond3321 -for.cond3321: + br label %for.cond3605 +for.cond3605: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3322, label %for.end3324 -for.body3322: + br i1 %t13, label %for.body3606, label %for.end3608 +for.body3606: %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3325, label %ok3326 -panic3325: - call void @finch_panic(ptr @.str.2070, i64 1323, ptr @.str.2071) + br i1 %t15, label %panic3609, label %ok3610 +panic3609: + call void @finch_panic(ptr @.str.2283, i64 1447, ptr @.str.2284) unreachable -ok3326: +ok3610: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 16 %t17 = load i64, ptr %a11 %t18 = load { ptr, i64, i64 }, ptr %t16 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3327, label %inrange3328 -range3327: - call void @finch_panic_index(ptr @.str.2072, i64 1323, i64 %t17, i64 %t19) + br i1 %t20, label %range3611, label %inrange3612 +range3611: + call void @finch_panic_index(ptr @.str.2285, i64 1447, i64 %t17, i64 %t19) unreachable -inrange3328: +inrange3612: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.gen.Template, ptr %t21, i64 %t17 %t23 = load %S.gen.Template, ptr %t22 @@ -30391,10 +34193,10 @@ inrange3328: store { ptr, i64, i64 } %t30, ptr %a32 %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) %t34 = icmp ne i32 %t33, 0 - br label %logic.from3329 -logic.from3329: - br i1 %t34, label %logic.rhs3330, label %logic.end3331 -logic.rhs3330: + br label %logic.from3613 +logic.from3613: + br i1 %t34, label %logic.rhs3614, label %logic.end3615 +logic.rhs3614: %t35 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 1 %t36 = load { ptr, i64, i64 }, ptr %t35 %t37 = load { ptr, i64, i64 }, ptr %a3 @@ -30402,15 +34204,15 @@ logic.rhs3330: store { ptr, i64, i64 } %t37, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br label %logic.rend3332 -logic.rend3332: - br label %logic.end3331 -logic.end3331: - %t42 = phi i1 [ false, %logic.from3329 ], [ %t41, %logic.rend3332 ] - br label %logic.from3333 -logic.from3333: - br i1 %t42, label %logic.rhs3334, label %logic.end3335 -logic.rhs3334: + br label %logic.rend3616 +logic.rend3616: + br label %logic.end3615 +logic.end3615: + %t42 = phi i1 [ false, %logic.from3613 ], [ %t41, %logic.rend3616 ] + br label %logic.from3617 +logic.from3617: + br i1 %t42, label %logic.rhs3618, label %logic.end3619 +logic.rhs3618: %t43 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 2 %t44 = load { ptr, i64, i64 }, ptr %t43 %t45 = load { ptr, i64, i64 }, ptr %a4 @@ -30418,36 +34220,36 @@ logic.rhs3334: store { ptr, i64, i64 } %t45, ptr %a47 %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) %t49 = icmp ne i32 %t48, 0 - br label %logic.rend3336 -logic.rend3336: - br label %logic.end3335 -logic.end3335: - %t50 = phi i1 [ false, %logic.from3333 ], [ %t49, %logic.rend3336 ] - br label %logic.from3337 -logic.from3337: - br i1 %t50, label %logic.rhs3338, label %logic.end3339 -logic.rhs3338: + br label %logic.rend3620 +logic.rend3620: + br label %logic.end3619 +logic.end3619: + %t50 = phi i1 [ false, %logic.from3617 ], [ %t49, %logic.rend3620 ] + br label %logic.from3621 +logic.from3621: + br i1 %t50, label %logic.rhs3622, label %logic.end3623 +logic.rhs3622: %t51 = getelementptr inbounds %S.gen.Template, ptr %a27, i32 0, i32 6 %t52 = load i1, ptr %t51 %t53 = load i1, ptr %a5 %t54 = icmp eq i1 %t52, %t53 - br label %logic.rend3340 -logic.rend3340: - br label %logic.end3339 -logic.end3339: - %t55 = phi i1 [ false, %logic.from3337 ], [ %t54, %logic.rend3340 ] - br i1 %t55, label %then3341, label %endif3343 -then3341: + br label %logic.rend3624 +logic.rend3624: + br label %logic.end3623 +logic.end3623: + %t55 = phi i1 [ false, %logic.from3621 ], [ %t54, %logic.rend3624 ] + br i1 %t55, label %then3625, label %endif3627 +then3625: %t56 = load i64, ptr %a11 ret i64 %t56 -endif3343: - br label %for.step3323 -for.step3323: +endif3627: + br label %for.step3607 +for.step3607: %t57 = load i64, ptr %a11 %t58 = add i64 %t57, 1 store i64 %t58, ptr %a11 - br label %for.cond3321 -for.end3324: + br label %for.cond3605 +for.end3608: ret i64 -1 } @@ -30462,14 +34264,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 store i64 0, ptr %a3 - br label %each.cond3344 -each.cond3344: + br label %each.cond3628 +each.cond3628: %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = load i64, ptr %a3 %t7 = icmp slt i64 %t6, %t5 - br i1 %t7, label %each.body3345, label %each.end3347 -each.body3345: + br i1 %t7, label %each.body3629, label %each.end3631 +each.body3629: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 %t6 %t10 = load %S.ast.Type, ptr %t9 @@ -30484,15 +34286,15 @@ each.body3345: %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i64 %t15 store { ptr, i64, i64 } %t14, ptr %t18 store i64 %t16, ptr %t12 - br label %each.step3346 -each.step3346: + br label %each.step3630 +each.step3630: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %each.cond3344 -each.end3347: + br label %each.cond3628 +each.end3631: %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2073, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2286, i64 2, i64 0 }, ptr %a22 call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) %t24 = load { ptr, i64, i64 }, ptr %a23 ret { ptr, i64, i64 } %t24 @@ -30581,21 +34383,21 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load { ptr, i64, i64 }, ptr %a2 %t8 = load { ptr, i64, i64 }, ptr %a3 - %t9 = call i64 @finch.gen.findTemplate(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, { ptr, i64, i64 } { ptr @.str.2074, i64 0, i64 0 }, i1 true) + %t9 = call i64 @finch.gen.findTemplate(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, { ptr, i64, i64 } { ptr @.str.2287, i64 0, i64 0 }, i1 true) store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then3348, label %endif3350 -then3348: + br i1 %t12, label %then3632, label %endif3634 +then3632: %t13 = load ptr, ptr %a1 %t14 = load %S.ast.Node, ptr %a5 %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2075, i64 34, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2288, i64 34, i64 0 }, ptr %a17 store { ptr, i64, i64 } %t15, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2076, i64 28, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2289, i64 28, i64 0 }, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 %t24 = load { ptr, i64, i64 }, ptr %a3 @@ -30604,29 +34406,29 @@ then3348: call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) %t28 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2077, i64 34, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.2290, i64 34, i64 0 }, ptr %a31 call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t32) - br label %endif3350 -endif3350: + br label %endif3634 +endif3634: %t33 = load ptr, ptr %a1 %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2078, i64 1345, ptr @.str.2079) + br i1 %t34, label %panic3635, label %ok3636 +panic3635: + call void @finch_panic(ptr @.str.2291, i64 1469, ptr @.str.2292) unreachable -ok3352: +ok3636: %t35 = getelementptr inbounds %S.gen.Gen, ptr %t33, i32 0, i32 16 %t36 = load i64, ptr %a10 %t37 = load { ptr, i64, i64 }, ptr %t35 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2080, i64 1345, i64 %t36, i64 %t38) + br i1 %t39, label %range3637, label %inrange3638 +range3637: + call void @finch_panic_index(ptr @.str.2293, i64 1469, i64 %t36, i64 %t38) unreachable -inrange3354: +inrange3638: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.gen.Template, ptr %t40, i64 %t36 %t42 = load %S.gen.Template, ptr %t41 @@ -30640,13 +34442,13 @@ inrange3354: %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 %t51 = load i64, ptr %t50 %t52 = icmp ne i64 %t48, %t51 - br i1 %t52, label %then3355, label %endif3357 -then3355: + br i1 %t52, label %then3639, label %endif3641 +then3639: %t53 = load ptr, ptr %a1 %t54 = load %S.ast.Node, ptr %a5 %t55 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.2081, i64 7, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.2294, i64 7, i64 0 }, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 %t60 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 @@ -30659,7 +34461,7 @@ then3355: call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.2082, i64 24, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.2295, i64 24, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = load { ptr, i64, i64 }, ptr %a3 @@ -30668,12 +34470,12 @@ then3355: call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.2083, i64 1, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.2296, i64 1, i64 0 }, ptr %a80 call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) %t81 = load { ptr, i64, i64 }, ptr %a78 %t82 = getelementptr inbounds %S.gen.Template, ptr %a46, i32 0, i32 3 %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.2297, i64 2, i64 0 }, ptr %a84 call void @finch_str_join(ptr %a85, ptr %t82, ptr %a84) %t86 = load { ptr, i64, i64 }, ptr %a85 store { ptr, i64, i64 } %t81, ptr %a88 @@ -30681,7 +34483,7 @@ then3355: call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.2085, i64 11, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.2298, i64 11, i64 0 }, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 @@ -30693,11 +34495,11 @@ then3355: call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } %t102) - br label %endif3357 -endif3357: + br label %endif3641 +endif3641: %t103 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2086, i64 1, i64 0 }, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.2299, i64 1, i64 0 }, ptr %a106 call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) %t107 = load { ptr, i64, i64 }, ptr %a104 %t108 = load { ptr, i64, i64 }, ptr %a4 @@ -30707,7 +34509,7 @@ endif3357: call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) %t113 = load { ptr, i64, i64 }, ptr %a110 store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.2087, i64 1, i64 0 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.2300, i64 1, i64 0 }, ptr %a116 call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 store { ptr, i64, i64 } %t117, ptr %a118 @@ -30716,15 +34518,15 @@ endif3357: %t121 = load { ptr, i64, i64 }, ptr %a118 %t122 = call i64 @finch.gen.findStruct(ptr %t119, { ptr, i64, i64 } %t120, { ptr, i64, i64 } %t121) %t123 = icmp slt i64 %t122, 0 - br i1 %t123, label %then3358, label %endif3360 -then3358: + br i1 %t123, label %then3642, label %endif3644 +then3642: %t124 = load ptr, ptr %a1 %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3361, label %ok3362 -panic3361: - call void @finch_panic(ptr @.str.2088, i64 1351, ptr @.str.2089) + br i1 %t125, label %panic3645, label %ok3646 +panic3645: + call void @finch_panic(ptr @.str.2301, i64 1475, ptr @.str.2302) unreachable -ok3362: +ok3646: %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 15 %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1 %t128 = load { ptr, i64, i64 }, ptr %a2 @@ -30769,19 +34571,19 @@ ok3362: %t164 = load ptr, ptr %a1 %t165 = load ptr, ptr %a1 %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3363, label %ok3364 -panic3363: - call void @finch_panic(ptr @.str.2090, i64 1352, ptr @.str.2091) + br i1 %t166, label %panic3647, label %ok3648 +panic3647: + call void @finch_panic(ptr @.str.2303, i64 1476, ptr @.str.2304) unreachable -ok3364: +ok3648: %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 15 %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 %t169 = load i64, ptr %t168 %t170 = sub i64 %t169, 1 call void @finch.gen.resolveStruct(ptr %t164, i64 %t170) - br label %endif3360 -endif3360: - %t171 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2092, i64 6, i64 0 }, 0 + br label %endif3644 +endif3644: + %t171 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2305, i64 6, i64 0 }, 0 %t172 = load { ptr, i64, i64 }, ptr %a118 store { ptr, i64, i64 } %t172, ptr %a173 call void @finch_str_copy(ptr %a174, ptr %a173) @@ -30917,21 +34719,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3365, label %ok3366 -panic3365: - call void @finch_panic(ptr @.str.2093, i64 1359, ptr @.str.2094) + br i1 %t7, label %panic3649, label %ok3650 +panic3649: + call void @finch_panic(ptr @.str.2306, i64 1483, ptr @.str.2307) unreachable -ok3366: +ok3650: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 %t9 = load i64, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range3367, label %inrange3368 -range3367: - call void @finch_panic_index(ptr @.str.2095, i64 1359, i64 %t9, i64 %t11) + br i1 %t12, label %range3651, label %inrange3652 +range3651: + call void @finch_panic_index(ptr @.str.2308, i64 1483, i64 %t9, i64 %t11) unreachable -inrange3368: +inrange3652: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -30942,7 +34744,7 @@ inrange3368: %t20 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.2096, i64 1, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.2309, i64 1, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load { ptr, i64, i64 }, ptr %a3 @@ -30952,7 +34754,7 @@ inrange3368: call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t31, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.2097, i64 1, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.2310, i64 1, i64 0 }, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t35, ptr %a36 @@ -30960,8 +34762,8 @@ inrange3368: %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 %t39 = load i64, ptr %t38 %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then3369, label %else3370 -then3369: + br i1 %t40, label %then3653, label %else3654 +then3653: %t41 = load ptr, ptr %a1 %t42 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -30973,13 +34775,13 @@ then3369: store i64 %t48, ptr %a49 %t50 = load i64, ptr %a49 %t51 = icmp sge i64 %t50, 0 - br i1 %t51, label %then3372, label %endif3374 -then3372: + br i1 %t51, label %then3656, label %endif3658 +then3656: %t52 = load i64, ptr %a49 ret i64 %t52 -endif3374: - br label %endif3371 -else3370: +endif3658: + br label %endif3655 +else3654: %t53 = load ptr, ptr %a1 %t54 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 %t55 = load { ptr, i64, i64 }, ptr %t54 @@ -30988,31 +34790,31 @@ else3370: store i64 %t57, ptr %a58 %t59 = load i64, ptr %a58 %t60 = icmp sge i64 %t59, 0 - br i1 %t60, label %then3375, label %endif3377 -then3375: + br i1 %t60, label %then3659, label %endif3661 +then3659: %t61 = load i64, ptr %a58 ret i64 %t61 -endif3377: - br label %endif3371 -endif3371: +endif3661: + br label %endif3655 +endif3655: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3378, label %ok3379 -panic3378: - call void @finch_panic(ptr @.str.2098, i64 1372, ptr @.str.2099) + br i1 %t63, label %panic3662, label %ok3663 +panic3662: + call void @finch_panic(ptr @.str.2311, i64 1496, ptr @.str.2312) unreachable -ok3379: +ok3663: %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 0 %t65 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 %t66 = load i64, ptr %t65 %t67 = load { ptr, i64, i64 }, ptr %t64 %t68 = extractvalue { ptr, i64, i64 } %t67, 1 %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range3380, label %inrange3381 -range3380: - call void @finch_panic_index(ptr @.str.2100, i64 1372, i64 %t66, i64 %t68) + br i1 %t69, label %range3664, label %inrange3665 +range3664: + call void @finch_panic_index(ptr @.str.2313, i64 1496, i64 %t66, i64 %t68) unreachable -inrange3381: +inrange3665: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds %S.ast.Program, ptr %t70, i64 %t66 %t72 = getelementptr inbounds %S.ast.Program, ptr %t71, i32 0, i32 8 @@ -31021,11 +34823,11 @@ inrange3381: %t75 = load { ptr, i64, i64 }, ptr %t72 %t76 = extractvalue { ptr, i64, i64 } %t75, 1 %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range3382, label %inrange3383 -range3382: - call void @finch_panic_index(ptr @.str.2101, i64 1372, i64 %t74, i64 %t76) + br i1 %t77, label %range3666, label %inrange3667 +range3666: + call void @finch_panic_index(ptr @.str.2314, i64 1496, i64 %t74, i64 %t76) unreachable -inrange3383: +inrange3667: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Node, ptr %t78, i64 %t74 %t80 = load %S.ast.Node, ptr %t79 @@ -31082,12 +34884,12 @@ inrange3383: %t131 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 %t132 = load { ptr, i64, i64 }, ptr %t131 %t133 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t132) - store { ptr, i64, i64 } { ptr @.str.2102, i64 7, i64 0 }, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.2315, i64 7, i64 0 }, ptr %a135 store { ptr, i64, i64 } %t133, ptr %a136 call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) %t137 = load { ptr, i64, i64 }, ptr %a134 store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.2103, i64 1, i64 0 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.2316, i64 1, i64 0 }, ptr %a140 call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) %t141 = load { ptr, i64, i64 }, ptr %a138 %t142 = load { ptr, i64, i64 }, ptr %a36 @@ -31102,8 +34904,8 @@ inrange3383: %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 %t151 = load i64, ptr %t150 %t152 = icmp sgt i64 %t151, 0 - br i1 %t152, label %then3384, label %endif3386 -then3384: + br i1 %t152, label %then3668, label %endif3670 +then3668: %t153 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 %t154 = load { ptr, i64, i64 }, ptr %t153 %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 1 @@ -31121,7 +34923,7 @@ then3384: %t165 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 %t166 = load { ptr, i64, i64 }, ptr %t165 store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.2104, i64 1, i64 0 }, ptr %a169 + store { ptr, i64, i64 } { ptr @.str.2317, i64 1, i64 0 }, ptr %a169 call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 %t171 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 @@ -31135,12 +34937,12 @@ then3384: %t178 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 %t180 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } { ptr @.str.2105, i64 7, i64 0 }, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.2318, i64 7, i64 0 }, ptr %a182 store { ptr, i64, i64 } %t180, ptr %a183 call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) %t184 = load { ptr, i64, i64 }, ptr %a181 store { ptr, i64, i64 } %t184, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2106, i64 1, i64 0 }, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.2319, i64 1, i64 0 }, ptr %a187 call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187) %t188 = load { ptr, i64, i64 }, ptr %a185 %t189 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 @@ -31151,7 +34953,7 @@ then3384: call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) %t195 = load { ptr, i64, i64 }, ptr %a192 store { ptr, i64, i64 } %t195, ptr %a197 - store { ptr, i64, i64 } { ptr @.str.2107, i64 1, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.2320, i64 1, i64 0 }, ptr %a198 call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 %t200 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 @@ -31162,15 +34964,15 @@ then3384: %t205 = load { ptr, i64, i64 }, ptr %a202 %t206 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 11 store { ptr, i64, i64 } %t205, ptr %t206 - br label %endif3386 -endif3386: + br label %endif3670 +endif3670: %t207 = load ptr, ptr %a1 %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3387, label %ok3388 -panic3387: - call void @finch_panic(ptr @.str.2108, i64 1381, ptr @.str.2109) + br i1 %t208, label %panic3671, label %ok3672 +panic3671: + call void @finch_panic(ptr @.str.2321, i64 1505, ptr @.str.2322) unreachable -ok3388: +ok3672: %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 17 %t210 = load { ptr, i64, i64 }, ptr %t209 store { ptr, i64, i64 } %t210, ptr %a211 @@ -31179,11 +34981,11 @@ ok3388: store { ptr, i64, i64 } %t213, ptr %a214 %t215 = load ptr, ptr %a1 %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3389, label %ok3390 -panic3389: - call void @finch_panic(ptr @.str.2110, i64 1382, ptr @.str.2111) + br i1 %t216, label %panic3673, label %ok3674 +panic3673: + call void @finch_panic(ptr @.str.2323, i64 1506, ptr @.str.2324) unreachable -ok3390: +ok3674: %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 18 %t218 = load { ptr, i64, i64 }, ptr %t217 store { ptr, i64, i64 } %t218, ptr %a219 @@ -31192,11 +34994,11 @@ ok3390: store { ptr, i64, i64 } %t221, ptr %a222 %t223 = load ptr, ptr %a1 %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic3391, label %ok3392 -panic3391: - call void @finch_panic(ptr @.str.2112, i64 1383, ptr @.str.2113) + br i1 %t224, label %panic3675, label %ok3676 +panic3675: + call void @finch_panic(ptr @.str.2325, i64 1507, ptr @.str.2326) unreachable -ok3392: +ok3676: %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 13 %t226 = load { ptr, i64, i64 }, ptr %t225 store { ptr, i64, i64 } %t226, ptr %a227 @@ -31205,11 +35007,11 @@ ok3392: store { ptr, i64, i64 } %t229, ptr %a230 %t231 = load ptr, ptr %a1 %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3393, label %ok3394 -panic3393: - call void @finch_panic(ptr @.str.2114, i64 1384, ptr @.str.2115) + br i1 %t232, label %panic3677, label %ok3678 +panic3677: + call void @finch_panic(ptr @.str.2327, i64 1508, ptr @.str.2328) unreachable -ok3394: +ok3678: %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 19 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 @@ -31220,11 +35022,11 @@ ok3394: %t240 = load { ptr, i64, i64 }, ptr %t239 %t241 = load ptr, ptr %a1 %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3395, label %ok3396 -panic3395: - call void @finch_panic(ptr @.str.2116, i64 1385, ptr @.str.2117) + br i1 %t242, label %panic3679, label %ok3680 +panic3679: + call void @finch_panic(ptr @.str.2329, i64 1509, ptr @.str.2330) unreachable -ok3396: +ok3680: %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 17 store { ptr, i64, i64 } %t240, ptr %a244 call void @finch.copy.arr_str(ptr %a245, ptr %a244) @@ -31233,11 +35035,11 @@ ok3396: %t247 = load { ptr, i64, i64 }, ptr %a3 %t248 = load ptr, ptr %a1 %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2118, i64 1386, ptr @.str.2119) + br i1 %t249, label %panic3681, label %ok3682 +panic3681: + call void @finch_panic(ptr @.str.2331, i64 1510, ptr @.str.2332) unreachable -ok3398: +ok3682: %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 18 store { ptr, i64, i64 } %t247, ptr %a251 call void @finch.copy.arr_S_ast_Type(ptr %a252, ptr %a251) @@ -31247,11 +35049,11 @@ ok3398: %t255 = load { ptr, i64, i64 }, ptr %t254 %t256 = load ptr, ptr %a1 %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2120, i64 1387, ptr @.str.2121) + br i1 %t257, label %panic3683, label %ok3684 +panic3683: + call void @finch_panic(ptr @.str.2333, i64 1511, ptr @.str.2334) unreachable -ok3400: +ok3684: %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 13 store { ptr, i64, i64 } %t255, ptr %a259 call void @finch_str_copy(ptr %a260, ptr %a259) @@ -31259,21 +35061,21 @@ ok3400: store { ptr, i64, i64 } %t261, ptr %t258 %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a130, i32 0, i32 8 %t263 = load { ptr, i64, i64 }, ptr %t262 - store { ptr, i64, i64 } { ptr @.str.2122, i64 17, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.2335, i64 17, i64 0 }, ptr %a265 store { ptr, i64, i64 } %t263, ptr %a266 call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) %t267 = load { ptr, i64, i64 }, ptr %a264 store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.2123, i64 1, i64 0 }, ptr %a270 + store { ptr, i64, i64 } { ptr @.str.2336, i64 1, i64 0 }, ptr %a270 call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) %t271 = load { ptr, i64, i64 }, ptr %a268 %t272 = load ptr, ptr %a1 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2124, i64 1388, ptr @.str.2125) + br i1 %t273, label %panic3685, label %ok3686 +panic3685: + call void @finch_panic(ptr @.str.2337, i64 1512, ptr @.str.2338) unreachable -ok3402: +ok3686: %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 19 store { ptr, i64, i64 } %t271, ptr %t274 %t275 = load ptr, ptr %a1 @@ -31291,11 +35093,11 @@ ok3402: %t286 = load { ptr, i64, i64 }, ptr %t281 %t287 = extractvalue { ptr, i64, i64 } %t286, 1 %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range3403, label %inrange3404 -range3403: - call void @finch_panic_index(ptr @.str.2126, i64 1390, i64 %t285, i64 %t287) + br i1 %t288, label %range3687, label %inrange3688 +range3687: + call void @finch_panic_index(ptr @.str.2339, i64 1514, i64 %t285, i64 %t287) unreachable -inrange3404: +inrange3688: %t289 = extractvalue { ptr, i64, i64 } %t286, 0 %t290 = getelementptr inbounds %S.ast.Node, ptr %t289, i64 %t285 %t291 = load %S.ast.Node, ptr %t290 @@ -31308,23 +35110,23 @@ inrange3404: %t298 = load i64, ptr %t297 %t299 = sub i64 %t298, 1 store i64 0, ptr %a300 - br label %for.cond3405 -for.cond3405: + br label %for.cond3689 +for.cond3689: %t301 = load i64, ptr %a300 %t302 = icmp slt i64 %t301, %t299 - br i1 %t302, label %for.body3406, label %for.end3408 -for.body3406: + br i1 %t302, label %for.body3690, label %for.end3692 +for.body3690: %t303 = load ptr, ptr %a1 %t304 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 %t305 = load i64, ptr %a300 %t306 = load { ptr, i64, i64 }, ptr %t304 %t307 = extractvalue { ptr, i64, i64 } %t306, 1 %t308 = icmp uge i64 %t305, %t307 - br i1 %t308, label %range3409, label %inrange3410 -range3409: - call void @finch_panic_index(ptr @.str.2127, i64 1392, i64 %t305, i64 %t307) + br i1 %t308, label %range3693, label %inrange3694 +range3693: + call void @finch_panic_index(ptr @.str.2340, i64 1516, i64 %t305, i64 %t307) unreachable -inrange3410: +inrange3694: %t309 = extractvalue { ptr, i64, i64 } %t306, 0 %t310 = getelementptr inbounds %S.ast.Node, ptr %t309, i64 %t305 %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i32 0, i32 5 @@ -31334,11 +35136,11 @@ inrange3410: %t315 = load { ptr, i64, i64 }, ptr %t313 %t316 = extractvalue { ptr, i64, i64 } %t315, 1 %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range3411, label %inrange3412 -range3411: - call void @finch_panic_index(ptr @.str.2128, i64 1392, i64 %t314, i64 %t316) + br i1 %t317, label %range3695, label %inrange3696 +range3695: + call void @finch_panic_index(ptr @.str.2341, i64 1516, i64 %t314, i64 %t316) unreachable -inrange3412: +inrange3696: %t318 = extractvalue { ptr, i64, i64 } %t315, 0 %t319 = getelementptr inbounds %S.ast.Node, ptr %t318, i64 %t314 %t320 = load %S.ast.Node, ptr %t319 @@ -31364,11 +35166,11 @@ inrange3412: %t337 = load { ptr, i64, i64 }, ptr %t335 %t338 = extractvalue { ptr, i64, i64 } %t337, 1 %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range3413, label %inrange3414 -range3413: - call void @finch_panic_index(ptr @.str.2129, i64 1394, i64 %t336, i64 %t338) + br i1 %t339, label %range3697, label %inrange3698 +range3697: + call void @finch_panic_index(ptr @.str.2342, i64 1518, i64 %t336, i64 %t338) unreachable -inrange3414: +inrange3698: %t340 = extractvalue { ptr, i64, i64 } %t337, 0 %t341 = getelementptr inbounds %S.ast.Node, ptr %t340, i64 %t336 %t342 = getelementptr inbounds %S.ast.Node, ptr %t341, i32 0, i32 1 @@ -31388,21 +35190,21 @@ inrange3414: %t353 = load ptr, ptr %a1 %t354 = load %S.ast.Type, ptr %a322 %t355 = call i1 @finch.gen.owning(ptr %t353, %S.ast.Type %t354) - br label %logic.from3415 -logic.from3415: - br i1 %t355, label %logic.rhs3416, label %logic.end3417 -logic.rhs3416: + br label %logic.from3699 +logic.from3699: + br i1 %t355, label %logic.rhs3700, label %logic.end3701 +logic.rhs3700: %t356 = load ptr, ptr %a1 %t357 = getelementptr inbounds %S.ast.Node, ptr %a84, i32 0, i32 9 %t358 = load i64, ptr %a300 %t359 = load { ptr, i64, i64 }, ptr %t357 %t360 = extractvalue { ptr, i64, i64 } %t359, 1 %t361 = icmp uge i64 %t358, %t360 - br i1 %t361, label %range3418, label %inrange3419 -range3418: - call void @finch_panic_index(ptr @.str.2130, i64 1395, i64 %t358, i64 %t360) + br i1 %t361, label %range3702, label %inrange3703 +range3702: + call void @finch_panic_index(ptr @.str.2343, i64 1519, i64 %t358, i64 %t360) unreachable -inrange3419: +inrange3703: %t362 = extractvalue { ptr, i64, i64 } %t359, 0 %t363 = getelementptr inbounds %S.ast.Node, ptr %t362, i64 %t358 %t364 = getelementptr inbounds %S.ast.Node, ptr %t363, i32 0, i32 1 @@ -31410,11 +35212,11 @@ inrange3419: %t366 = load %S.ast.Node, ptr %a295 %t367 = call i1 @finch.gen.mutates(ptr %t356, { ptr, i64, i64 } %t365, %S.ast.Node %t366) %t368 = xor i1 %t367, true - br label %logic.rend3420 -logic.rend3420: - br label %logic.end3417 -logic.end3417: - %t369 = phi i1 [ false, %logic.from3415 ], [ %t368, %logic.rend3420 ] + br label %logic.rend3704 +logic.rend3704: + br label %logic.end3701 +logic.end3701: + %t369 = phi i1 [ false, %logic.from3699 ], [ %t368, %logic.rend3704 ] %t370 = load i64, ptr %t352 %t371 = add i64 %t370, 1 call void @finch_arr_reserve(ptr %t351, i64 %t371, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) @@ -31422,21 +35224,21 @@ logic.end3417: %t373 = getelementptr inbounds i1, ptr %t372, i64 %t370 store i1 %t369, ptr %t373 store i64 %t371, ptr %t352 - br label %for.step3407 -for.step3407: + br label %for.step3691 +for.step3691: %t374 = load i64, ptr %a300 %t375 = add i64 %t374, 1 store i64 %t375, ptr %a300 - br label %for.cond3405 -for.end3408: + br label %for.cond3689 +for.end3692: %t376 = load { ptr, i64, i64 }, ptr %a214 %t377 = load ptr, ptr %a1 %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic3421, label %ok3422 -panic3421: - call void @finch_panic(ptr @.str.2131, i64 1397, ptr @.str.2132) + br i1 %t378, label %panic3705, label %ok3706 +panic3705: + call void @finch_panic(ptr @.str.2344, i64 1521, ptr @.str.2345) unreachable -ok3422: +ok3706: %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 17 store { ptr, i64, i64 } %t376, ptr %a380 call void @finch.copy.arr_str(ptr %a381, ptr %a380) @@ -31445,11 +35247,11 @@ ok3422: %t383 = load { ptr, i64, i64 }, ptr %a222 %t384 = load ptr, ptr %a1 %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic3423, label %ok3424 -panic3423: - call void @finch_panic(ptr @.str.2133, i64 1398, ptr @.str.2134) + br i1 %t385, label %panic3707, label %ok3708 +panic3707: + call void @finch_panic(ptr @.str.2346, i64 1522, ptr @.str.2347) unreachable -ok3424: +ok3708: %t386 = getelementptr inbounds %S.gen.Gen, ptr %t384, i32 0, i32 18 store { ptr, i64, i64 } %t383, ptr %a387 call void @finch.copy.arr_S_ast_Type(ptr %a388, ptr %a387) @@ -31458,11 +35260,11 @@ ok3424: %t390 = load { ptr, i64, i64 }, ptr %a230 %t391 = load ptr, ptr %a1 %t392 = icmp eq ptr %t391, null - br i1 %t392, label %panic3425, label %ok3426 -panic3425: - call void @finch_panic(ptr @.str.2135, i64 1399, ptr @.str.2136) + br i1 %t392, label %panic3709, label %ok3710 +panic3709: + call void @finch_panic(ptr @.str.2348, i64 1523, ptr @.str.2349) unreachable -ok3426: +ok3710: %t393 = getelementptr inbounds %S.gen.Gen, ptr %t391, i32 0, i32 13 store { ptr, i64, i64 } %t390, ptr %a394 call void @finch_str_copy(ptr %a395, ptr %a394) @@ -31471,11 +35273,11 @@ ok3426: %t397 = load { ptr, i64, i64 }, ptr %a238 %t398 = load ptr, ptr %a1 %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic3427, label %ok3428 -panic3427: - call void @finch_panic(ptr @.str.2137, i64 1400, ptr @.str.2138) + br i1 %t399, label %panic3711, label %ok3712 +panic3711: + call void @finch_panic(ptr @.str.2350, i64 1524, ptr @.str.2351) unreachable -ok3428: +ok3712: %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 19 store { ptr, i64, i64 } %t397, ptr %a401 call void @finch_str_copy(ptr %a402, ptr %a401) @@ -31483,11 +35285,11 @@ ok3428: store { ptr, i64, i64 } %t403, ptr %t400 %t404 = load ptr, ptr %a1 %t405 = icmp eq ptr %t404, null - br i1 %t405, label %panic3429, label %ok3430 -panic3429: - call void @finch_panic(ptr @.str.2139, i64 1401, ptr @.str.2140) + br i1 %t405, label %panic3713, label %ok3714 +panic3713: + call void @finch_panic(ptr @.str.2352, i64 1525, ptr @.str.2353) unreachable -ok3430: +ok3714: %t406 = getelementptr inbounds %S.gen.Gen, ptr %t404, i32 0, i32 14 %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i32 0, i32 1 %t408 = load %S.gen.FnSig, ptr %a130 @@ -31503,11 +35305,11 @@ ok3430: store i64 %t413, ptr %t407 %t416 = load ptr, ptr %a1 %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2141, i64 1402, ptr @.str.2142) + br i1 %t417, label %panic3715, label %ok3716 +panic3715: + call void @finch_panic(ptr @.str.2354, i64 1526, ptr @.str.2355) unreachable -ok3432: +ok3716: %t418 = getelementptr inbounds %S.gen.Gen, ptr %t416, i32 0, i32 14 %t419 = getelementptr inbounds { ptr, i64, i64 }, ptr %t418, i32 0, i32 1 %t420 = load i64, ptr %t419 @@ -31565,39 +35367,39 @@ entry: %t6 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t7 = load { ptr, i64, i64 }, ptr %t6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2143, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2356, i64 5, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 - br label %logic.from3433 -logic.from3433: - br i1 %t11, label %logic.rhs3434, label %logic.end3435 -logic.rhs3434: + br label %logic.from3717 +logic.from3717: + br i1 %t11, label %logic.rhs3718, label %logic.end3719 +logic.rhs3718: %t12 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 %t14 = load i64, ptr %t13 %t15 = icmp eq i64 %t14, 0 - br label %logic.rend3436 -logic.rend3436: - br label %logic.end3435 -logic.end3435: - %t16 = phi i1 [ false, %logic.from3433 ], [ %t15, %logic.rend3436 ] - br label %logic.from3437 -logic.from3437: - br i1 %t16, label %logic.rhs3438, label %logic.end3439 -logic.rhs3438: + br label %logic.rend3720 +logic.rend3720: + br label %logic.end3719 +logic.end3719: + %t16 = phi i1 [ false, %logic.from3717 ], [ %t15, %logic.rend3720 ] + br label %logic.from3721 +logic.from3721: + br i1 %t16, label %logic.rhs3722, label %logic.end3723 +logic.rhs3722: %t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 %t20 = icmp eq i64 %t19, 0 - br label %logic.rend3440 -logic.rend3440: - br label %logic.end3439 -logic.end3439: - %t21 = phi i1 [ false, %logic.from3437 ], [ %t20, %logic.rend3440 ] - br label %logic.from3441 -logic.from3441: - br i1 %t21, label %logic.rhs3442, label %logic.end3443 -logic.rhs3442: + br label %logic.rend3724 +logic.rend3724: + br label %logic.end3723 +logic.end3723: + %t21 = phi i1 [ false, %logic.from3721 ], [ %t20, %logic.rend3724 ] + br label %logic.from3725 +logic.from3725: + br i1 %t21, label %logic.rhs3726, label %logic.end3727 +logic.rhs3726: %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -31605,36 +35407,36 @@ logic.rhs3442: %t26 = load i64, ptr %t22 %t27 = load ptr, ptr %a4 store i64 0, ptr %a28 - br label %find.cond3444 -find.cond3444: + br label %find.cond3728 +find.cond3728: %t29 = load i64, ptr %a28 %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body3445, label %find.end3448 -find.body3445: + br i1 %t30, label %find.body3729, label %find.end3732 +find.body3729: %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 %t29 %t32 = load { ptr, i64, i64 }, ptr %t31 store { ptr, i64, i64 } %t32, ptr %a33 store { ptr, i64, i64 } %t24, ptr %a34 %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) %t36 = icmp ne i32 %t35, 0 - br i1 %t36, label %find.hit3446, label %find.next3447 -find.hit3446: + br i1 %t36, label %find.hit3730, label %find.next3731 +find.hit3730: store i64 %t29, ptr %a25 - br label %find.end3448 -find.next3447: + br label %find.end3732 +find.next3731: %t37 = add i64 %t29, 1 store i64 %t37, ptr %a28 - br label %find.cond3444 -find.end3448: + br label %find.cond3728 +find.end3732: %t38 = load i64, ptr %a25 %t39 = icmp sge i64 %t38, 0 - br label %logic.rend3449 -logic.rend3449: - br label %logic.end3443 -logic.end3443: - %t40 = phi i1 [ false, %logic.from3441 ], [ %t39, %logic.rend3449 ] - br i1 %t40, label %then3450, label %endif3452 -then3450: + br label %logic.rend3733 +logic.rend3733: + br label %logic.end3727 +logic.end3727: + %t40 = phi i1 [ false, %logic.from3725 ], [ %t39, %logic.rend3733 ] + br i1 %t40, label %then3734, label %endif3736 +then3734: %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 %t42 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 %t43 = load { ptr, i64, i64 }, ptr %t42 @@ -31642,70 +35444,70 @@ then3450: %t45 = load i64, ptr %t41 %t46 = load ptr, ptr %a4 store i64 0, ptr %a47 - br label %find.cond3453 -find.cond3453: + br label %find.cond3737 +find.cond3737: %t48 = load i64, ptr %a47 %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body3454, label %find.end3457 -find.body3454: + br i1 %t49, label %find.body3738, label %find.end3741 +find.body3738: %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t48 %t51 = load { ptr, i64, i64 }, ptr %t50 store { ptr, i64, i64 } %t51, ptr %a52 store { ptr, i64, i64 } %t43, ptr %a53 %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %find.hit3455, label %find.next3456 -find.hit3455: + br i1 %t55, label %find.hit3739, label %find.next3740 +find.hit3739: store i64 %t48, ptr %a44 - br label %find.end3457 -find.next3456: + br label %find.end3741 +find.next3740: %t56 = add i64 %t48, 1 store i64 %t56, ptr %a47 - br label %find.cond3453 -find.end3457: + br label %find.cond3737 +find.end3741: %t57 = load i64, ptr %a44 store i64 %t57, ptr %a58 %t59 = load ptr, ptr %a5 %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic3458, label %ok3459 -panic3458: - call void @finch_panic(ptr @.str.2144, i64 1409, ptr @.str.2145) + br i1 %t60, label %panic3742, label %ok3743 +panic3742: + call void @finch_panic(ptr @.str.2357, i64 1533, ptr @.str.2358) unreachable -ok3459: +ok3743: %t61 = getelementptr inbounds %S.gen.Binds, ptr %t59, i32 0, i32 1 %t62 = load i64, ptr %a58 %t63 = load { ptr, i64, i64 }, ptr %t61 %t64 = extractvalue { ptr, i64, i64 } %t63, 1 %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range3460, label %inrange3461 -range3460: - call void @finch_panic_index(ptr @.str.2146, i64 1409, i64 %t62, i64 %t64) + br i1 %t65, label %range3744, label %inrange3745 +range3744: + call void @finch_panic_index(ptr @.str.2359, i64 1533, i64 %t62, i64 %t64) unreachable -inrange3461: +inrange3745: %t66 = extractvalue { ptr, i64, i64 } %t63, 0 %t67 = getelementptr inbounds i1, ptr %t66, i64 %t62 %t68 = load i1, ptr %t67 %t69 = xor i1 %t68, true - br i1 %t69, label %then3462, label %endif3464 -then3462: + br i1 %t69, label %then3746, label %endif3748 +then3746: %t70 = load %S.ast.Type, ptr %a3 %t71 = load ptr, ptr %a5 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3465, label %ok3466 -panic3465: - call void @finch_panic(ptr @.str.2147, i64 1410, ptr @.str.2148) + br i1 %t72, label %panic3749, label %ok3750 +panic3749: + call void @finch_panic(ptr @.str.2360, i64 1534, ptr @.str.2361) unreachable -ok3466: +ok3750: %t73 = getelementptr inbounds %S.gen.Binds, ptr %t71, i32 0, i32 0 %t74 = load i64, ptr %a58 %t75 = load { ptr, i64, i64 }, ptr %t73 %t76 = extractvalue { ptr, i64, i64 } %t75, 1 %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range3467, label %inrange3468 -range3467: - call void @finch_panic_index(ptr @.str.2149, i64 1410, i64 %t74, i64 %t76) + br i1 %t77, label %range3751, label %inrange3752 +range3751: + call void @finch_panic_index(ptr @.str.2362, i64 1534, i64 %t74, i64 %t76) unreachable -inrange3468: +inrange3752: %t78 = extractvalue { ptr, i64, i64 } %t75, 0 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 store %S.ast.Type %t70, ptr %a80 @@ -31714,81 +35516,81 @@ inrange3468: store %S.ast.Type %t82, ptr %t79 %t83 = load ptr, ptr %a5 %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic3469, label %ok3470 -panic3469: - call void @finch_panic(ptr @.str.2150, i64 1411, ptr @.str.2151) + br i1 %t84, label %panic3753, label %ok3754 +panic3753: + call void @finch_panic(ptr @.str.2363, i64 1535, ptr @.str.2364) unreachable -ok3470: +ok3754: %t85 = getelementptr inbounds %S.gen.Binds, ptr %t83, i32 0, i32 1 %t86 = load i64, ptr %a58 %t87 = load { ptr, i64, i64 }, ptr %t85 %t88 = extractvalue { ptr, i64, i64 } %t87, 1 %t89 = icmp uge i64 %t86, %t88 - br i1 %t89, label %range3471, label %inrange3472 -range3471: - call void @finch_panic_index(ptr @.str.2152, i64 1411, i64 %t86, i64 %t88) + br i1 %t89, label %range3755, label %inrange3756 +range3755: + call void @finch_panic_index(ptr @.str.2365, i64 1535, i64 %t86, i64 %t88) unreachable -inrange3472: +inrange3756: %t90 = extractvalue { ptr, i64, i64 } %t87, 0 %t91 = getelementptr inbounds i1, ptr %t90, i64 %t86 store i1 true, ptr %t91 - br label %endif3464 -endif3464: + br label %endif3748 +endif3748: ret void -endif3452: +endif3736: %t92 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t93 = load { ptr, i64, i64 }, ptr %t92 store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.2153, i64 5, i64 0 }, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.2366, i64 5, i64 0 }, ptr %a95 %t96 = call i32 @finch_str_eq(ptr %a94, ptr %a95) %t97 = icmp ne i32 %t96, 0 - br label %logic.from3473 -logic.from3473: - br i1 %t97, label %logic.end3475, label %logic.rhs3474 -logic.rhs3474: + br label %logic.from3757 +logic.from3757: + br i1 %t97, label %logic.end3759, label %logic.rhs3758 +logic.rhs3758: %t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t99 = load { ptr, i64, i64 }, ptr %t98 store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.2154, i64 3, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.2367, i64 3, i64 0 }, ptr %a101 %t102 = call i32 @finch_str_eq(ptr %a100, ptr %a101) %t103 = icmp ne i32 %t102, 0 - br label %logic.rend3476 -logic.rend3476: - br label %logic.end3475 -logic.end3475: - %t104 = phi i1 [ true, %logic.from3473 ], [ %t103, %logic.rend3476 ] - br label %logic.from3477 -logic.from3477: - br i1 %t104, label %logic.end3479, label %logic.rhs3478 -logic.rhs3478: + br label %logic.rend3760 +logic.rend3760: + br label %logic.end3759 +logic.end3759: + %t104 = phi i1 [ true, %logic.from3757 ], [ %t103, %logic.rend3760 ] + br label %logic.from3761 +logic.from3761: + br i1 %t104, label %logic.end3763, label %logic.rhs3762 +logic.rhs3762: %t105 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t106 = load { ptr, i64, i64 }, ptr %t105 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.2155, i64 5, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.2368, i64 5, i64 0 }, ptr %a108 %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) %t110 = icmp ne i32 %t109, 0 - br label %logic.rend3480 -logic.rend3480: - br label %logic.end3479 -logic.end3479: - %t111 = phi i1 [ true, %logic.from3477 ], [ %t110, %logic.rend3480 ] - br label %logic.from3481 -logic.from3481: - br i1 %t111, label %logic.rhs3482, label %logic.end3483 -logic.rhs3482: + br label %logic.rend3764 +logic.rend3764: + br label %logic.end3763 +logic.end3763: + %t111 = phi i1 [ true, %logic.from3761 ], [ %t110, %logic.rend3764 ] + br label %logic.from3765 +logic.from3765: + br i1 %t111, label %logic.rhs3766, label %logic.end3767 +logic.rhs3766: %t112 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = icmp sgt i64 %t114, 0 - br label %logic.rend3484 -logic.rend3484: - br label %logic.end3483 -logic.end3483: - %t116 = phi i1 [ false, %logic.from3481 ], [ %t115, %logic.rend3484 ] - br label %logic.from3485 -logic.from3485: - br i1 %t116, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: + br label %logic.rend3768 +logic.rend3768: + br label %logic.end3767 +logic.end3767: + %t116 = phi i1 [ false, %logic.from3765 ], [ %t115, %logic.rend3768 ] + br label %logic.from3769 +logic.from3769: + br i1 %t116, label %logic.rhs3770, label %logic.end3771 +logic.rhs3770: %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t118 = load { ptr, i64, i64 }, ptr %t117 %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 @@ -31797,36 +35599,36 @@ logic.rhs3486: store { ptr, i64, i64 } %t120, ptr %a122 %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) %t124 = icmp ne i32 %t123, 0 - br label %logic.rend3488 -logic.rend3488: - br label %logic.end3487 -logic.end3487: - %t125 = phi i1 [ false, %logic.from3485 ], [ %t124, %logic.rend3488 ] - br label %logic.from3489 -logic.from3489: - br i1 %t125, label %logic.rhs3490, label %logic.end3491 -logic.rhs3490: + br label %logic.rend3772 +logic.rend3772: + br label %logic.end3771 +logic.end3771: + %t125 = phi i1 [ false, %logic.from3769 ], [ %t124, %logic.rend3772 ] + br label %logic.from3773 +logic.from3773: + br i1 %t125, label %logic.rhs3774, label %logic.end3775 +logic.rhs3774: %t126 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t126, i32 0, i32 1 %t128 = load i64, ptr %t127 %t129 = icmp sgt i64 %t128, 0 - br label %logic.rend3492 -logic.rend3492: - br label %logic.end3491 -logic.end3491: - %t130 = phi i1 [ false, %logic.from3489 ], [ %t129, %logic.rend3492 ] - br i1 %t130, label %then3493, label %endif3495 -then3493: + br label %logic.rend3776 +logic.rend3776: + br label %logic.end3775 +logic.end3775: + %t130 = phi i1 [ false, %logic.from3773 ], [ %t129, %logic.rend3776 ] + br i1 %t130, label %then3777, label %endif3779 +then3777: %t131 = load ptr, ptr %a1 %t132 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t133 = load { ptr, i64, i64 }, ptr %t132 %t134 = extractvalue { ptr, i64, i64 } %t133, 1 %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range3496, label %inrange3497 -range3496: - call void @finch_panic_index(ptr @.str.2156, i64 1416, i64 0, i64 %t134) + br i1 %t135, label %range3780, label %inrange3781 +range3780: + call void @finch_panic_index(ptr @.str.2369, i64 1540, i64 0, i64 %t134) unreachable -inrange3497: +inrange3781: %t136 = extractvalue { ptr, i64, i64 } %t133, 0 %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 %t138 = load %S.ast.Type, ptr %t137 @@ -31834,11 +35636,11 @@ inrange3497: %t140 = load { ptr, i64, i64 }, ptr %t139 %t141 = extractvalue { ptr, i64, i64 } %t140, 1 %t142 = icmp uge i64 0, %t141 - br i1 %t142, label %range3498, label %inrange3499 -range3498: - call void @finch_panic_index(ptr @.str.2157, i64 1416, i64 0, i64 %t141) + br i1 %t142, label %range3782, label %inrange3783 +range3782: + call void @finch_panic_index(ptr @.str.2370, i64 1540, i64 0, i64 %t141) unreachable -inrange3499: +inrange3783: %t143 = extractvalue { ptr, i64, i64 } %t140, 0 %t144 = getelementptr inbounds %S.ast.Type, ptr %t143, i64 0 %t145 = load %S.ast.Type, ptr %t144 @@ -31846,40 +35648,40 @@ inrange3499: %t147 = load ptr, ptr %a5 call void @finch.gen.bindType(ptr %t131, %S.ast.Type %t138, %S.ast.Type %t145, { ptr, i64, i64 } %t146, ptr %t147) ret void -endif3495: +endif3779: %t148 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t149 = load { ptr, i64, i64 }, ptr %t148 store { ptr, i64, i64 } %t149, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.2158, i64 3, i64 0 }, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.2371, i64 3, i64 0 }, ptr %a151 %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) %t153 = icmp ne i32 %t152, 0 - br label %logic.from3500 -logic.from3500: - br i1 %t153, label %logic.rhs3501, label %logic.end3502 -logic.rhs3501: + br label %logic.from3784 +logic.from3784: + br i1 %t153, label %logic.rhs3785, label %logic.end3786 +logic.rhs3785: %t154 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t155 = load { ptr, i64, i64 }, ptr %t154 store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2159, i64 3, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.2372, i64 3, i64 0 }, ptr %a157 %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) %t159 = icmp ne i32 %t158, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3502 -logic.end3502: - %t160 = phi i1 [ false, %logic.from3500 ], [ %t159, %logic.rend3503 ] - br i1 %t160, label %then3504, label %endif3506 -then3504: + br label %logic.rend3787 +logic.rend3787: + br label %logic.end3786 +logic.end3786: + %t160 = phi i1 [ false, %logic.from3784 ], [ %t159, %logic.rend3787 ] + br i1 %t160, label %then3788, label %endif3790 +then3788: %t161 = load ptr, ptr %a1 %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t163 = load { ptr, i64, i64 }, ptr %t162 %t164 = extractvalue { ptr, i64, i64 } %t163, 1 %t165 = icmp uge i64 0, %t164 - br i1 %t165, label %range3507, label %inrange3508 -range3507: - call void @finch_panic_index(ptr @.str.2160, i64 1420, i64 0, i64 %t164) + br i1 %t165, label %range3791, label %inrange3792 +range3791: + call void @finch_panic_index(ptr @.str.2373, i64 1544, i64 0, i64 %t164) unreachable -inrange3508: +inrange3792: %t166 = extractvalue { ptr, i64, i64 } %t163, 0 %t167 = getelementptr inbounds %S.ast.Type, ptr %t166, i64 0 %t168 = load %S.ast.Type, ptr %t167 @@ -31887,11 +35689,11 @@ inrange3508: %t170 = load { ptr, i64, i64 }, ptr %t169 %t171 = extractvalue { ptr, i64, i64 } %t170, 1 %t172 = icmp uge i64 0, %t171 - br i1 %t172, label %range3509, label %inrange3510 -range3509: - call void @finch_panic_index(ptr @.str.2161, i64 1420, i64 0, i64 %t171) + br i1 %t172, label %range3793, label %inrange3794 +range3793: + call void @finch_panic_index(ptr @.str.2374, i64 1544, i64 0, i64 %t171) unreachable -inrange3510: +inrange3794: %t173 = extractvalue { ptr, i64, i64 } %t170, 0 %t174 = getelementptr inbounds %S.ast.Type, ptr %t173, i64 0 %t175 = load %S.ast.Type, ptr %t174 @@ -31903,11 +35705,11 @@ inrange3510: %t180 = load { ptr, i64, i64 }, ptr %t179 %t181 = extractvalue { ptr, i64, i64 } %t180, 1 %t182 = icmp uge i64 1, %t181 - br i1 %t182, label %range3511, label %inrange3512 -range3511: - call void @finch_panic_index(ptr @.str.2162, i64 1421, i64 1, i64 %t181) + br i1 %t182, label %range3795, label %inrange3796 +range3795: + call void @finch_panic_index(ptr @.str.2375, i64 1545, i64 1, i64 %t181) unreachable -inrange3512: +inrange3796: %t183 = extractvalue { ptr, i64, i64 } %t180, 0 %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i64 1 %t185 = load %S.ast.Type, ptr %t184 @@ -31915,11 +35717,11 @@ inrange3512: %t187 = load { ptr, i64, i64 }, ptr %t186 %t188 = extractvalue { ptr, i64, i64 } %t187, 1 %t189 = icmp uge i64 1, %t188 - br i1 %t189, label %range3513, label %inrange3514 -range3513: - call void @finch_panic_index(ptr @.str.2163, i64 1421, i64 1, i64 %t188) + br i1 %t189, label %range3797, label %inrange3798 +range3797: + call void @finch_panic_index(ptr @.str.2376, i64 1545, i64 1, i64 %t188) unreachable -inrange3514: +inrange3798: %t190 = extractvalue { ptr, i64, i64 } %t187, 0 %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i64 1 %t192 = load %S.ast.Type, ptr %t191 @@ -31927,50 +35729,50 @@ inrange3514: %t194 = load ptr, ptr %a5 call void @finch.gen.bindType(ptr %t178, %S.ast.Type %t185, %S.ast.Type %t192, { ptr, i64, i64 } %t193, ptr %t194) ret void -endif3506: +endif3790: %t195 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t196 = load { ptr, i64, i64 }, ptr %t195 store { ptr, i64, i64 } %t196, ptr %a197 - store { ptr, i64, i64 } { ptr @.str.2164, i64 5, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.2377, i64 5, i64 0 }, ptr %a198 %t199 = call i32 @finch_str_eq(ptr %a197, ptr %a198) %t200 = icmp ne i32 %t199, 0 - br label %logic.from3515 -logic.from3515: - br i1 %t200, label %logic.rhs3516, label %logic.end3517 -logic.rhs3516: + br label %logic.from3799 +logic.from3799: + br i1 %t200, label %logic.rhs3800, label %logic.end3801 +logic.rhs3800: %t201 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 %t203 = load i64, ptr %t202 %t204 = icmp sgt i64 %t203, 0 - br label %logic.rend3518 -logic.rend3518: - br label %logic.end3517 -logic.end3517: - %t205 = phi i1 [ false, %logic.from3515 ], [ %t204, %logic.rend3518 ] - br label %logic.from3519 -logic.from3519: - br i1 %t205, label %logic.rhs3520, label %logic.end3521 -logic.rhs3520: + br label %logic.rend3802 +logic.rend3802: + br label %logic.end3801 +logic.end3801: + %t205 = phi i1 [ false, %logic.from3799 ], [ %t204, %logic.rend3802 ] + br label %logic.from3803 +logic.from3803: + br i1 %t205, label %logic.rhs3804, label %logic.end3805 +logic.rhs3804: %t206 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t207 = load { ptr, i64, i64 }, ptr %t206 store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.2165, i64 6, i64 0 }, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.2378, i64 6, i64 0 }, ptr %a209 %t210 = call i32 @finch_str_eq(ptr %a208, ptr %a209) %t211 = icmp ne i32 %t210, 0 - br label %logic.rend3522 -logic.rend3522: - br label %logic.end3521 -logic.end3521: - %t212 = phi i1 [ false, %logic.from3519 ], [ %t211, %logic.rend3522 ] - br i1 %t212, label %then3523, label %endif3525 -then3523: + br label %logic.rend3806 +logic.rend3806: + br label %logic.end3805 +logic.end3805: + %t212 = phi i1 [ false, %logic.from3803 ], [ %t211, %logic.rend3806 ] + br i1 %t212, label %then3807, label %endif3809 +then3807: %t213 = load ptr, ptr %a1 %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic3526, label %ok3527 -panic3526: - call void @finch_panic(ptr @.str.2166, i64 1425, ptr @.str.2167) + br i1 %t214, label %panic3810, label %ok3811 +panic3810: + call void @finch_panic(ptr @.str.2379, i64 1549, ptr @.str.2380) unreachable -ok3527: +ok3811: %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 15 %t216 = load ptr, ptr %a1 %t217 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 @@ -31981,11 +35783,11 @@ ok3527: %t222 = load { ptr, i64, i64 }, ptr %t215 %t223 = extractvalue { ptr, i64, i64 } %t222, 1 %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range3528, label %inrange3529 -range3528: - call void @finch_panic_index(ptr @.str.2168, i64 1425, i64 %t221, i64 %t223) + br i1 %t224, label %range3812, label %inrange3813 +range3812: + call void @finch_panic_index(ptr @.str.2381, i64 1549, i64 %t221, i64 %t223) unreachable -inrange3529: +inrange3813: %t225 = extractvalue { ptr, i64, i64 } %t222, 0 %t226 = getelementptr inbounds %S.gen.StructDef, ptr %t225, i64 %t221 %t227 = load %S.gen.StructDef, ptr %t226 @@ -32001,10 +35803,10 @@ inrange3529: store { ptr, i64, i64 } %t235, ptr %a237 %t238 = call i32 @finch_str_eq(ptr %a236, ptr %a237) %t239 = icmp ne i32 %t238, 0 - br label %logic.from3530 -logic.from3530: - br i1 %t239, label %logic.rhs3531, label %logic.end3532 -logic.rhs3531: + br label %logic.from3814 +logic.from3814: + br i1 %t239, label %logic.rhs3815, label %logic.end3816 +logic.rhs3815: %t240 = getelementptr inbounds %S.gen.StructDef, ptr %a231, i32 0, i32 7 %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 %t242 = load i64, ptr %t241 @@ -32012,34 +35814,34 @@ logic.rhs3531: %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 %t245 = load i64, ptr %t244 %t246 = icmp eq i64 %t242, %t245 - br label %logic.rend3533 -logic.rend3533: - br label %logic.end3532 -logic.end3532: - %t247 = phi i1 [ false, %logic.from3530 ], [ %t246, %logic.rend3533 ] - br i1 %t247, label %then3534, label %endif3536 -then3534: + br label %logic.rend3817 +logic.rend3817: + br label %logic.end3816 +logic.end3816: + %t247 = phi i1 [ false, %logic.from3814 ], [ %t246, %logic.rend3817 ] + br i1 %t247, label %then3818, label %endif3820 +then3818: %t248 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 %t250 = load i64, ptr %t249 store i64 0, ptr %a251 - br label %for.cond3537 -for.cond3537: + br label %for.cond3821 +for.cond3821: %t252 = load i64, ptr %a251 %t253 = icmp slt i64 %t252, %t250 - br i1 %t253, label %for.body3538, label %for.end3540 -for.body3538: + br i1 %t253, label %for.body3822, label %for.end3824 +for.body3822: %t254 = load ptr, ptr %a1 %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t256 = load i64, ptr %a251 %t257 = load { ptr, i64, i64 }, ptr %t255 %t258 = extractvalue { ptr, i64, i64 } %t257, 1 %t259 = icmp uge i64 %t256, %t258 - br i1 %t259, label %range3541, label %inrange3542 -range3541: - call void @finch_panic_index(ptr @.str.2169, i64 1428, i64 %t256, i64 %t258) + br i1 %t259, label %range3825, label %inrange3826 +range3825: + call void @finch_panic_index(ptr @.str.2382, i64 1552, i64 %t256, i64 %t258) unreachable -inrange3542: +inrange3826: %t260 = extractvalue { ptr, i64, i64 } %t257, 0 %t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256 %t262 = load %S.ast.Type, ptr %t261 @@ -32048,28 +35850,28 @@ inrange3542: %t265 = load { ptr, i64, i64 }, ptr %t263 %t266 = extractvalue { ptr, i64, i64 } %t265, 1 %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range3543, label %inrange3544 -range3543: - call void @finch_panic_index(ptr @.str.2170, i64 1428, i64 %t264, i64 %t266) + br i1 %t267, label %range3827, label %inrange3828 +range3827: + call void @finch_panic_index(ptr @.str.2383, i64 1552, i64 %t264, i64 %t266) unreachable -inrange3544: +inrange3828: %t268 = extractvalue { ptr, i64, i64 } %t265, 0 %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 %t270 = load %S.ast.Type, ptr %t269 %t271 = load { ptr, i64, i64 }, ptr %a4 %t272 = load ptr, ptr %a5 call void @finch.gen.bindType(ptr %t254, %S.ast.Type %t262, %S.ast.Type %t270, { ptr, i64, i64 } %t271, ptr %t272) - br label %for.step3539 -for.step3539: + br label %for.step3823 +for.step3823: %t273 = load i64, ptr %a251 %t274 = add i64 %t273, 1 store i64 %t274, ptr %a251 - br label %for.cond3537 -for.end3540: - br label %endif3536 -endif3536: - br label %endif3525 -endif3525: + br label %for.cond3821 +for.end3824: + br label %endif3820 +endif3820: + br label %endif3809 +endif3809: ret void } @@ -32140,21 +35942,21 @@ entry: %a297 = alloca %S.gen.FnSig, align 16 %a298 = alloca %S.gen.FnSig, align 16 %a300 = alloca %S.gen.FnSig, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a306 = alloca i64, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 %a344 = alloca { ptr, i64, i64 }, align 16 %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a349 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca %S.gen.Val, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 + %a365 = alloca { ptr, i64, i64 }, align 16 + %a366 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a372 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 @@ -32162,21 +35964,21 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3545, label %ok3546 -panic3545: - call void @finch_panic(ptr @.str.2171, i64 1436, ptr @.str.2172) + br i1 %t7, label %panic3829, label %ok3830 +panic3829: + call void @finch_panic(ptr @.str.2384, i64 1560, ptr @.str.2385) unreachable -ok3546: +ok3830: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 16 %t9 = load i64, ptr %a3 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range3547, label %inrange3548 -range3547: - call void @finch_panic_index(ptr @.str.2173, i64 1436, i64 %t9, i64 %t11) + br i1 %t12, label %range3831, label %inrange3832 +range3831: + call void @finch_panic_index(ptr @.str.2386, i64 1560, i64 %t9, i64 %t11) unreachable -inrange3548: +inrange3832: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.Template, ptr %t13, i64 %t9 %t15 = load %S.gen.Template, ptr %t14 @@ -32186,22 +35988,22 @@ inrange3548: store %S.gen.Template %t18, ptr %a19 %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3549, label %ok3550 -panic3549: - call void @finch_panic(ptr @.str.2174, i64 1437, ptr @.str.2175) + br i1 %t21, label %panic3833, label %ok3834 +panic3833: + call void @finch_panic(ptr @.str.2387, i64 1561, ptr @.str.2388) unreachable -ok3550: +ok3834: %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 0 %t23 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 %t24 = load i64, ptr %t23 %t25 = load { ptr, i64, i64 }, ptr %t22 %t26 = extractvalue { ptr, i64, i64 } %t25, 1 %t27 = icmp uge i64 %t24, %t26 - br i1 %t27, label %range3551, label %inrange3552 -range3551: - call void @finch_panic_index(ptr @.str.2176, i64 1437, i64 %t24, i64 %t26) + br i1 %t27, label %range3835, label %inrange3836 +range3835: + call void @finch_panic_index(ptr @.str.2389, i64 1561, i64 %t24, i64 %t26) unreachable -inrange3552: +inrange3836: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Program, ptr %t28, i64 %t24 %t30 = getelementptr inbounds %S.ast.Program, ptr %t29, i32 0, i32 8 @@ -32210,11 +36012,11 @@ inrange3552: %t33 = load { ptr, i64, i64 }, ptr %t30 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3553, label %inrange3554 -range3553: - call void @finch_panic_index(ptr @.str.2177, i64 1437, i64 %t32, i64 %t34) + br i1 %t35, label %range3837, label %inrange3838 +range3837: + call void @finch_panic_index(ptr @.str.2390, i64 1561, i64 %t32, i64 %t34) unreachable -inrange3554: +inrange3838: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 %t32 %t38 = load %S.ast.Node, ptr %t37 @@ -32239,8 +36041,8 @@ inrange3554: %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 %t57 = load i64, ptr %t56 %t58 = icmp sgt i64 %t57, 0 - br i1 %t58, label %then3555, label %endif3557 -then3555: + br i1 %t58, label %then3839, label %endif3841 +then3839: %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 %t60 = getelementptr inbounds %S.ast.Type, ptr %t59, i32 0, i32 1 %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 @@ -32249,13 +36051,13 @@ then3555: %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 %t65 = load i64, ptr %t64 %t66 = icmp ne i64 %t62, %t65 - br i1 %t66, label %then3558, label %endif3560 -then3558: + br i1 %t66, label %then3842, label %endif3844 +then3842: %t67 = load ptr, ptr %a1 %t68 = load %S.ast.Node, ptr %a2 %t69 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2178, i64 7, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.2391, i64 7, i64 0 }, ptr %a72 call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 %t74 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 @@ -32268,7 +36070,7 @@ then3558: call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) %t82 = load { ptr, i64, i64 }, ptr %a79 store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.2179, i64 27, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.2392, i64 27, i64 0 }, ptr %a85 call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 @@ -32282,19 +36084,19 @@ then3558: call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) %t96 = load { ptr, i64, i64 }, ptr %a93 call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t96) - br label %endif3560 -endif3560: + br label %endif3844 +endif3844: %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i32 0, i32 1 store i64 0, ptr %a99 - br label %each.cond3561 -each.cond3561: + br label %each.cond3845 +each.cond3845: %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 %t101 = load i64, ptr %t100 %t102 = load i64, ptr %a99 %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body3562, label %each.end3564 -each.body3562: + br i1 %t103, label %each.body3846, label %each.end3848 +each.body3846: %t104 = load ptr, ptr %t98 %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t102 %t106 = load %S.ast.Type, ptr %t105 @@ -32311,40 +36113,40 @@ each.body3562: %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i64 %t113 store %S.ast.Type %t112, ptr %t116 store i64 %t114, ptr %t108 - br label %each.step3563 -each.step3563: + br label %each.step3847 +each.step3847: %t117 = load i64, ptr %a99 %t118 = add i64 %t117, 1 store i64 %t118, ptr %a99 - br label %each.cond3561 -each.end3564: + br label %each.cond3845 +each.end3848: %t119 = load ptr, ptr %a1 %t120 = load ptr, ptr %a1 %t121 = load i64, ptr %a3 %t122 = load { ptr, i64, i64 }, ptr %a53 - %t123 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2180, i64 4, i64 0 }) + %t123 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2393, i64 4, i64 0 }) %t124 = load %S.ast.Node, ptr %a2 %t125 = call i64 @finch.gen.instFn(ptr %t120, i64 %t121, { ptr, i64, i64 } %t122, %S.ast.Type %t123, %S.ast.Node %t124) %t126 = load %S.ast.Node, ptr %a2 %t127 = load i64, ptr %a4 %t128 = load { ptr, i64, i64 }, ptr %a5 - %t129 = call %S.gen.Val @finch.gen.callFn(ptr %t119, i64 %t125, %S.ast.Node %t126, i64 %t127, { ptr, i64, i64 } %t128, { ptr, i64, i64 } { ptr @.str.2181, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2182, i64 0, i64 0 }) + %t129 = call %S.gen.Val @finch.gen.callFn(ptr %t119, i64 %t125, %S.ast.Node %t126, i64 %t127, { ptr, i64, i64 } %t128, { ptr, i64, i64 } { ptr @.str.2394, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2395, i64 0, i64 0 }) ret %S.gen.Val %t129 -endif3557: +endif3841: store %S.gen.Binds zeroinitializer, ptr %a130 %t131 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t131, i32 0, i32 1 %t133 = load i64, ptr %t132 store i64 0, ptr %a134 - br label %for.cond3565 -for.cond3565: + br label %for.cond3849 +for.cond3849: %t135 = load i64, ptr %a134 %t136 = icmp slt i64 %t135, %t133 - br i1 %t136, label %for.body3566, label %for.end3568 -for.body3566: + br i1 %t136, label %for.body3850, label %for.end3852 +for.body3850: %t137 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 0 %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2183, i64 4, i64 0 }) + %t139 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2396, i64 4, i64 0 }) %t140 = load i64, ptr %t138 %t141 = add i64 %t140, 1 call void @finch_arr_reserve(ptr %t137, i64 %t141, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) @@ -32361,22 +36163,22 @@ for.body3566: %t149 = getelementptr inbounds i1, ptr %t148, i64 %t146 store i1 false, ptr %t149 store i64 %t147, ptr %t145 - br label %for.step3567 -for.step3567: + br label %for.step3851 +for.step3851: %t150 = load i64, ptr %a134 %t151 = add i64 %t150, 1 store i64 %t151, ptr %a134 - br label %for.cond3565 -for.end3568: + br label %for.cond3849 +for.end3852: store { ptr, i64, i64 } zeroinitializer, ptr %a152 %t153 = load i64, ptr %a47 store i64 0, ptr %a154 - br label %for.cond3569 -for.cond3569: + br label %for.cond3853 +for.cond3853: %t155 = load i64, ptr %a154 %t156 = icmp slt i64 %t155, %t153 - br i1 %t156, label %for.body3570, label %for.end3572 -for.body3570: + br i1 %t156, label %for.body3854, label %for.end3856 +for.body3854: %t157 = load ptr, ptr %a1 %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t159 = load i64, ptr %a4 @@ -32385,11 +36187,11 @@ for.body3570: %t162 = load { ptr, i64, i64 }, ptr %t158 %t163 = extractvalue { ptr, i64, i64 } %t162, 1 %t164 = icmp uge i64 %t161, %t163 - br i1 %t164, label %range3573, label %inrange3574 -range3573: - call void @finch_panic_index(ptr @.str.2184, i64 1457, i64 %t161, i64 %t163) + br i1 %t164, label %range3857, label %inrange3858 +range3857: + call void @finch_panic_index(ptr @.str.2397, i64 1581, i64 %t161, i64 %t163) unreachable -inrange3574: +inrange3858: %t165 = extractvalue { ptr, i64, i64 } %t162, 0 %t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 %t161 %t167 = load %S.ast.Node, ptr %t166 @@ -32399,27 +36201,27 @@ inrange3574: %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 %t172 = load { ptr, i64, i64 }, ptr %t171 store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.2185, i64 4, i64 0 }, ptr %a174 + store { ptr, i64, i64 } { ptr @.str.2398, i64 4, i64 0 }, ptr %a174 %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) %t176 = icmp ne i32 %t175, 0 - br label %logic.from3575 -logic.from3575: - br i1 %t176, label %logic.end3577, label %logic.rhs3576 -logic.rhs3576: + br label %logic.from3859 +logic.from3859: + br i1 %t176, label %logic.end3861, label %logic.rhs3860 +logic.rhs3860: %t177 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 %t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.2186, i64 4, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.2399, i64 4, i64 0 }, ptr %a181 %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) %t183 = icmp ne i32 %t182, 0 - br label %logic.rend3578 -logic.rend3578: - br label %logic.end3577 -logic.end3577: - %t184 = phi i1 [ true, %logic.from3575 ], [ %t183, %logic.rend3578 ] - br i1 %t184, label %then3579, label %endif3581 -then3579: + br label %logic.rend3862 +logic.rend3862: + br label %logic.end3861 +logic.end3861: + %t184 = phi i1 [ true, %logic.from3859 ], [ %t183, %logic.rend3862 ] + br i1 %t184, label %then3863, label %endif3865 +then3863: %t185 = load ptr, ptr %a1 %t186 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t187 = load i64, ptr %a4 @@ -32428,30 +36230,30 @@ then3579: %t190 = load { ptr, i64, i64 }, ptr %t186 %t191 = extractvalue { ptr, i64, i64 } %t190, 1 %t192 = icmp uge i64 %t189, %t191 - br i1 %t192, label %range3582, label %inrange3583 -range3582: - call void @finch_panic_index(ptr @.str.2187, i64 1459, i64 %t189, i64 %t191) + br i1 %t192, label %range3866, label %inrange3867 +range3866: + call void @finch_panic_index(ptr @.str.2400, i64 1583, i64 %t189, i64 %t191) unreachable -inrange3583: +inrange3867: %t193 = extractvalue { ptr, i64, i64 } %t190, 0 %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t189 %t195 = load %S.ast.Node, ptr %t194 %t196 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 %t197 = getelementptr inbounds { ptr, i64, i64 }, ptr %t196, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2189, i64 2, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.2402, i64 2, i64 0 }, ptr %a198 call void @finch_str_join(ptr %a199, ptr %t196, ptr %a198) %t200 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2188, i64 29, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.2401, i64 29, i64 0 }, ptr %a202 store { ptr, i64, i64 } %t200, ptr %a203 call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) %t204 = load { ptr, i64, i64 }, ptr %a201 store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.2190, i64 5, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.2403, i64 5, i64 0 }, ptr %a207 call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) %t208 = load { ptr, i64, i64 }, ptr %a205 call void @finch.gen.fail(ptr %t185, %S.ast.Node %t195, { ptr, i64, i64 } %t208) - br label %endif3581 -endif3581: + br label %endif3865 +endif3865: %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a152, i32 0, i32 1 %t210 = load %S.gen.Val, ptr %a169 store %S.gen.Val %t210, ptr %a211 @@ -32470,11 +36272,11 @@ endif3581: %t221 = load { ptr, i64, i64 }, ptr %t219 %t222 = extractvalue { ptr, i64, i64 } %t221, 1 %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range3584, label %inrange3585 -range3584: - call void @finch_panic_index(ptr @.str.2191, i64 1462, i64 %t220, i64 %t222) + br i1 %t223, label %range3868, label %inrange3869 +range3868: + call void @finch_panic_index(ptr @.str.2404, i64 1586, i64 %t220, i64 %t222) unreachable -inrange3585: +inrange3869: %t224 = extractvalue { ptr, i64, i64 } %t221, 0 %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 %t226 = getelementptr inbounds %S.ast.Node, ptr %t225, i32 0, i32 5 @@ -32484,39 +36286,39 @@ inrange3585: %t230 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 %t231 = load { ptr, i64, i64 }, ptr %t230 call void @finch.gen.bindType(ptr %t218, %S.ast.Type %t227, %S.ast.Type %t229, { ptr, i64, i64 } %t231, ptr %a130) - br label %for.step3571 -for.step3571: + br label %for.step3855 +for.step3855: %t232 = load i64, ptr %a154 %t233 = add i64 %t232, 1 store i64 %t233, ptr %a154 - br label %for.cond3569 -for.end3572: + br label %for.cond3853 +for.end3856: %t234 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 %t236 = load i64, ptr %t235 store i64 0, ptr %a237 - br label %for.cond3586 -for.cond3586: + br label %for.cond3870 +for.cond3870: %t238 = load i64, ptr %a237 %t239 = icmp slt i64 %t238, %t236 - br i1 %t239, label %for.body3587, label %for.end3589 -for.body3587: + br i1 %t239, label %for.body3871, label %for.end3873 +for.body3871: %t240 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 1 %t241 = load i64, ptr %a237 %t242 = load { ptr, i64, i64 }, ptr %t240 %t243 = extractvalue { ptr, i64, i64 } %t242, 1 %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range3590, label %inrange3591 -range3590: - call void @finch_panic_index(ptr @.str.2192, i64 1465, i64 %t241, i64 %t243) + br i1 %t244, label %range3874, label %inrange3875 +range3874: + call void @finch_panic_index(ptr @.str.2405, i64 1589, i64 %t241, i64 %t243) unreachable -inrange3591: +inrange3875: %t245 = extractvalue { ptr, i64, i64 } %t242, 0 %t246 = getelementptr inbounds i1, ptr %t245, i64 %t241 %t247 = load i1, ptr %t246 %t248 = xor i1 %t247, true - br i1 %t248, label %then3592, label %endif3594 -then3592: + br i1 %t248, label %then3876, label %endif3878 +then3876: %t249 = load ptr, ptr %a1 %t250 = load %S.ast.Node, ptr %a2 %t251 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 @@ -32524,20 +36326,20 @@ then3592: %t253 = load { ptr, i64, i64 }, ptr %t251 %t254 = extractvalue { ptr, i64, i64 } %t253, 1 %t255 = icmp uge i64 %t252, %t254 - br i1 %t255, label %range3595, label %inrange3596 -range3595: - call void @finch_panic_index(ptr @.str.2194, i64 1466, i64 %t252, i64 %t254) + br i1 %t255, label %range3879, label %inrange3880 +range3879: + call void @finch_panic_index(ptr @.str.2407, i64 1590, i64 %t252, i64 %t254) unreachable -inrange3596: +inrange3880: %t256 = extractvalue { ptr, i64, i64 } %t253, 0 %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i64 %t252 %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } { ptr @.str.2193, i64 16, i64 0 }, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.2406, i64 16, i64 0 }, ptr %a260 store { ptr, i64, i64 } %t258, ptr %a261 call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) %t262 = load { ptr, i64, i64 }, ptr %a259 store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2195, i64 24, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.2408, i64 24, i64 0 }, ptr %a265 call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 %t267 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 @@ -32547,44 +36349,44 @@ inrange3596: call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) %t272 = load { ptr, i64, i64 }, ptr %a269 store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.2196, i64 10, i64 0 }, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.2409, i64 10, i64 0 }, ptr %a275 call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) %t276 = load { ptr, i64, i64 }, ptr %a273 call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t276) - br label %endif3594 -endif3594: - br label %for.step3588 -for.step3588: + br label %endif3878 +endif3878: + br label %for.step3872 +for.step3872: %t277 = load i64, ptr %a237 %t278 = add i64 %t277, 1 store i64 %t278, ptr %a237 - br label %for.cond3586 -for.end3589: + br label %for.cond3870 +for.end3873: %t279 = load ptr, ptr %a1 %t280 = load i64, ptr %a3 %t281 = getelementptr inbounds %S.gen.Binds, ptr %a130, i32 0, i32 0 %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2197, i64 4, i64 0 }) + %t283 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2410, i64 4, i64 0 }) %t284 = load %S.ast.Node, ptr %a2 %t285 = call i64 @finch.gen.instFn(ptr %t279, i64 %t280, { ptr, i64, i64 } %t282, %S.ast.Type %t283, %S.ast.Node %t284) store i64 %t285, ptr %a286 %t287 = load ptr, ptr %a1 %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic3597, label %ok3598 -panic3597: - call void @finch_panic(ptr @.str.2198, i64 1470, ptr @.str.2199) + br i1 %t288, label %panic3881, label %ok3882 +panic3881: + call void @finch_panic(ptr @.str.2411, i64 1594, ptr @.str.2412) unreachable -ok3598: +ok3882: %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 14 %t290 = load i64, ptr %a286 %t291 = load { ptr, i64, i64 }, ptr %t289 %t292 = extractvalue { ptr, i64, i64 } %t291, 1 %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range3599, label %inrange3600 -range3599: - call void @finch_panic_index(ptr @.str.2200, i64 1470, i64 %t290, i64 %t292) + br i1 %t293, label %range3883, label %inrange3884 +range3883: + call void @finch_panic_index(ptr @.str.2413, i64 1594, i64 %t290, i64 %t292) unreachable -inrange3600: +inrange3884: %t294 = extractvalue { ptr, i64, i64 } %t291, 0 %t295 = getelementptr inbounds %S.gen.FnSig, ptr %t294, i64 %t290 %t296 = load %S.gen.FnSig, ptr %t295 @@ -32592,126 +36394,130 @@ inrange3600: call void @finch.copy.S_gen_FnSig(ptr %a298, ptr %a297) %t299 = load %S.gen.FnSig, ptr %a298 store %S.gen.FnSig %t299, ptr %a300 - store { ptr, i64, i64 } zeroinitializer, ptr %a301 - %t302 = load i64, ptr %a47 - store i64 0, ptr %a303 - br label %for.cond3601 -for.cond3601: - %t304 = load i64, ptr %a303 - %t305 = icmp slt i64 %t304, %t302 - br i1 %t305, label %for.body3602, label %for.end3604 -for.body3602: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a303 - %t308 = load { ptr, i64, i64 }, ptr %a152 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 %t307, %t309 - br i1 %t310, label %range3605, label %inrange3606 -range3605: - call void @finch_panic_index(ptr @.str.2201, i64 1473, i64 %t307, i64 %t309) + %t301 = load ptr, ptr %a1 + %t302 = load %S.ast.Node, ptr %a2 + %t303 = load %S.gen.FnSig, ptr %a300 + call void @finch.gen.noteCall(ptr %t301, %S.ast.Node %t302, %S.gen.FnSig %t303) + store { ptr, i64, i64 } zeroinitializer, ptr %a304 + %t305 = load i64, ptr %a47 + store i64 0, ptr %a306 + br label %for.cond3885 +for.cond3885: + %t307 = load i64, ptr %a306 + %t308 = icmp slt i64 %t307, %t305 + br i1 %t308, label %for.body3886, label %for.end3888 +for.body3886: + %t309 = load ptr, ptr %a1 + %t310 = load i64, ptr %a306 + %t311 = load { ptr, i64, i64 }, ptr %a152 + %t312 = extractvalue { ptr, i64, i64 } %t311, 1 + %t313 = icmp uge i64 %t310, %t312 + br i1 %t313, label %range3889, label %inrange3890 +range3889: + call void @finch_panic_index(ptr @.str.2414, i64 1598, i64 %t310, i64 %t312) unreachable -inrange3606: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.gen.Val, ptr %t311, i64 %t307 - %t313 = load %S.gen.Val, ptr %t312 - %t314 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 - %t315 = load i64, ptr %a303 - %t316 = load { ptr, i64, i64 }, ptr %t314 - %t317 = extractvalue { ptr, i64, i64 } %t316, 1 - %t318 = icmp uge i64 %t315, %t317 - br i1 %t318, label %range3607, label %inrange3608 -range3607: - call void @finch_panic_index(ptr @.str.2202, i64 1473, i64 %t315, i64 %t317) +inrange3890: + %t314 = extractvalue { ptr, i64, i64 } %t311, 0 + %t315 = getelementptr inbounds %S.gen.Val, ptr %t314, i64 %t310 + %t316 = load %S.gen.Val, ptr %t315 + %t317 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 + %t318 = load i64, ptr %a306 + %t319 = load { ptr, i64, i64 }, ptr %t317 + %t320 = extractvalue { ptr, i64, i64 } %t319, 1 + %t321 = icmp uge i64 %t318, %t320 + br i1 %t321, label %range3891, label %inrange3892 +range3891: + call void @finch_panic_index(ptr @.str.2415, i64 1598, i64 %t318, i64 %t320) unreachable -inrange3608: - %t319 = extractvalue { ptr, i64, i64 } %t316, 0 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i64 %t315 - %t321 = load %S.ast.Type, ptr %t320 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t323 = load i64, ptr %a4 - %t324 = load i64, ptr %a303 - %t325 = add i64 %t323, %t324 - %t326 = load { ptr, i64, i64 }, ptr %t322 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 %t325, %t327 - br i1 %t328, label %range3609, label %inrange3610 -range3609: - call void @finch_panic_index(ptr @.str.2203, i64 1473, i64 %t325, i64 %t327) +inrange3892: + %t322 = extractvalue { ptr, i64, i64 } %t319, 0 + %t323 = getelementptr inbounds %S.ast.Type, ptr %t322, i64 %t318 + %t324 = load %S.ast.Type, ptr %t323 + %t325 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t326 = load i64, ptr %a4 + %t327 = load i64, ptr %a306 + %t328 = add i64 %t326, %t327 + %t329 = load { ptr, i64, i64 }, ptr %t325 + %t330 = extractvalue { ptr, i64, i64 } %t329, 1 + %t331 = icmp uge i64 %t328, %t330 + br i1 %t331, label %range3893, label %inrange3894 +range3893: + call void @finch_panic_index(ptr @.str.2416, i64 1598, i64 %t328, i64 %t330) unreachable -inrange3610: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Node, ptr %t329, i64 %t325 - %t331 = load %S.ast.Node, ptr %t330 - %t332 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 14 - %t333 = load i64, ptr %a303 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range3611, label %inrange3612 -range3611: - call void @finch_panic_index(ptr @.str.2205, i64 1473, i64 %t333, i64 %t335) +inrange3894: + %t332 = extractvalue { ptr, i64, i64 } %t329, 0 + %t333 = getelementptr inbounds %S.ast.Node, ptr %t332, i64 %t328 + %t334 = load %S.ast.Node, ptr %t333 + %t335 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 14 + %t336 = load i64, ptr %a306 + %t337 = load { ptr, i64, i64 }, ptr %t335 + %t338 = extractvalue { ptr, i64, i64 } %t337, 1 + %t339 = icmp uge i64 %t336, %t338 + br i1 %t339, label %range3895, label %inrange3896 +range3895: + call void @finch_panic_index(ptr @.str.2418, i64 1598, i64 %t336, i64 %t338) unreachable -inrange3612: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } { ptr @.str.2204, i64 10, i64 0 }, ptr %a341 - store { ptr, i64, i64 } %t339, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.2206, i64 1, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a344 - %t348 = call %S.gen.Val @finch.gen.coerce(ptr %t306, %S.gen.Val %t313, %S.ast.Type %t321, %S.ast.Node %t331, { ptr, i64, i64 } %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %a301, i32 0, i32 1 - %t351 = load ptr, ptr %a1 - %t352 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 - %t353 = load i64, ptr %a303 - %t354 = load { ptr, i64, i64 }, ptr %t352 - %t355 = extractvalue { ptr, i64, i64 } %t354, 1 - %t356 = icmp uge i64 %t353, %t355 - br i1 %t356, label %range3613, label %inrange3614 -range3613: - call void @finch_panic_index(ptr @.str.2207, i64 1474, i64 %t353, i64 %t355) +inrange3896: + %t340 = extractvalue { ptr, i64, i64 } %t337, 0 + %t341 = getelementptr inbounds { ptr, i64, i64 }, ptr %t340, i64 %t336 + %t342 = load { ptr, i64, i64 }, ptr %t341 + store { ptr, i64, i64 } { ptr @.str.2417, i64 10, i64 0 }, ptr %a344 + store { ptr, i64, i64 } %t342, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + store { ptr, i64, i64 } %t346, ptr %a348 + store { ptr, i64, i64 } { ptr @.str.2419, i64 1, i64 0 }, ptr %a349 + call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) + %t350 = load { ptr, i64, i64 }, ptr %a347 + %t351 = call %S.gen.Val @finch.gen.coerce(ptr %t309, %S.gen.Val %t316, %S.ast.Type %t324, %S.ast.Node %t334, { ptr, i64, i64 } %t350) + store %S.gen.Val %t351, ptr %a352 + %t353 = getelementptr inbounds { ptr, i64, i64 }, ptr %a304, i32 0, i32 1 + %t354 = load ptr, ptr %a1 + %t355 = getelementptr inbounds %S.gen.FnSig, ptr %a300, i32 0, i32 13 + %t356 = load i64, ptr %a306 + %t357 = load { ptr, i64, i64 }, ptr %t355 + %t358 = extractvalue { ptr, i64, i64 } %t357, 1 + %t359 = icmp uge i64 %t356, %t358 + br i1 %t359, label %range3897, label %inrange3898 +range3897: + call void @finch_panic_index(ptr @.str.2420, i64 1599, i64 %t356, i64 %t358) unreachable -inrange3614: - %t357 = extractvalue { ptr, i64, i64 } %t354, 0 - %t358 = getelementptr inbounds %S.ast.Type, ptr %t357, i64 %t353 - %t359 = load %S.ast.Type, ptr %t358 - %t360 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t351, %S.ast.Type %t359) - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.2208, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = getelementptr inbounds %S.gen.Val, ptr %a349, i32 0, i32 0 - %t366 = load { ptr, i64, i64 }, ptr %t365 - store { ptr, i64, i64 } %t364, ptr %a368 - store { ptr, i64, i64 } %t366, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a367 - %t371 = load i64, ptr %t350 - %t372 = add i64 %t371, 1 - call void @finch_arr_reserve(ptr %a301, i64 %t372, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t373 = load ptr, ptr %a301 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %t373, i64 %t371 - store { ptr, i64, i64 } %t370, ptr %t374 - store i64 %t372, ptr %t350 - br label %for.step3603 -for.step3603: - %t375 = load i64, ptr %a303 - %t376 = add i64 %t375, 1 - store i64 %t376, ptr %a303 - br label %for.cond3601 -for.end3604: - %t377 = load ptr, ptr %a1 - %t378 = load %S.gen.FnSig, ptr %a300 - %t379 = load %S.ast.Node, ptr %a2 - %t380 = load { ptr, i64, i64 }, ptr %a301 - %t381 = load { ptr, i64, i64 }, ptr %a5 - %t382 = call %S.gen.Val @finch.gen.emitCall(ptr %t377, %S.gen.FnSig %t378, %S.ast.Node %t379, { ptr, i64, i64 } %t380, { ptr, i64, i64 } %t381) - ret %S.gen.Val %t382 +inrange3898: + %t360 = extractvalue { ptr, i64, i64 } %t357, 0 + %t361 = getelementptr inbounds %S.ast.Type, ptr %t360, i64 %t356 + %t362 = load %S.ast.Type, ptr %t361 + %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t354, %S.ast.Type %t362) + store { ptr, i64, i64 } %t363, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.2421, i64 1, i64 0 }, ptr %a366 + call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) + %t367 = load { ptr, i64, i64 }, ptr %a364 + %t368 = getelementptr inbounds %S.gen.Val, ptr %a352, i32 0, i32 0 + %t369 = load { ptr, i64, i64 }, ptr %t368 + store { ptr, i64, i64 } %t367, ptr %a371 + store { ptr, i64, i64 } %t369, ptr %a372 + call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) + %t373 = load { ptr, i64, i64 }, ptr %a370 + %t374 = load i64, ptr %t353 + %t375 = add i64 %t374, 1 + call void @finch_arr_reserve(ptr %a304, i64 %t375, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t376 = load ptr, ptr %a304 + %t377 = getelementptr inbounds { ptr, i64, i64 }, ptr %t376, i64 %t374 + store { ptr, i64, i64 } %t373, ptr %t377 + store i64 %t375, ptr %t353 + br label %for.step3887 +for.step3887: + %t378 = load i64, ptr %a306 + %t379 = add i64 %t378, 1 + store i64 %t379, ptr %a306 + br label %for.cond3885 +for.end3888: + %t380 = load ptr, ptr %a1 + %t381 = load %S.gen.FnSig, ptr %a300 + %t382 = load %S.ast.Node, ptr %a2 + %t383 = load { ptr, i64, i64 }, ptr %a304 + %t384 = load { ptr, i64, i64 }, ptr %a5 + %t385 = call %S.gen.Val @finch.gen.emitCall(ptr %t380, %S.gen.FnSig %t381, %S.ast.Node %t382, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384) + ret %S.gen.Val %t385 } define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { @@ -32737,20 +36543,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond3623 -n.cond3623: + br label %n.cond3907 +n.cond3907: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body3624, label %n.end3625 -n.body3624: + br i1 %t7, label %n.body3908, label %n.end3909 +n.body3908: %t8 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.cimport.CField, ptr %t2, i64 %t6 call void @finch.copy.S_cimport_CField(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond3623 -n.end3625: + br label %n.cond3907 +n.end3909: ret void } @@ -32826,30 +36632,30 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2209, i64 1482, ptr @.str.2210) + br i1 %t4, label %panic3899, label %ok3900 +panic3899: + call void @finch_panic(ptr @.str.2422, i64 1607, ptr @.str.2423) unreachable -ok3616: +ok3900: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 24 %t6 = getelementptr inbounds %S.cimport.CImports, ptr %t5, i32 0, i32 3 %t7 = load ptr, ptr %a1 %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic3617, label %ok3618 -panic3617: - call void @finch_panic(ptr @.str.2211, i64 1482, ptr @.str.2212) + br i1 %t8, label %panic3901, label %ok3902 +panic3901: + call void @finch_panic(ptr @.str.2424, i64 1607, ptr @.str.2425) unreachable -ok3618: +ok3902: %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 15 %t10 = load i64, ptr %a2 %t11 = load { ptr, i64, i64 }, ptr %t9 %t12 = extractvalue { ptr, i64, i64 } %t11, 1 %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range3619, label %inrange3620 -range3619: - call void @finch_panic_index(ptr @.str.2213, i64 1482, i64 %t10, i64 %t12) + br i1 %t13, label %range3903, label %inrange3904 +range3903: + call void @finch_panic_index(ptr @.str.2426, i64 1607, i64 %t10, i64 %t12) unreachable -inrange3620: +inrange3904: %t14 = extractvalue { ptr, i64, i64 } %t11, 0 %t15 = getelementptr inbounds %S.gen.StructDef, ptr %t14, i64 %t10 %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i32 0, i32 1 @@ -32857,14 +36663,14 @@ inrange3620: store { ptr, i64, i64 } %t17, ptr %a18 %t19 = call i64 @finch_map_find(ptr %t6, ptr %a18, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t20 = icmp slt i64 %t19, 0 - br i1 %t20, label %map.missing3621, label %map.found3622 -map.missing3621: + br i1 %t20, label %map.missing3905, label %map.found3906 +map.missing3905: store { ptr, i64, i64 } zeroinitializer, ptr %a21 store { ptr, i64, i64 } %t17, ptr %a22 call void @finch_buf_str(ptr %a21, ptr %a22, i32 1) - call void @finch_map_missing(ptr @.str.2214, i64 1482, ptr %a21) + call void @finch_map_missing(ptr @.str.2427, i64 1607, ptr %a21) unreachable -map.found3622: +map.found3906: %t23 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 %t24 = load ptr, ptr %t23 %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t24, i64 %t19 @@ -32876,21 +36682,21 @@ map.found3622: store %S.cimport.CStruct %t30, ptr %a31 %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2215, i64 1483, ptr @.str.2216) + br i1 %t33, label %panic3910, label %ok3911 +panic3910: + call void @finch_panic(ptr @.str.2428, i64 1608, ptr @.str.2429) unreachable -ok3627: +ok3911: %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 15 %t35 = load i64, ptr %a2 %t36 = load { ptr, i64, i64 }, ptr %t34 %t37 = extractvalue { ptr, i64, i64 } %t36, 1 %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range3628, label %inrange3629 -range3628: - call void @finch_panic_index(ptr @.str.2217, i64 1483, i64 %t35, i64 %t37) + br i1 %t38, label %range3912, label %inrange3913 +range3912: + call void @finch_panic_index(ptr @.str.2430, i64 1608, i64 %t35, i64 %t37) unreachable -inrange3629: +inrange3913: %t39 = extractvalue { ptr, i64, i64 } %t36, 0 %t40 = getelementptr inbounds %S.gen.StructDef, ptr %t39, i64 %t35 %t41 = getelementptr inbounds %S.gen.StructDef, ptr %t40, i32 0, i32 15 @@ -32899,24 +36705,24 @@ inrange3629: store { ptr, i64, i64 } zeroinitializer, ptr %a43 %t44 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 1 store i64 0, ptr %a45 - br label %each.cond3630 -each.cond3630: + br label %each.cond3914 +each.cond3914: %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 %t47 = load i64, ptr %t46 %t48 = load i64, ptr %a45 %t49 = icmp slt i64 %t48, %t47 - br i1 %t49, label %each.body3631, label %each.end3633 -each.body3631: + br i1 %t49, label %each.body3915, label %each.end3917 +each.body3915: %t50 = load ptr, ptr %t44 %t51 = getelementptr inbounds %S.cimport.CField, ptr %t50, i64 %t48 %t52 = load %S.cimport.CField, ptr %t51 store %S.cimport.CField %t52, ptr %a53 %t54 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 5 %t55 = load i1, ptr %t54 - br i1 %t55, label %then3634, label %endif3636 -then3634: - br label %each.step3632 -endif3636: + br i1 %t55, label %then3918, label %endif3920 +then3918: + br label %each.step3916 +endif3920: %t56 = load ptr, ptr %a1 %t57 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 1 %t58 = load %S.ast.Type, ptr %t57 @@ -32925,11 +36731,11 @@ endif3636: %t61 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 0 %t62 = load { ptr, i64, i64 }, ptr %t61 store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.2218, i64 6, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.2431, i64 6, i64 0 }, ptr %a64 %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then3637, label %endif3639 -then3637: + br i1 %t66, label %then3921, label %endif3923 +then3921: %t67 = load ptr, ptr %a1 %t68 = load ptr, ptr %a1 %t69 = getelementptr inbounds %S.ast.Type, ptr %a60, i32 0, i32 3 @@ -32938,14 +36744,14 @@ then3637: %t72 = load { ptr, i64, i64 }, ptr %t71 %t73 = call i64 @finch.gen.findStruct(ptr %t68, { ptr, i64, i64 } %t70, { ptr, i64, i64 } %t72) call void @finch.gen.resolveStruct(ptr %t67, i64 %t73) - br label %endif3639 -endif3639: + br label %endif3923 +endif3923: %t74 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 %t75 = load i64, ptr %t74 %t76 = load i64, ptr %a42 %t77 = icmp sgt i64 %t75, %t76 - br i1 %t77, label %then3640, label %endif3642 -then3640: + br i1 %t77, label %then3924, label %endif3926 +then3924: %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 %t79 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 %t80 = load i64, ptr %t79 @@ -32953,12 +36759,12 @@ then3640: %t82 = sub i64 %t80, %t81 call void @finch_str_from_int(ptr %a83, i64 %t82) %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.2219, i64 1, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2432, i64 1, i64 0 }, ptr %a86 store { ptr, i64, i64 } %t84, ptr %a87 call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2220, i64 6, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.2433, i64 6, i64 0 }, ptr %a91 call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) %t92 = load { ptr, i64, i64 }, ptr %a89 %t93 = load i64, ptr %t78 @@ -32968,25 +36774,25 @@ then3640: %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 store { ptr, i64, i64 } %t92, ptr %t96 store i64 %t94, ptr %t78 - br label %endif3642 -endif3642: + br label %endif3926 +endif3926: %t97 = load ptr, ptr %a1 %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic3643, label %ok3644 -panic3643: - call void @finch_panic(ptr @.str.2221, i64 1497, ptr @.str.2222) + br i1 %t98, label %panic3927, label %ok3928 +panic3927: + call void @finch_panic(ptr @.str.2434, i64 1622, ptr @.str.2435) unreachable -ok3644: +ok3928: %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 15 %t100 = load i64, ptr %a2 %t101 = load { ptr, i64, i64 }, ptr %t99 %t102 = extractvalue { ptr, i64, i64 } %t101, 1 %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range3645, label %inrange3646 -range3645: - call void @finch_panic_index(ptr @.str.2223, i64 1497, i64 %t100, i64 %t102) + br i1 %t103, label %range3929, label %inrange3930 +range3929: + call void @finch_panic_index(ptr @.str.2436, i64 1622, i64 %t100, i64 %t102) unreachable -inrange3646: +inrange3930: %t104 = extractvalue { ptr, i64, i64 } %t101, 0 %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i64 %t100 %t106 = getelementptr inbounds %S.gen.StructDef, ptr %t105, i32 0, i32 11 @@ -33005,21 +36811,21 @@ inrange3646: store i64 %t114, ptr %t107 %t117 = load ptr, ptr %a1 %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2224, i64 1498, ptr @.str.2225) + br i1 %t118, label %panic3931, label %ok3932 +panic3931: + call void @finch_panic(ptr @.str.2437, i64 1623, ptr @.str.2438) unreachable -ok3648: +ok3932: %t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 15 %t120 = load i64, ptr %a2 %t121 = load { ptr, i64, i64 }, ptr %t119 %t122 = extractvalue { ptr, i64, i64 } %t121, 1 %t123 = icmp uge i64 %t120, %t122 - br i1 %t123, label %range3649, label %inrange3650 -range3649: - call void @finch_panic_index(ptr @.str.2226, i64 1498, i64 %t120, i64 %t122) + br i1 %t123, label %range3933, label %inrange3934 +range3933: + call void @finch_panic_index(ptr @.str.2439, i64 1623, i64 %t120, i64 %t122) unreachable -inrange3650: +inrange3934: %t124 = extractvalue { ptr, i64, i64 } %t121, 0 %t125 = getelementptr inbounds %S.gen.StructDef, ptr %t124, i64 %t120 %t126 = getelementptr inbounds %S.gen.StructDef, ptr %t125, i32 0, i32 12 @@ -33037,21 +36843,21 @@ inrange3650: store i64 %t133, ptr %t127 %t136 = load ptr, ptr %a1 %t137 = icmp eq ptr %t136, null - br i1 %t137, label %panic3651, label %ok3652 -panic3651: - call void @finch_panic(ptr @.str.2227, i64 1499, ptr @.str.2228) + br i1 %t137, label %panic3935, label %ok3936 +panic3935: + call void @finch_panic(ptr @.str.2440, i64 1624, ptr @.str.2441) unreachable -ok3652: +ok3936: %t138 = getelementptr inbounds %S.gen.Gen, ptr %t136, i32 0, i32 15 %t139 = load i64, ptr %a2 %t140 = load { ptr, i64, i64 }, ptr %t138 %t141 = extractvalue { ptr, i64, i64 } %t140, 1 %t142 = icmp uge i64 %t139, %t141 - br i1 %t142, label %range3653, label %inrange3654 -range3653: - call void @finch_panic_index(ptr @.str.2229, i64 1499, i64 %t139, i64 %t141) + br i1 %t142, label %range3937, label %inrange3938 +range3937: + call void @finch_panic_index(ptr @.str.2442, i64 1624, i64 %t139, i64 %t141) unreachable -inrange3654: +inrange3938: %t143 = extractvalue { ptr, i64, i64 } %t140, 0 %t144 = getelementptr inbounds %S.gen.StructDef, ptr %t143, i64 %t139 %t145 = getelementptr inbounds %S.gen.StructDef, ptr %t144, i32 0, i32 3 @@ -33067,21 +36873,21 @@ inrange3654: store i64 %t150, ptr %t146 %t153 = load ptr, ptr %a1 %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic3655, label %ok3656 -panic3655: - call void @finch_panic(ptr @.str.2230, i64 1500, ptr @.str.2231) + br i1 %t154, label %panic3939, label %ok3940 +panic3939: + call void @finch_panic(ptr @.str.2443, i64 1625, ptr @.str.2444) unreachable -ok3656: +ok3940: %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 15 %t156 = load i64, ptr %a2 %t157 = load { ptr, i64, i64 }, ptr %t155 %t158 = extractvalue { ptr, i64, i64 } %t157, 1 %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range3657, label %inrange3658 -range3657: - call void @finch_panic_index(ptr @.str.2232, i64 1500, i64 %t156, i64 %t158) + br i1 %t159, label %range3941, label %inrange3942 +range3941: + call void @finch_panic_index(ptr @.str.2445, i64 1625, i64 %t156, i64 %t158) unreachable -inrange3658: +inrange3942: %t160 = extractvalue { ptr, i64, i64 } %t157, 0 %t161 = getelementptr inbounds %S.gen.StructDef, ptr %t160, i64 %t156 %t162 = getelementptr inbounds %S.gen.StructDef, ptr %t161, i32 0, i32 4 @@ -33112,19 +36918,19 @@ inrange3658: %t181 = load i64, ptr %t180 %t182 = add i64 %t179, %t181 store i64 %t182, ptr %a42 - br label %each.step3632 -each.step3632: + br label %each.step3916 +each.step3916: %t183 = load i64, ptr %a45 %t184 = add i64 %t183, 1 store i64 %t184, ptr %a45 - br label %each.cond3630 -each.end3633: + br label %each.cond3914 +each.end3917: %t185 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 %t186 = load i64, ptr %t185 %t187 = load i64, ptr %a42 %t188 = icmp sgt i64 %t186, %t187 - br i1 %t188, label %then3659, label %endif3661 -then3659: + br i1 %t188, label %then3943, label %endif3945 +then3943: %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 %t190 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 %t191 = load i64, ptr %t190 @@ -33132,12 +36938,12 @@ then3659: %t193 = sub i64 %t191, %t192 call void @finch_str_from_int(ptr %a194, i64 %t193) %t195 = load { ptr, i64, i64 }, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.2233, i64 1, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.2446, i64 1, i64 0 }, ptr %a197 store { ptr, i64, i64 } %t195, ptr %a198 call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.2234, i64 6, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.2447, i64 6, i64 0 }, ptr %a202 call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 %t204 = load i64, ptr %t189 @@ -33147,27 +36953,27 @@ then3659: %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i64 %t204 store { ptr, i64, i64 } %t203, ptr %t207 store i64 %t205, ptr %t189 - br label %endif3661 -endif3661: + br label %endif3945 +endif3945: %t208 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 %t209 = load { ptr, i64, i64 }, ptr %t208 %t210 = load ptr, ptr %a1 %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic3662, label %ok3663 -panic3662: - call void @finch_panic(ptr @.str.2235, i64 1507, ptr @.str.2236) + br i1 %t211, label %panic3946, label %ok3947 +panic3946: + call void @finch_panic(ptr @.str.2448, i64 1632, ptr @.str.2449) unreachable -ok3663: +ok3947: %t212 = getelementptr inbounds %S.gen.Gen, ptr %t210, i32 0, i32 15 %t213 = load i64, ptr %a2 %t214 = load { ptr, i64, i64 }, ptr %t212 %t215 = extractvalue { ptr, i64, i64 } %t214, 1 %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range3664, label %inrange3665 -range3664: - call void @finch_panic_index(ptr @.str.2237, i64 1507, i64 %t213, i64 %t215) + br i1 %t216, label %range3948, label %inrange3949 +range3948: + call void @finch_panic_index(ptr @.str.2450, i64 1632, i64 %t213, i64 %t215) unreachable -inrange3665: +inrange3949: %t217 = extractvalue { ptr, i64, i64 } %t214, 0 %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i64 %t213 %t219 = getelementptr inbounds %S.gen.StructDef, ptr %t218, i32 0, i32 8 @@ -33177,63 +36983,63 @@ inrange3665: store { ptr, i64, i64 } %t222, ptr %t219 %t223 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 %t224 = load i1, ptr %t223 - br label %logic.from3666 -logic.from3666: - br i1 %t224, label %logic.rhs3667, label %logic.end3668 -logic.rhs3667: + br label %logic.from3950 +logic.from3950: + br i1 %t224, label %logic.rhs3951, label %logic.end3952 +logic.rhs3951: %t225 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i32 0, i32 1 %t227 = load i64, ptr %t226 %t228 = icmp eq i64 %t227, 0 - br label %logic.rend3669 -logic.rend3669: - br label %logic.end3668 -logic.end3668: - %t229 = phi i1 [ false, %logic.from3666 ], [ %t228, %logic.rend3669 ] - br i1 %t229, label %then3670, label %endif3672 -then3670: + br label %logic.rend3953 +logic.rend3953: + br label %logic.end3952 +logic.end3952: + %t229 = phi i1 [ false, %logic.from3950 ], [ %t228, %logic.rend3953 ] + br i1 %t229, label %then3954, label %endif3956 +then3954: %t230 = load ptr, ptr %a1 %t231 = icmp eq ptr %t230, null - br i1 %t231, label %panic3673, label %ok3674 -panic3673: - call void @finch_panic(ptr @.str.2239, i64 1509, ptr @.str.2240) + br i1 %t231, label %panic3957, label %ok3958 +panic3957: + call void @finch_panic(ptr @.str.2452, i64 1634, ptr @.str.2453) unreachable -ok3674: +ok3958: %t232 = getelementptr inbounds %S.gen.Gen, ptr %t230, i32 0, i32 15 %t233 = load i64, ptr %a2 %t234 = load { ptr, i64, i64 }, ptr %t232 %t235 = extractvalue { ptr, i64, i64 } %t234, 1 %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range3675, label %inrange3676 -range3675: - call void @finch_panic_index(ptr @.str.2241, i64 1509, i64 %t233, i64 %t235) + br i1 %t236, label %range3959, label %inrange3960 +range3959: + call void @finch_panic_index(ptr @.str.2454, i64 1634, i64 %t233, i64 %t235) unreachable -inrange3676: +inrange3960: %t237 = extractvalue { ptr, i64, i64 } %t234, 0 %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 8 - store { ptr, i64, i64 } { ptr @.str.2238, i64 49, i64 0 }, ptr %t239 - br label %endif3672 -endif3672: + store { ptr, i64, i64 } { ptr @.str.2451, i64 49, i64 0 }, ptr %t239 + br label %endif3956 +endif3956: %t240 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 %t241 = load i64, ptr %t240 %t242 = load ptr, ptr %a1 %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic3677, label %ok3678 -panic3677: - call void @finch_panic(ptr @.str.2242, i64 1511, ptr @.str.2243) + br i1 %t243, label %panic3961, label %ok3962 +panic3961: + call void @finch_panic(ptr @.str.2455, i64 1636, ptr @.str.2456) unreachable -ok3678: +ok3962: %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 15 %t245 = load i64, ptr %a2 %t246 = load { ptr, i64, i64 }, ptr %t244 %t247 = extractvalue { ptr, i64, i64 } %t246, 1 %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range3679, label %inrange3680 -range3679: - call void @finch_panic_index(ptr @.str.2244, i64 1511, i64 %t245, i64 %t247) + br i1 %t248, label %range3963, label %inrange3964 +range3963: + call void @finch_panic_index(ptr @.str.2457, i64 1636, i64 %t245, i64 %t247) unreachable -inrange3680: +inrange3964: %t249 = extractvalue { ptr, i64, i64 } %t246, 0 %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 9 @@ -33242,67 +37048,67 @@ inrange3680: %t253 = load i64, ptr %t252 %t254 = load ptr, ptr %a1 %t255 = icmp eq ptr %t254, null - br i1 %t255, label %panic3681, label %ok3682 -panic3681: - call void @finch_panic(ptr @.str.2245, i64 1512, ptr @.str.2246) + br i1 %t255, label %panic3965, label %ok3966 +panic3965: + call void @finch_panic(ptr @.str.2458, i64 1637, ptr @.str.2459) unreachable -ok3682: +ok3966: %t256 = getelementptr inbounds %S.gen.Gen, ptr %t254, i32 0, i32 15 %t257 = load i64, ptr %a2 %t258 = load { ptr, i64, i64 }, ptr %t256 %t259 = extractvalue { ptr, i64, i64 } %t258, 1 %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range3683, label %inrange3684 -range3683: - call void @finch_panic_index(ptr @.str.2247, i64 1512, i64 %t257, i64 %t259) + br i1 %t260, label %range3967, label %inrange3968 +range3967: + call void @finch_panic_index(ptr @.str.2460, i64 1637, i64 %t257, i64 %t259) unreachable -inrange3684: +inrange3968: %t261 = extractvalue { ptr, i64, i64 } %t258, 0 %t262 = getelementptr inbounds %S.gen.StructDef, ptr %t261, i64 %t257 %t263 = getelementptr inbounds %S.gen.StructDef, ptr %t262, i32 0, i32 10 store i64 %t253, ptr %t263 %t264 = load ptr, ptr %a1 %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic3685, label %ok3686 -panic3685: - call void @finch_panic(ptr @.str.2248, i64 1513, ptr @.str.2249) + br i1 %t265, label %panic3969, label %ok3970 +panic3969: + call void @finch_panic(ptr @.str.2461, i64 1638, ptr @.str.2462) unreachable -ok3686: +ok3970: %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 15 %t267 = load i64, ptr %a2 %t268 = load { ptr, i64, i64 }, ptr %t266 %t269 = extractvalue { ptr, i64, i64 } %t268, 1 %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range3687, label %inrange3688 -range3687: - call void @finch_panic_index(ptr @.str.2250, i64 1513, i64 %t267, i64 %t269) + br i1 %t270, label %range3971, label %inrange3972 +range3971: + call void @finch_panic_index(ptr @.str.2463, i64 1638, i64 %t267, i64 %t269) unreachable -inrange3688: +inrange3972: %t271 = extractvalue { ptr, i64, i64 } %t268, 0 %t272 = getelementptr inbounds %S.gen.StructDef, ptr %t271, i64 %t267 %t273 = getelementptr inbounds %S.gen.StructDef, ptr %t272, i32 0, i32 15 store i64 2, ptr %t273 %t274 = load ptr, ptr %a1 %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic3689, label %ok3690 -panic3689: - call void @finch_panic(ptr @.str.2251, i64 1514, ptr @.str.2252) + br i1 %t275, label %panic3973, label %ok3974 +panic3973: + call void @finch_panic(ptr @.str.2464, i64 1639, ptr @.str.2465) unreachable -ok3690: +ok3974: %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 2 %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i32 0, i32 1 %t278 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 %t279 = load { ptr, i64, i64 }, ptr %t278 - store { ptr, i64, i64 } { ptr @.str.2253, i64 5, i64 0 }, ptr %a281 + store { ptr, i64, i64 } { ptr @.str.2466, i64 5, i64 0 }, ptr %a281 store { ptr, i64, i64 } %t279, ptr %a282 call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) %t283 = load { ptr, i64, i64 }, ptr %a280 store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2254, i64 10, i64 0 }, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.2467, i64 10, i64 0 }, ptr %a286 call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) %t287 = load { ptr, i64, i64 }, ptr %a284 %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2255, i64 2, i64 0 }, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.2468, i64 2, i64 0 }, ptr %a289 call void @finch_str_join(ptr %a290, ptr %a43, ptr %a289) %t291 = load { ptr, i64, i64 }, ptr %a290 store { ptr, i64, i64 } %t287, ptr %a293 @@ -33310,7 +37116,7 @@ ok3690: call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) %t295 = load { ptr, i64, i64 }, ptr %a292 store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.2256, i64 2, i64 0 }, ptr %a298 + store { ptr, i64, i64 } { ptr @.str.2469, i64 2, i64 0 }, ptr %a298 call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) %t299 = load { ptr, i64, i64 }, ptr %a296 %t300 = load i64, ptr %t277 @@ -33356,95 +37162,95 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3691, label %ok3692 -panic3691: - call void @finch_panic(ptr @.str.2257, i64 1518, ptr @.str.2258) + br i1 %t4, label %panic3975, label %ok3976 +panic3975: + call void @finch_panic(ptr @.str.2470, i64 1643, ptr @.str.2471) unreachable -ok3692: +ok3976: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 %t6 = load i64, ptr %a2 %t7 = load { ptr, i64, i64 }, ptr %t5 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range3693, label %inrange3694 -range3693: - call void @finch_panic_index(ptr @.str.2259, i64 1518, i64 %t6, i64 %t8) + br i1 %t9, label %range3977, label %inrange3978 +range3977: + call void @finch_panic_index(ptr @.str.2472, i64 1643, i64 %t6, i64 %t8) unreachable -inrange3694: +inrange3978: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.StructDef, ptr %t10, i64 %t6 %t12 = getelementptr inbounds %S.gen.StructDef, ptr %t11, i32 0, i32 15 %t13 = load i64, ptr %t12 %t14 = icmp eq i64 %t13, 2 - br i1 %t14, label %then3695, label %endif3697 -then3695: + br i1 %t14, label %then3979, label %endif3981 +then3979: ret void -endif3697: +endif3981: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2260, i64 1521, ptr @.str.2261) + br i1 %t16, label %panic3982, label %ok3983 +panic3982: + call void @finch_panic(ptr @.str.2473, i64 1646, ptr @.str.2474) unreachable -ok3699: +ok3983: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 %t18 = load i64, ptr %a2 %t19 = load { ptr, i64, i64 }, ptr %t17 %t20 = extractvalue { ptr, i64, i64 } %t19, 1 %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range3700, label %inrange3701 -range3700: - call void @finch_panic_index(ptr @.str.2262, i64 1521, i64 %t18, i64 %t20) + br i1 %t21, label %range3984, label %inrange3985 +range3984: + call void @finch_panic_index(ptr @.str.2475, i64 1646, i64 %t18, i64 %t20) unreachable -inrange3701: +inrange3985: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i64 %t18 %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i32 0, i32 2 %t25 = load i1, ptr %t24 - br i1 %t25, label %then3702, label %endif3704 -then3702: + br i1 %t25, label %then3986, label %endif3988 +then3986: %t26 = load ptr, ptr %a1 %t27 = load i64, ptr %a2 call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) ret void -endif3704: +endif3988: %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3705, label %ok3706 -panic3705: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) + br i1 %t29, label %panic3989, label %ok3990 +panic3989: + call void @finch_panic(ptr @.str.2476, i64 1650, ptr @.str.2477) unreachable -ok3706: +ok3990: %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 15 %t31 = load i64, ptr %a2 %t32 = load { ptr, i64, i64 }, ptr %t30 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range3707, label %inrange3708 -range3707: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t31, i64 %t33) + br i1 %t34, label %range3991, label %inrange3992 +range3991: + call void @finch_panic_index(ptr @.str.2478, i64 1650, i64 %t31, i64 %t33) unreachable -inrange3708: +inrange3992: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.StructDef, ptr %t35, i64 %t31 %t37 = getelementptr inbounds %S.gen.StructDef, ptr %t36, i32 0, i32 5 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 %t39 = load i64, ptr %t38 %t40 = icmp eq i64 %t39, 0 - br i1 %t40, label %then3709, label %endif3711 -then3709: + br i1 %t40, label %then3993, label %endif3995 +then3993: %t41 = load ptr, ptr %a1 %t42 = load i64, ptr %a2 call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) ret void -endif3711: +endif3995: %t43 = load ptr, ptr %a1 %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic3712, label %ok3713 -panic3712: - call void @finch_panic(ptr @.str.2266, i64 1530, ptr @.str.2267) + br i1 %t44, label %panic3996, label %ok3997 +panic3996: + call void @finch_panic(ptr @.str.2479, i64 1655, ptr @.str.2480) unreachable -ok3713: +ok3997: %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 17 %t46 = load { ptr, i64, i64 }, ptr %t45 store { ptr, i64, i64 } %t46, ptr %a47 @@ -33453,11 +37259,11 @@ ok3713: store { ptr, i64, i64 } %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic3714, label %ok3715 -panic3714: - call void @finch_panic(ptr @.str.2268, i64 1531, ptr @.str.2269) + br i1 %t52, label %panic3998, label %ok3999 +panic3998: + call void @finch_panic(ptr @.str.2481, i64 1656, ptr @.str.2482) unreachable -ok3715: +ok3999: %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 18 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 @@ -33466,11 +37272,11 @@ ok3715: store { ptr, i64, i64 } %t57, ptr %a58 %t59 = load ptr, ptr %a1 %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic3716, label %ok3717 -panic3716: - call void @finch_panic(ptr @.str.2270, i64 1532, ptr @.str.2271) + br i1 %t60, label %panic4000, label %ok4001 +panic4000: + call void @finch_panic(ptr @.str.2483, i64 1657, ptr @.str.2484) unreachable -ok3717: +ok4001: %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 19 %t62 = load { ptr, i64, i64 }, ptr %t61 store { ptr, i64, i64 } %t62, ptr %a63 @@ -33479,32 +37285,32 @@ ok3717: store { ptr, i64, i64 } %t65, ptr %a66 %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2272, i64 1533, ptr @.str.2273) + br i1 %t68, label %panic4002, label %ok4003 +panic4002: + call void @finch_panic(ptr @.str.2485, i64 1658, ptr @.str.2486) unreachable -ok3719: +ok4003: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 15 %t70 = load i64, ptr %a2 %t71 = load { ptr, i64, i64 }, ptr %t69 %t72 = extractvalue { ptr, i64, i64 } %t71, 1 %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2274, i64 1533, i64 %t70, i64 %t72) + br i1 %t73, label %range4004, label %inrange4005 +range4004: + call void @finch_panic_index(ptr @.str.2487, i64 1658, i64 %t70, i64 %t72) unreachable -inrange3721: +inrange4005: %t74 = extractvalue { ptr, i64, i64 } %t71, 0 %t75 = getelementptr inbounds %S.gen.StructDef, ptr %t74, i64 %t70 %t76 = getelementptr inbounds %S.gen.StructDef, ptr %t75, i32 0, i32 6 %t77 = load { ptr, i64, i64 }, ptr %t76 %t78 = load ptr, ptr %a1 %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic3722, label %ok3723 -panic3722: - call void @finch_panic(ptr @.str.2275, i64 1533, ptr @.str.2276) + br i1 %t79, label %panic4006, label %ok4007 +panic4006: + call void @finch_panic(ptr @.str.2488, i64 1658, ptr @.str.2489) unreachable -ok3723: +ok4007: %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 17 store { ptr, i64, i64 } %t77, ptr %a81 call void @finch.copy.arr_str(ptr %a82, ptr %a81) @@ -33512,32 +37318,32 @@ ok3723: store { ptr, i64, i64 } %t83, ptr %t80 %t84 = load ptr, ptr %a1 %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3724, label %ok3725 -panic3724: - call void @finch_panic(ptr @.str.2277, i64 1534, ptr @.str.2278) + br i1 %t85, label %panic4008, label %ok4009 +panic4008: + call void @finch_panic(ptr @.str.2490, i64 1659, ptr @.str.2491) unreachable -ok3725: +ok4009: %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 15 %t87 = load i64, ptr %a2 %t88 = load { ptr, i64, i64 }, ptr %t86 %t89 = extractvalue { ptr, i64, i64 } %t88, 1 %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3726, label %inrange3727 -range3726: - call void @finch_panic_index(ptr @.str.2279, i64 1534, i64 %t87, i64 %t89) + br i1 %t90, label %range4010, label %inrange4011 +range4010: + call void @finch_panic_index(ptr @.str.2492, i64 1659, i64 %t87, i64 %t89) unreachable -inrange3727: +inrange4011: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds %S.gen.StructDef, ptr %t91, i64 %t87 %t93 = getelementptr inbounds %S.gen.StructDef, ptr %t92, i32 0, i32 7 %t94 = load { ptr, i64, i64 }, ptr %t93 %t95 = load ptr, ptr %a1 %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3728, label %ok3729 -panic3728: - call void @finch_panic(ptr @.str.2280, i64 1534, ptr @.str.2281) + br i1 %t96, label %panic4012, label %ok4013 +panic4012: + call void @finch_panic(ptr @.str.2493, i64 1659, ptr @.str.2494) unreachable -ok3729: +ok4013: %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 18 store { ptr, i64, i64 } %t94, ptr %a98 call void @finch.copy.arr_S_ast_Type(ptr %a99, ptr %a98) @@ -33545,40 +37351,40 @@ ok3729: store { ptr, i64, i64 } %t100, ptr %t97 %t101 = load ptr, ptr %a1 %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic3730, label %ok3731 -panic3730: - call void @finch_panic(ptr @.str.2283, i64 1535, ptr @.str.2284) + br i1 %t102, label %panic4014, label %ok4015 +panic4014: + call void @finch_panic(ptr @.str.2496, i64 1660, ptr @.str.2497) unreachable -ok3731: +ok4015: %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 15 %t104 = load i64, ptr %a2 %t105 = load { ptr, i64, i64 }, ptr %t103 %t106 = extractvalue { ptr, i64, i64 } %t105, 1 %t107 = icmp uge i64 %t104, %t106 - br i1 %t107, label %range3732, label %inrange3733 -range3732: - call void @finch_panic_index(ptr @.str.2285, i64 1535, i64 %t104, i64 %t106) + br i1 %t107, label %range4016, label %inrange4017 +range4016: + call void @finch_panic_index(ptr @.str.2498, i64 1660, i64 %t104, i64 %t106) unreachable -inrange3733: +inrange4017: %t108 = extractvalue { ptr, i64, i64 } %t105, 0 %t109 = getelementptr inbounds %S.gen.StructDef, ptr %t108, i64 %t104 %t110 = getelementptr inbounds %S.gen.StructDef, ptr %t109, i32 0, i32 1 %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } { ptr @.str.2282, i64 17, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.2495, i64 17, i64 0 }, ptr %a113 store { ptr, i64, i64 } %t111, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2286, i64 1, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.2499, i64 1, i64 0 }, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 %t120 = load ptr, ptr %a1 %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic3734, label %ok3735 -panic3734: - call void @finch_panic(ptr @.str.2287, i64 1535, ptr @.str.2288) + br i1 %t121, label %panic4018, label %ok4019 +panic4018: + call void @finch_panic(ptr @.str.2500, i64 1660, ptr @.str.2501) unreachable -ok3735: +ok4019: %t122 = getelementptr inbounds %S.gen.Gen, ptr %t120, i32 0, i32 19 store { ptr, i64, i64 } %t119, ptr %t122 %t123 = load ptr, ptr %a1 @@ -33587,11 +37393,11 @@ ok3735: %t125 = load { ptr, i64, i64 }, ptr %a50 %t126 = load ptr, ptr %a1 %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic3736, label %ok3737 -panic3736: - call void @finch_panic(ptr @.str.2289, i64 1537, ptr @.str.2290) + br i1 %t127, label %panic4020, label %ok4021 +panic4020: + call void @finch_panic(ptr @.str.2502, i64 1662, ptr @.str.2503) unreachable -ok3737: +ok4021: %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 17 store { ptr, i64, i64 } %t125, ptr %a129 call void @finch.copy.arr_str(ptr %a130, ptr %a129) @@ -33600,11 +37406,11 @@ ok3737: %t132 = load { ptr, i64, i64 }, ptr %a58 %t133 = load ptr, ptr %a1 %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic3738, label %ok3739 -panic3738: - call void @finch_panic(ptr @.str.2291, i64 1538, ptr @.str.2292) + br i1 %t134, label %panic4022, label %ok4023 +panic4022: + call void @finch_panic(ptr @.str.2504, i64 1663, ptr @.str.2505) unreachable -ok3739: +ok4023: %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 store { ptr, i64, i64 } %t132, ptr %a136 call void @finch.copy.arr_S_ast_Type(ptr %a137, ptr %a136) @@ -33613,11 +37419,11 @@ ok3739: %t139 = load { ptr, i64, i64 }, ptr %a66 %t140 = load ptr, ptr %a1 %t141 = icmp eq ptr %t140, null - br i1 %t141, label %panic3740, label %ok3741 -panic3740: - call void @finch_panic(ptr @.str.2293, i64 1539, ptr @.str.2294) + br i1 %t141, label %panic4024, label %ok4025 +panic4024: + call void @finch_panic(ptr @.str.2506, i64 1664, ptr @.str.2507) unreachable -ok3741: +ok4025: %t142 = getelementptr inbounds %S.gen.Gen, ptr %t140, i32 0, i32 19 store { ptr, i64, i64 } %t139, ptr %a143 call void @finch_str_copy(ptr %a144, ptr %a143) @@ -33693,29 +37499,29 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3742, label %ok3743 -panic3742: - call void @finch_panic(ptr @.str.2295, i64 1543, ptr @.str.2296) + br i1 %t4, label %panic4026, label %ok4027 +panic4026: + call void @finch_panic(ptr @.str.2508, i64 1668, ptr @.str.2509) unreachable -ok3743: +ok4027: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 0 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic3744, label %ok3745 -panic3744: - call void @finch_panic(ptr @.str.2297, i64 1543, ptr @.str.2298) + br i1 %t7, label %panic4028, label %ok4029 +panic4028: + call void @finch_panic(ptr @.str.2510, i64 1668, ptr @.str.2511) unreachable -ok3745: +ok4029: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 %t9 = load i64, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range3746, label %inrange3747 -range3746: - call void @finch_panic_index(ptr @.str.2299, i64 1543, i64 %t9, i64 %t11) + br i1 %t12, label %range4030, label %inrange4031 +range4030: + call void @finch_panic_index(ptr @.str.2512, i64 1668, i64 %t9, i64 %t11) unreachable -inrange3747: +inrange4031: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 %t15 = getelementptr inbounds %S.gen.StructDef, ptr %t14, i32 0, i32 13 @@ -33723,31 +37529,31 @@ inrange3747: %t17 = load { ptr, i64, i64 }, ptr %t5 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3748, label %inrange3749 -range3748: - call void @finch_panic_index(ptr @.str.2300, i64 1543, i64 %t16, i64 %t18) + br i1 %t19, label %range4032, label %inrange4033 +range4032: + call void @finch_panic_index(ptr @.str.2513, i64 1668, i64 %t16, i64 %t18) unreachable -inrange3749: +inrange4033: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.ast.Program, ptr %t20, i64 %t16 %t22 = getelementptr inbounds %S.ast.Program, ptr %t21, i32 0, i32 6 %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2301, i64 1543, ptr @.str.2302) + br i1 %t24, label %panic4034, label %ok4035 +panic4034: + call void @finch_panic(ptr @.str.2514, i64 1668, ptr @.str.2515) unreachable -ok3751: +ok4035: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 15 %t26 = load i64, ptr %a2 %t27 = load { ptr, i64, i64 }, ptr %t25 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range3752, label %inrange3753 -range3752: - call void @finch_panic_index(ptr @.str.2303, i64 1543, i64 %t26, i64 %t28) + br i1 %t29, label %range4036, label %inrange4037 +range4036: + call void @finch_panic_index(ptr @.str.2516, i64 1668, i64 %t26, i64 %t28) unreachable -inrange3753: +inrange4037: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.gen.StructDef, ptr %t30, i64 %t26 %t32 = getelementptr inbounds %S.gen.StructDef, ptr %t31, i32 0, i32 14 @@ -33755,11 +37561,11 @@ inrange3753: %t34 = load { ptr, i64, i64 }, ptr %t22 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp uge i64 %t33, %t35 - br i1 %t36, label %range3754, label %inrange3755 -range3754: - call void @finch_panic_index(ptr @.str.2304, i64 1543, i64 %t33, i64 %t35) + br i1 %t36, label %range4038, label %inrange4039 +range4038: + call void @finch_panic_index(ptr @.str.2517, i64 1668, i64 %t33, i64 %t35) unreachable -inrange3755: +inrange4039: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t33 %t39 = load %S.ast.Node, ptr %t38 @@ -33769,38 +37575,38 @@ inrange3755: store %S.ast.Node %t42, ptr %a43 %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3756, label %ok3757 -panic3756: - call void @finch_panic(ptr @.str.2305, i64 1544, ptr @.str.2306) + br i1 %t45, label %panic4040, label %ok4041 +panic4040: + call void @finch_panic(ptr @.str.2518, i64 1669, ptr @.str.2519) unreachable -ok3757: +ok4041: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 15 %t47 = load i64, ptr %a2 %t48 = load { ptr, i64, i64 }, ptr %t46 %t49 = extractvalue { ptr, i64, i64 } %t48, 1 %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3758, label %inrange3759 -range3758: - call void @finch_panic_index(ptr @.str.2307, i64 1544, i64 %t47, i64 %t49) + br i1 %t50, label %range4042, label %inrange4043 +range4042: + call void @finch_panic_index(ptr @.str.2520, i64 1669, i64 %t47, i64 %t49) unreachable -inrange3759: +inrange4043: %t51 = extractvalue { ptr, i64, i64 } %t48, 0 %t52 = getelementptr inbounds %S.gen.StructDef, ptr %t51, i64 %t47 %t53 = getelementptr inbounds %S.gen.StructDef, ptr %t52, i32 0, i32 15 %t54 = load i64, ptr %t53 %t55 = icmp eq i64 %t54, 1 - br i1 %t55, label %then3760, label %endif3762 -then3760: + br i1 %t55, label %then4044, label %endif4046 +then4044: %t56 = load ptr, ptr %a1 %t57 = load %S.ast.Node, ptr %a43 %t58 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.2308, i64 11, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2521, i64 11, i64 0 }, ptr %a61 store { ptr, i64, i64 } %t59, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2309, i64 26, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2522, i64 26, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 %t68 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 @@ -33810,7 +37616,7 @@ then3760: call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2310, i64 7, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.2523, i64 7, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 %t78 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 @@ -33820,40 +37626,40 @@ then3760: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2311, i64 15, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.2524, i64 15, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t87) - br label %endif3762 -endif3762: + br label %endif4046 +endif4046: %t88 = load ptr, ptr %a1 %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic3763, label %ok3764 -panic3763: - call void @finch_panic(ptr @.str.2312, i64 1547, ptr @.str.2313) + br i1 %t89, label %panic4047, label %ok4048 +panic4047: + call void @finch_panic(ptr @.str.2525, i64 1672, ptr @.str.2526) unreachable -ok3764: +ok4048: %t90 = getelementptr inbounds %S.gen.Gen, ptr %t88, i32 0, i32 15 %t91 = load i64, ptr %a2 %t92 = load { ptr, i64, i64 }, ptr %t90 %t93 = extractvalue { ptr, i64, i64 } %t92, 1 %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range3765, label %inrange3766 -range3765: - call void @finch_panic_index(ptr @.str.2314, i64 1547, i64 %t91, i64 %t93) + br i1 %t94, label %range4049, label %inrange4050 +range4049: + call void @finch_panic_index(ptr @.str.2527, i64 1672, i64 %t91, i64 %t93) unreachable -inrange3766: +inrange4050: %t95 = extractvalue { ptr, i64, i64 } %t92, 0 %t96 = getelementptr inbounds %S.gen.StructDef, ptr %t95, i64 %t91 %t97 = getelementptr inbounds %S.gen.StructDef, ptr %t96, i32 0, i32 15 store i64 1, ptr %t97 %t98 = load ptr, ptr %a1 %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic3767, label %ok3768 -panic3767: - call void @finch_panic(ptr @.str.2315, i64 1548, ptr @.str.2316) + br i1 %t99, label %panic4051, label %ok4052 +panic4051: + call void @finch_panic(ptr @.str.2528, i64 1673, ptr @.str.2529) unreachable -ok3768: +ok4052: %t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 13 %t101 = load { ptr, i64, i64 }, ptr %t100 store { ptr, i64, i64 } %t101, ptr %a102 @@ -33862,32 +37668,32 @@ ok3768: store { ptr, i64, i64 } %t104, ptr %a105 %t106 = load ptr, ptr %a1 %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3769, label %ok3770 -panic3769: - call void @finch_panic(ptr @.str.2317, i64 1549, ptr @.str.2318) + br i1 %t107, label %panic4053, label %ok4054 +panic4053: + call void @finch_panic(ptr @.str.2530, i64 1674, ptr @.str.2531) unreachable -ok3770: +ok4054: %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 15 %t109 = load i64, ptr %a2 %t110 = load { ptr, i64, i64 }, ptr %t108 %t111 = extractvalue { ptr, i64, i64 } %t110, 1 %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range3771, label %inrange3772 -range3771: - call void @finch_panic_index(ptr @.str.2319, i64 1549, i64 %t109, i64 %t111) + br i1 %t112, label %range4055, label %inrange4056 +range4055: + call void @finch_panic_index(ptr @.str.2532, i64 1674, i64 %t109, i64 %t111) unreachable -inrange3772: +inrange4056: %t113 = extractvalue { ptr, i64, i64 } %t110, 0 %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i64 %t109 %t115 = getelementptr inbounds %S.gen.StructDef, ptr %t114, i32 0, i32 0 %t116 = load { ptr, i64, i64 }, ptr %t115 %t117 = load ptr, ptr %a1 %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic3773, label %ok3774 -panic3773: - call void @finch_panic(ptr @.str.2320, i64 1549, ptr @.str.2321) + br i1 %t118, label %panic4057, label %ok4058 +panic4057: + call void @finch_panic(ptr @.str.2533, i64 1674, ptr @.str.2534) unreachable -ok3774: +ok4058: %t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 13 store { ptr, i64, i64 } %t116, ptr %a120 call void @finch_str_copy(ptr %a121, ptr %a120) @@ -33897,14 +37703,14 @@ ok3774: store { ptr, i64, i64 } zeroinitializer, ptr %a124 %t125 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 store i64 0, ptr %a126 - br label %each.cond3775 -each.cond3775: + br label %each.cond4059 +each.cond4059: %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 %t128 = load i64, ptr %t127 %t129 = load i64, ptr %a126 %t130 = icmp slt i64 %t129, %t128 - br i1 %t130, label %each.body3776, label %each.end3778 -each.body3776: + br i1 %t130, label %each.body4060, label %each.end4062 +each.body4060: %t131 = load ptr, ptr %t125 %t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 %t129 %t133 = load %S.ast.Node, ptr %t132 @@ -33918,11 +37724,11 @@ each.body3776: %t141 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 0 %t142 = load { ptr, i64, i64 }, ptr %t141 store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2322, i64 6, i64 0 }, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.2535, i64 6, i64 0 }, ptr %a144 %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then3779, label %endif3781 -then3779: + br i1 %t146, label %then4063, label %endif4065 +then4063: %t147 = load ptr, ptr %a1 %t148 = load ptr, ptr %a1 %t149 = getelementptr inbounds %S.ast.Type, ptr %a140, i32 0, i32 3 @@ -33931,46 +37737,46 @@ then3779: %t152 = load { ptr, i64, i64 }, ptr %t151 %t153 = call i64 @finch.gen.findStruct(ptr %t148, { ptr, i64, i64 } %t150, { ptr, i64, i64 } %t152) call void @finch.gen.resolveStruct(ptr %t147, i64 %t153) - br label %endif3781 -endif3781: + br label %endif4065 +endif4065: %t154 = load ptr, ptr %a1 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic3782, label %ok3783 -panic3782: - call void @finch_panic(ptr @.str.2323, i64 1557, ptr @.str.2324) + br i1 %t155, label %panic4066, label %ok4067 +panic4066: + call void @finch_panic(ptr @.str.2536, i64 1682, ptr @.str.2537) unreachable -ok3783: +ok4067: %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 15 %t157 = load i64, ptr %a2 %t158 = load { ptr, i64, i64 }, ptr %t156 %t159 = extractvalue { ptr, i64, i64 } %t158, 1 %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range3784, label %inrange3785 -range3784: - call void @finch_panic_index(ptr @.str.2325, i64 1557, i64 %t157, i64 %t159) + br i1 %t160, label %range4068, label %inrange4069 +range4068: + call void @finch_panic_index(ptr @.str.2538, i64 1682, i64 %t157, i64 %t159) unreachable -inrange3785: +inrange4069: %t161 = extractvalue { ptr, i64, i64 } %t158, 0 %t162 = getelementptr inbounds %S.gen.StructDef, ptr %t161, i64 %t157 %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i32 0, i32 3 %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 %t165 = load ptr, ptr %a1 %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3786, label %ok3787 -panic3786: - call void @finch_panic(ptr @.str.2326, i64 1557, ptr @.str.2327) + br i1 %t166, label %panic4070, label %ok4071 +panic4070: + call void @finch_panic(ptr @.str.2539, i64 1682, ptr @.str.2540) unreachable -ok3787: +ok4071: %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 15 %t168 = load i64, ptr %a2 %t169 = load { ptr, i64, i64 }, ptr %t167 %t170 = extractvalue { ptr, i64, i64 } %t169, 1 %t171 = icmp uge i64 %t168, %t170 - br i1 %t171, label %range3788, label %inrange3789 -range3788: - call void @finch_panic_index(ptr @.str.2328, i64 1557, i64 %t168, i64 %t170) + br i1 %t171, label %range4072, label %inrange4073 +range4072: + call void @finch_panic_index(ptr @.str.2541, i64 1682, i64 %t168, i64 %t170) unreachable -inrange3789: +inrange4073: %t172 = extractvalue { ptr, i64, i64 } %t169, 0 %t173 = getelementptr inbounds %S.gen.StructDef, ptr %t172, i64 %t168 %t174 = getelementptr inbounds %S.gen.StructDef, ptr %t173, i32 0, i32 11 @@ -33985,21 +37791,21 @@ inrange3789: store i64 %t178, ptr %t164 %t181 = load ptr, ptr %a1 %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic3790, label %ok3791 -panic3790: - call void @finch_panic(ptr @.str.2329, i64 1558, ptr @.str.2330) + br i1 %t182, label %panic4074, label %ok4075 +panic4074: + call void @finch_panic(ptr @.str.2542, i64 1683, ptr @.str.2543) unreachable -ok3791: +ok4075: %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 15 %t184 = load i64, ptr %a2 %t185 = load { ptr, i64, i64 }, ptr %t183 %t186 = extractvalue { ptr, i64, i64 } %t185, 1 %t187 = icmp uge i64 %t184, %t186 - br i1 %t187, label %range3792, label %inrange3793 -range3792: - call void @finch_panic_index(ptr @.str.2331, i64 1558, i64 %t184, i64 %t186) + br i1 %t187, label %range4076, label %inrange4077 +range4076: + call void @finch_panic_index(ptr @.str.2544, i64 1683, i64 %t184, i64 %t186) unreachable -inrange3793: +inrange4077: %t188 = extractvalue { ptr, i64, i64 } %t185, 0 %t189 = getelementptr inbounds %S.gen.StructDef, ptr %t188, i64 %t184 %t190 = getelementptr inbounds %S.gen.StructDef, ptr %t189, i32 0, i32 11 @@ -34018,21 +37824,21 @@ inrange3793: store i64 %t198, ptr %t191 %t201 = load ptr, ptr %a1 %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic3794, label %ok3795 -panic3794: - call void @finch_panic(ptr @.str.2332, i64 1559, ptr @.str.2333) + br i1 %t202, label %panic4078, label %ok4079 +panic4078: + call void @finch_panic(ptr @.str.2545, i64 1684, ptr @.str.2546) unreachable -ok3795: +ok4079: %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 15 %t204 = load i64, ptr %a2 %t205 = load { ptr, i64, i64 }, ptr %t203 %t206 = extractvalue { ptr, i64, i64 } %t205, 1 %t207 = icmp uge i64 %t204, %t206 - br i1 %t207, label %range3796, label %inrange3797 -range3796: - call void @finch_panic_index(ptr @.str.2334, i64 1559, i64 %t204, i64 %t206) + br i1 %t207, label %range4080, label %inrange4081 +range4080: + call void @finch_panic_index(ptr @.str.2547, i64 1684, i64 %t204, i64 %t206) unreachable -inrange3797: +inrange4081: %t208 = extractvalue { ptr, i64, i64 } %t205, 0 %t209 = getelementptr inbounds %S.gen.StructDef, ptr %t208, i64 %t204 %t210 = getelementptr inbounds %S.gen.StructDef, ptr %t209, i32 0, i32 12 @@ -34051,11 +37857,11 @@ inrange3797: %t220 = load ptr, ptr %a1 %t221 = load %S.ast.Type, ptr %a140 %t222 = call i1 @finch.gen.owning(ptr %t220, %S.ast.Type %t221) - br i1 %t222, label %then3798, label %endif3800 -then3798: + br i1 %t222, label %then4082, label %endif4084 +then4082: store i1 true, ptr %a123 - br label %endif3800 -endif3800: + br label %endif4084 +endif4084: %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 %t224 = load ptr, ptr %a1 %t225 = load %S.ast.Type, ptr %a140 @@ -34067,31 +37873,31 @@ endif3800: %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 store { ptr, i64, i64 } %t226, ptr %t230 store i64 %t228, ptr %t223 - br label %each.step3777 -each.step3777: + br label %each.step4061 +each.step4061: %t231 = load i64, ptr %a126 %t232 = add i64 %t231, 1 store i64 %t232, ptr %a126 - br label %each.cond3775 -each.end3778: + br label %each.cond4059 +each.end4062: %t233 = load i1, ptr %a123 %t234 = load ptr, ptr %a1 %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic3801, label %ok3802 -panic3801: - call void @finch_panic(ptr @.str.2335, i64 1565, ptr @.str.2336) + br i1 %t235, label %panic4085, label %ok4086 +panic4085: + call void @finch_panic(ptr @.str.2548, i64 1690, ptr @.str.2549) unreachable -ok3802: +ok4086: %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 15 %t237 = load i64, ptr %a2 %t238 = load { ptr, i64, i64 }, ptr %t236 %t239 = extractvalue { ptr, i64, i64 } %t238, 1 %t240 = icmp uge i64 %t237, %t239 - br i1 %t240, label %range3803, label %inrange3804 -range3803: - call void @finch_panic_index(ptr @.str.2337, i64 1565, i64 %t237, i64 %t239) + br i1 %t240, label %range4087, label %inrange4088 +range4087: + call void @finch_panic_index(ptr @.str.2550, i64 1690, i64 %t237, i64 %t239) unreachable -inrange3804: +inrange4088: %t241 = extractvalue { ptr, i64, i64 } %t238, 0 %t242 = getelementptr inbounds %S.gen.StructDef, ptr %t241, i64 %t237 %t243 = getelementptr inbounds %S.gen.StructDef, ptr %t242, i32 0, i32 16 @@ -34099,11 +37905,11 @@ inrange3804: %t244 = load { ptr, i64, i64 }, ptr %a105 %t245 = load ptr, ptr %a1 %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic3805, label %ok3806 -panic3805: - call void @finch_panic(ptr @.str.2338, i64 1566, ptr @.str.2339) + br i1 %t246, label %panic4089, label %ok4090 +panic4089: + call void @finch_panic(ptr @.str.2551, i64 1691, ptr @.str.2552) unreachable -ok3806: +ok4090: %t247 = getelementptr inbounds %S.gen.Gen, ptr %t245, i32 0, i32 13 store { ptr, i64, i64 } %t244, ptr %a248 call void @finch_str_copy(ptr %a249, ptr %a248) @@ -34111,81 +37917,81 @@ ok3806: store { ptr, i64, i64 } %t250, ptr %t247 %t251 = load ptr, ptr %a1 %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic3807, label %ok3808 -panic3807: - call void @finch_panic(ptr @.str.2340, i64 1567, ptr @.str.2341) + br i1 %t252, label %panic4091, label %ok4092 +panic4091: + call void @finch_panic(ptr @.str.2553, i64 1692, ptr @.str.2554) unreachable -ok3808: +ok4092: %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 15 %t254 = load i64, ptr %a2 %t255 = load { ptr, i64, i64 }, ptr %t253 %t256 = extractvalue { ptr, i64, i64 } %t255, 1 %t257 = icmp uge i64 %t254, %t256 - br i1 %t257, label %range3809, label %inrange3810 -range3809: - call void @finch_panic_index(ptr @.str.2342, i64 1567, i64 %t254, i64 %t256) + br i1 %t257, label %range4093, label %inrange4094 +range4093: + call void @finch_panic_index(ptr @.str.2555, i64 1692, i64 %t254, i64 %t256) unreachable -inrange3810: +inrange4094: %t258 = extractvalue { ptr, i64, i64 } %t255, 0 %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i64 %t254 %t260 = getelementptr inbounds %S.gen.StructDef, ptr %t259, i32 0, i32 15 store i64 2, ptr %t260 %t261 = load ptr, ptr %a1 %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic3811, label %ok3812 -panic3811: - call void @finch_panic(ptr @.str.2343, i64 1568, ptr @.str.2344) + br i1 %t262, label %panic4095, label %ok4096 +panic4095: + call void @finch_panic(ptr @.str.2556, i64 1693, ptr @.str.2557) unreachable -ok3812: +ok4096: %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 2 %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 %t265 = load ptr, ptr %a1 %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic3813, label %ok3814 -panic3813: - call void @finch_panic(ptr @.str.2346, i64 1568, ptr @.str.2347) + br i1 %t266, label %panic4097, label %ok4098 +panic4097: + call void @finch_panic(ptr @.str.2559, i64 1693, ptr @.str.2560) unreachable -ok3814: +ok4098: %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 15 %t268 = load i64, ptr %a2 %t269 = load { ptr, i64, i64 }, ptr %t267 %t270 = extractvalue { ptr, i64, i64 } %t269, 1 %t271 = icmp uge i64 %t268, %t270 - br i1 %t271, label %range3815, label %inrange3816 -range3815: - call void @finch_panic_index(ptr @.str.2348, i64 1568, i64 %t268, i64 %t270) + br i1 %t271, label %range4099, label %inrange4100 +range4099: + call void @finch_panic_index(ptr @.str.2561, i64 1693, i64 %t268, i64 %t270) unreachable -inrange3816: +inrange4100: %t272 = extractvalue { ptr, i64, i64 } %t269, 0 %t273 = getelementptr inbounds %S.gen.StructDef, ptr %t272, i64 %t268 %t274 = getelementptr inbounds %S.gen.StructDef, ptr %t273, i32 0, i32 0 %t275 = load { ptr, i64, i64 }, ptr %t274 %t276 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t275) - store { ptr, i64, i64 } { ptr @.str.2345, i64 3, i64 0 }, ptr %a278 + store { ptr, i64, i64 } { ptr @.str.2558, i64 3, i64 0 }, ptr %a278 store { ptr, i64, i64 } %t276, ptr %a279 call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) %t280 = load { ptr, i64, i64 }, ptr %a277 store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2349, i64 1, i64 0 }, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.2562, i64 1, i64 0 }, ptr %a283 call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) %t284 = load { ptr, i64, i64 }, ptr %a281 %t285 = load ptr, ptr %a1 %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic3817, label %ok3818 -panic3817: - call void @finch_panic(ptr @.str.2350, i64 1568, ptr @.str.2351) + br i1 %t286, label %panic4101, label %ok4102 +panic4101: + call void @finch_panic(ptr @.str.2563, i64 1693, ptr @.str.2564) unreachable -ok3818: +ok4102: %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 15 %t288 = load i64, ptr %a2 %t289 = load { ptr, i64, i64 }, ptr %t287 %t290 = extractvalue { ptr, i64, i64 } %t289, 1 %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2352, i64 1568, i64 %t288, i64 %t290) + br i1 %t291, label %range4103, label %inrange4104 +range4103: + call void @finch_panic_index(ptr @.str.2565, i64 1693, i64 %t288, i64 %t290) unreachable -inrange3820: +inrange4104: %t292 = extractvalue { ptr, i64, i64 } %t289, 0 %t293 = getelementptr inbounds %S.gen.StructDef, ptr %t292, i64 %t288 %t294 = getelementptr inbounds %S.gen.StructDef, ptr %t293, i32 0, i32 1 @@ -34196,11 +38002,11 @@ inrange3820: call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) %t300 = load { ptr, i64, i64 }, ptr %a297 store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.2353, i64 10, i64 0 }, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.2566, i64 10, i64 0 }, ptr %a303 call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) %t304 = load { ptr, i64, i64 }, ptr %a301 %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2354, i64 2, i64 0 }, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.2567, i64 2, i64 0 }, ptr %a306 call void @finch_str_join(ptr %a307, ptr %a124, ptr %a306) %t308 = load { ptr, i64, i64 }, ptr %a307 store { ptr, i64, i64 } %t304, ptr %a310 @@ -34208,7 +38014,7 @@ inrange3820: call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) %t312 = load { ptr, i64, i64 }, ptr %a309 store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.2355, i64 2, i64 0 }, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.2568, i64 2, i64 0 }, ptr %a315 call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) %t316 = load { ptr, i64, i64 }, ptr %a313 %t317 = load i64, ptr %t264 @@ -34231,12 +38037,12 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3821, label %ok3822 -panic3821: - call void @finch_panic(ptr @.str.2356, i64 1577, ptr @.str.2357) + br i1 %t4, label %panic4105, label %ok4106 +panic4105: + call void @finch_panic(ptr @.str.2569, i64 1702, ptr @.str.2570) unreachable -ok3822: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 +ok4106: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t7, ptr %a8 @@ -34251,12 +38057,12 @@ ok3822: store i64 %t12, ptr %t6 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic3823, label %ok3824 -panic3823: - call void @finch_panic(ptr @.str.2358, i64 1578, ptr @.str.2359) + br i1 %t16, label %panic4107, label %ok4108 +panic4107: + call void @finch_panic(ptr @.str.2571, i64 1703, ptr @.str.2572) unreachable -ok3824: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 +ok4108: + %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 31 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 %t19 = load i64, ptr %t18 %t20 = sub i64 %t19, 1 @@ -34273,14 +38079,14 @@ entry: store i64 %p0, ptr %a1 %t2 = load i64, ptr %a1 %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then3825, label %endif3827 -then3825: - ret { ptr, i64, i64 } { ptr @.str.2360, i64 4, i64 0 } -endif3827: + br i1 %t3, label %then4109, label %endif4111 +then4109: + ret { ptr, i64, i64 } { ptr @.str.2573, i64 4, i64 0 } +endif4111: %t4 = load i64, ptr %a1 call void @finch_str_from_int(ptr %a5, i64 %t4) %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2574, i64 1, i64 0 }, ptr %a8 store { ptr, i64, i64 } %t6, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 @@ -34295,22 +38101,22 @@ entry: store i64 %p1, ptr %a2 %t3 = load i64, ptr %a2 %t4 = icmp sle i64 %t3, 1 - br i1 %t4, label %then3828, label %endif3830 -then3828: + br i1 %t4, label %then4112, label %endif4114 +then4112: %t5 = load i64, ptr %a1 ret i64 %t5 -endif3830: +endif4114: %t6 = load i64, ptr %a1 %t7 = load i64, ptr %a2 %t8 = add i64 %t6, %t7 %t9 = sub i64 %t8, 1 %t10 = load i64, ptr %a2 %t11 = icmp eq i64 %t10, 0 - br i1 %t11, label %panic3831, label %ok3832 -panic3831: - call void @finch_panic(ptr @.str.2362, i64 1597, ptr @.str.2363) + br i1 %t11, label %panic4115, label %ok4116 +panic4115: + call void @finch_panic(ptr @.str.2575, i64 1722, ptr @.str.2576) unreachable -ok3832: +ok4116: %t12 = sdiv i64 %t9, %t10 %t13 = load i64, ptr %a2 %t14 = mul i64 %t12, %t13 @@ -34373,188 +38179,188 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.2364, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2577, i64 4, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.from3833 -logic.from3833: - br i1 %t13, label %logic.end3835, label %logic.rhs3834 -logic.rhs3834: + br label %logic.from4117 +logic.from4117: + br i1 %t13, label %logic.end4119, label %logic.rhs4118 +logic.rhs4118: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2365, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2578, i64 4, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br label %logic.rend3836 -logic.rend3836: - br label %logic.end3835 -logic.end3835: - %t19 = phi i1 [ true, %logic.from3833 ], [ %t18, %logic.rend3836 ] - br label %logic.from3837 -logic.from3837: - br i1 %t19, label %logic.end3839, label %logic.rhs3838 -logic.rhs3838: + br label %logic.rend4120 +logic.rend4120: + br label %logic.end4119 +logic.end4119: + %t19 = phi i1 [ true, %logic.from4117 ], [ %t18, %logic.rend4120 ] + br label %logic.from4121 +logic.from4121: + br i1 %t19, label %logic.end4123, label %logic.rhs4122 +logic.rhs4122: %t20 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2366, i64 2, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.2579, i64 2, i64 0 }, ptr %a22 %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) %t24 = icmp ne i32 %t23, 0 - br label %logic.rend3840 -logic.rend3840: - br label %logic.end3839 -logic.end3839: - %t25 = phi i1 [ true, %logic.from3837 ], [ %t24, %logic.rend3840 ] - br label %logic.from3841 -logic.from3841: - br i1 %t25, label %logic.end3843, label %logic.rhs3842 -logic.rhs3842: + br label %logic.rend4124 +logic.rend4124: + br label %logic.end4123 +logic.end4123: + %t25 = phi i1 [ true, %logic.from4121 ], [ %t24, %logic.rend4124 ] + br label %logic.from4125 +logic.from4125: + br i1 %t25, label %logic.end4127, label %logic.rhs4126 +logic.rhs4126: %t26 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2367, i64 2, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2580, i64 2, i64 0 }, ptr %a28 %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) %t30 = icmp ne i32 %t29, 0 - br label %logic.rend3844 -logic.rend3844: - br label %logic.end3843 -logic.end3843: - %t31 = phi i1 [ true, %logic.from3841 ], [ %t30, %logic.rend3844 ] - br i1 %t31, label %then3845, label %endif3847 -then3845: + br label %logic.rend4128 +logic.rend4128: + br label %logic.end4127 +logic.end4127: + %t31 = phi i1 [ true, %logic.from4125 ], [ %t30, %logic.rend4128 ] + br i1 %t31, label %then4129, label %endif4131 +then4129: %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 ret %S.gen.SizeAlign %t33 -endif3847: +endif4131: %t34 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2368, i64 3, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2581, i64 3, i64 0 }, ptr %a36 %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) %t38 = icmp ne i32 %t37, 0 - br label %logic.from3848 -logic.from3848: - br i1 %t38, label %logic.end3850, label %logic.rhs3849 -logic.rhs3849: + br label %logic.from4132 +logic.from4132: + br i1 %t38, label %logic.end4134, label %logic.rhs4133 +logic.rhs4133: %t39 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2369, i64 3, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.2582, i64 3, i64 0 }, ptr %a41 %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) %t43 = icmp ne i32 %t42, 0 - br label %logic.rend3851 -logic.rend3851: - br label %logic.end3850 -logic.end3850: - %t44 = phi i1 [ true, %logic.from3848 ], [ %t43, %logic.rend3851 ] - br i1 %t44, label %then3852, label %endif3854 -then3852: + br label %logic.rend4135 +logic.rend4135: + br label %logic.end4134 +logic.end4134: + %t44 = phi i1 [ true, %logic.from4132 ], [ %t43, %logic.rend4135 ] + br i1 %t44, label %then4136, label %endif4138 +then4136: %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 ret %S.gen.SizeAlign %t46 -endif3854: +endif4138: %t47 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2370, i64 3, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.2583, i64 3, i64 0 }, ptr %a49 %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) %t51 = icmp ne i32 %t50, 0 - br label %logic.from3855 -logic.from3855: - br i1 %t51, label %logic.end3857, label %logic.rhs3856 -logic.rhs3856: + br label %logic.from4139 +logic.from4139: + br i1 %t51, label %logic.end4141, label %logic.rhs4140 +logic.rhs4140: %t52 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2371, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.2584, i64 3, i64 0 }, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br label %logic.rend3858 -logic.rend3858: - br label %logic.end3857 -logic.end3857: - %t57 = phi i1 [ true, %logic.from3855 ], [ %t56, %logic.rend3858 ] - br label %logic.from3859 -logic.from3859: - br i1 %t57, label %logic.end3861, label %logic.rhs3860 -logic.rhs3860: + br label %logic.rend4142 +logic.rend4142: + br label %logic.end4141 +logic.end4141: + %t57 = phi i1 [ true, %logic.from4139 ], [ %t56, %logic.rend4142 ] + br label %logic.from4143 +logic.from4143: + br i1 %t57, label %logic.end4145, label %logic.rhs4144 +logic.rhs4144: %t58 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2372, i64 3, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.2585, i64 3, i64 0 }, ptr %a60 %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) %t62 = icmp ne i32 %t61, 0 - br label %logic.rend3862 -logic.rend3862: - br label %logic.end3861 -logic.end3861: - %t63 = phi i1 [ true, %logic.from3859 ], [ %t62, %logic.rend3862 ] - br label %logic.from3863 -logic.from3863: - br i1 %t63, label %logic.end3865, label %logic.rhs3864 -logic.rhs3864: + br label %logic.rend4146 +logic.rend4146: + br label %logic.end4145 +logic.end4145: + %t63 = phi i1 [ true, %logic.from4143 ], [ %t62, %logic.rend4146 ] + br label %logic.from4147 +logic.from4147: + br i1 %t63, label %logic.end4149, label %logic.rhs4148 +logic.rhs4148: %t64 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2373, i64 4, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }, ptr %a66 %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) %t68 = icmp ne i32 %t67, 0 - br label %logic.rend3866 -logic.rend3866: - br label %logic.end3865 -logic.end3865: - %t69 = phi i1 [ true, %logic.from3863 ], [ %t68, %logic.rend3866 ] - br i1 %t69, label %then3867, label %endif3869 -then3867: + br label %logic.rend4150 +logic.rend4150: + br label %logic.end4149 +logic.end4149: + %t69 = phi i1 [ true, %logic.from4147 ], [ %t68, %logic.rend4150 ] + br i1 %t69, label %then4151, label %endif4153 +then4151: %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 ret %S.gen.SizeAlign %t71 -endif3869: +endif4153: %t72 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2374, i64 3, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.2587, i64 3, i64 0 }, ptr %a74 %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) %t76 = icmp ne i32 %t75, 0 - br label %logic.from3870 -logic.from3870: - br i1 %t76, label %logic.end3872, label %logic.rhs3871 -logic.rhs3871: + br label %logic.from4154 +logic.from4154: + br i1 %t76, label %logic.end4156, label %logic.rhs4155 +logic.rhs4155: %t77 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2375, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.2588, i64 5, i64 0 }, ptr %a79 %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) %t81 = icmp ne i32 %t80, 0 - br label %logic.rend3873 -logic.rend3873: - br label %logic.end3872 -logic.end3872: - %t82 = phi i1 [ true, %logic.from3870 ], [ %t81, %logic.rend3873 ] - br i1 %t82, label %then3874, label %endif3876 -then3874: + br label %logic.rend4157 +logic.rend4157: + br label %logic.end4156 +logic.end4156: + %t82 = phi i1 [ true, %logic.from4154 ], [ %t81, %logic.rend4157 ] + br i1 %t82, label %then4158, label %endif4160 +then4158: %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 ret %S.gen.SizeAlign %t84 -endif3876: +endif4160: %t85 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2376, i64 3, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.2589, i64 3, i64 0 }, ptr %a87 %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) %t89 = icmp ne i32 %t88, 0 - br i1 %t89, label %then3877, label %endif3879 -then3877: + br i1 %t89, label %then4161, label %endif4163 +then4161: %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 ret %S.gen.SizeAlign %t91 -endif3879: +endif4163: %t92 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2377, i64 5, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.2590, i64 5, i64 0 }, ptr %a94 %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then3880, label %endif3882 -then3880: + br i1 %t96, label %then4164, label %endif4166 +then4164: %t97 = load ptr, ptr %a1 %t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t99 = load { ptr, i64, i64 }, ptr %t98 %t100 = extractvalue { ptr, i64, i64 } %t99, 1 %t101 = icmp uge i64 0, %t100 - br i1 %t101, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2378, i64 1619, i64 0, i64 %t100) + br i1 %t101, label %range4167, label %inrange4168 +range4167: + call void @finch_panic_index(ptr @.str.2591, i64 1744, i64 0, i64 %t100) unreachable -inrange3884: +inrange4168: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -34570,21 +38376,21 @@ inrange3884: %t114 = load i64, ptr %t113 %t115 = insertvalue %S.gen.SizeAlign %t112, i64 %t114, 1 ret %S.gen.SizeAlign %t115 -endif3882: +endif4166: %t116 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2379, i64 6, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.2592, i64 6, i64 0 }, ptr %a118 %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then3885, label %endif3887 -then3885: + br i1 %t120, label %then4169, label %endif4171 +then4169: %t121 = load ptr, ptr %a1 %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic3888, label %ok3889 -panic3888: - call void @finch_panic(ptr @.str.2380, i64 1623, ptr @.str.2381) + br i1 %t122, label %panic4172, label %ok4173 +panic4172: + call void @finch_panic(ptr @.str.2593, i64 1748, ptr @.str.2594) unreachable -ok3889: +ok4173: %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 15 %t124 = load ptr, ptr %a1 %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -34595,11 +38401,11 @@ ok3889: %t130 = load { ptr, i64, i64 }, ptr %t123 %t131 = extractvalue { ptr, i64, i64 } %t130, 1 %t132 = icmp uge i64 %t129, %t131 - br i1 %t132, label %range3890, label %inrange3891 -range3890: - call void @finch_panic_index(ptr @.str.2382, i64 1623, i64 %t129, i64 %t131) + br i1 %t132, label %range4174, label %inrange4175 +range4174: + call void @finch_panic_index(ptr @.str.2595, i64 1748, i64 %t129, i64 %t131) unreachable -inrange3891: +inrange4175: %t133 = extractvalue { ptr, i64, i64 } %t130, 0 %t134 = getelementptr inbounds %S.gen.StructDef, ptr %t133, i64 %t129 %t135 = load %S.gen.StructDef, ptr %t134 @@ -34609,8 +38415,8 @@ inrange3891: store %S.gen.StructDef %t138, ptr %a139 %t140 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 2 %t141 = load i1, ptr %t140 - br i1 %t141, label %then3892, label %endif3894 -then3892: + br i1 %t141, label %then4176, label %endif4178 +then4176: %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 %t143 = load i64, ptr %t142 %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 @@ -34618,19 +38424,19 @@ then3892: %t146 = load i64, ptr %t145 %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 ret %S.gen.SizeAlign %t147 -endif3894: +endif4178: store i64 0, ptr %a148 store i64 1, ptr %a149 %t150 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 12 store i64 0, ptr %a151 - br label %each.cond3895 -each.cond3895: + br label %each.cond4179 +each.cond4179: %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 %t153 = load i64, ptr %t152 %t154 = load i64, ptr %a151 %t155 = icmp slt i64 %t154, %t153 - br i1 %t155, label %each.body3896, label %each.end3898 -each.body3896: + br i1 %t155, label %each.body4180, label %each.end4182 +each.body4180: %t156 = load ptr, ptr %t150 %t157 = getelementptr inbounds %S.ast.Type, ptr %t156, i64 %t154 %t158 = load %S.ast.Type, ptr %t157 @@ -34651,20 +38457,20 @@ each.body3896: %t172 = load i64, ptr %t171 %t173 = load i64, ptr %a149 %t174 = icmp sgt i64 %t172, %t173 - br i1 %t174, label %then3899, label %endif3901 -then3899: + br i1 %t174, label %then4183, label %endif4185 +then4183: %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 %t176 = load i64, ptr %t175 store i64 %t176, ptr %a149 - br label %endif3901 -endif3901: - br label %each.step3897 -each.step3897: + br label %endif4185 +endif4185: + br label %each.step4181 +each.step4181: %t177 = load i64, ptr %a151 %t178 = add i64 %t177, 1 store i64 %t178, ptr %a151 - br label %each.cond3895 -each.end3898: + br label %each.cond4179 +each.end4182: %t179 = load i64, ptr %a148 %t180 = load i64, ptr %a149 %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) @@ -34672,7 +38478,7 @@ each.end3898: %t183 = load i64, ptr %a149 %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 ret %S.gen.SizeAlign %t184 -endif3887: +endif4171: %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 ret %S.gen.SizeAlign %t186 @@ -34695,27 +38501,27 @@ entry: store %S.gen.StructDef %p1, ptr %a2 %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 2 %t4 = load i1, ptr %t3 - br i1 %t4, label %then3902, label %endif3904 -then3902: + br i1 %t4, label %then4186, label %endif4188 +then4186: %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 4 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 call void @finch.copy.arr_int(ptr %a8, ptr %a7) %t9 = load { ptr, i64, i64 }, ptr %a8 ret { ptr, i64, i64 } %t9 -endif3904: +endif4188: store { ptr, i64, i64 } zeroinitializer, ptr %a10 store i64 0, ptr %a11 %t12 = getelementptr inbounds %S.gen.StructDef, ptr %a2, i32 0, i32 12 store i64 0, ptr %a13 - br label %each.cond3905 -each.cond3905: + br label %each.cond4189 +each.cond4189: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = load i64, ptr %a13 %t17 = icmp slt i64 %t16, %t15 - br i1 %t17, label %each.body3906, label %each.end3908 -each.body3906: + br i1 %t17, label %each.body4190, label %each.end4192 +each.body4190: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds %S.ast.Type, ptr %t18, i64 %t16 %t20 = load %S.ast.Type, ptr %t19 @@ -34743,13 +38549,13 @@ each.body3906: %t38 = load i64, ptr %a11 %t39 = add i64 %t38, %t37 store i64 %t39, ptr %a11 - br label %each.step3907 -each.step3907: + br label %each.step4191 +each.step4191: %t40 = load i64, ptr %a13 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a13 - br label %each.cond3905 -each.end3908: + br label %each.cond4189 +each.end4192: %t42 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t42, ptr %a43 call void @finch.copy.arr_int(ptr %a44, ptr %a43) @@ -34824,12 +38630,12 @@ entry: store i64 %p7, ptr %a8 %t9 = load ptr, ptr %a1 %t10 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2383, i64 42, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.2596, i64 42, i64 0 }, ptr %a12 store { ptr, i64, i64 } %t10, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.2384, i64 11, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.2597, i64 11, i64 0 }, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 %t19 = load i64, ptr %a3 @@ -34840,7 +38646,7 @@ entry: call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2385, i64 9, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2598, i64 9, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 %t30 = load i64, ptr %a4 @@ -34851,7 +38657,7 @@ entry: call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.2386, i64 8, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.2599, i64 8, i64 0 }, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 %t41 = load i64, ptr %a5 @@ -34862,7 +38668,7 @@ entry: call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2387, i64 12, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.2600, i64 12, i64 0 }, ptr %a50 call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) %t51 = load { ptr, i64, i64 }, ptr %a48 %t52 = load i64, ptr %a6 @@ -34872,7 +38678,7 @@ entry: call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2388, i64 8, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.2601, i64 8, i64 0 }, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 %t62 = load i64, ptr %a7 @@ -34883,7 +38689,7 @@ entry: call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.2389, i64 10, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.2602, i64 10, i64 0 }, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 %t73 = load i64, ptr %a8 @@ -34894,7 +38700,7 @@ entry: call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.2390, i64 1, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2603, i64 1, i64 0 }, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 %t84 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t83) @@ -34932,12 +38738,12 @@ entry: store { ptr, i64, i64 } %p3, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2391, i64 20, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.2604, i64 20, i64 0 }, ptr %a8 store { ptr, i64, i64 } %t6, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.2392, i64 9, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.2605, i64 9, i64 0 }, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 %t15 = load i64, ptr %a3 @@ -34948,7 +38754,7 @@ entry: call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.2393, i64 12, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.2606, i64 12, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load { ptr, i64, i64 }, ptr %a4 @@ -34957,7 +38763,7 @@ entry: call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2394, i64 1, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.2607, i64 1, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t34) @@ -35226,168 +39032,168 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.2395, i64 4, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.2608, i64 4, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.from3909 -logic.from3909: - br i1 %t13, label %logic.end3911, label %logic.rhs3910 -logic.rhs3910: + br label %logic.from4193 +logic.from4193: + br i1 %t13, label %logic.end4195, label %logic.rhs4194 +logic.rhs4194: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2396, i64 4, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.2609, i64 4, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br label %logic.rend3912 -logic.rend3912: - br label %logic.end3911 -logic.end3911: - %t19 = phi i1 [ true, %logic.from3909 ], [ %t18, %logic.rend3912 ] - br i1 %t19, label %then3913, label %endif3915 -then3913: + br label %logic.rend4196 +logic.rend4196: + br label %logic.end4195 +logic.end4195: + %t19 = phi i1 [ true, %logic.from4193 ], [ %t18, %logic.rend4196 ] + br i1 %t19, label %then4197, label %endif4199 +then4197: ret i64 -1 -endif3915: +endif4199: %t20 = load %S.ast.Type, ptr %a2 %t21 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t20) - store { ptr, i64, i64 } { ptr @.str.2397, i64 2, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2610, i64 2, i64 0 }, ptr %a23 store { ptr, i64, i64 } %t21, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a26 %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic3916, label %ok3917 -panic3916: - call void @finch_panic(ptr @.str.2398, i64 1672, ptr @.str.2399) + br i1 %t28, label %panic4200, label %ok4201 +panic4200: + call void @finch_panic(ptr @.str.2611, i64 1797, ptr @.str.2612) unreachable -ok3917: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 30 +ok4201: + %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 32 %t30 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t30, ptr %a31 %t32 = call i64 @finch_map_find(ptr %t29, ptr %a31, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %then3918, label %endif3920 -then3918: + br i1 %t33, label %then4202, label %endif4204 +then4202: %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic3921, label %ok3922 -panic3921: - call void @finch_panic(ptr @.str.2400, i64 1673, ptr @.str.2401) + br i1 %t35, label %panic4205, label %ok4206 +panic4205: + call void @finch_panic(ptr @.str.2613, i64 1798, ptr @.str.2614) unreachable -ok3922: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 30 +ok4206: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 32 %t37 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t37, ptr %a38 %t39 = call i64 @finch_map_find(ptr %t36, ptr %a38, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t40 = icmp slt i64 %t39, 0 - br i1 %t40, label %map.missing3923, label %map.found3924 -map.missing3923: + br i1 %t40, label %map.missing4207, label %map.found4208 +map.missing4207: store { ptr, i64, i64 } zeroinitializer, ptr %a41 store { ptr, i64, i64 } %t37, ptr %a42 call void @finch_buf_str(ptr %a41, ptr %a42, i32 1) - call void @finch_map_missing(ptr @.str.2402, i64 1673, ptr %a41) + call void @finch_map_missing(ptr @.str.2615, i64 1798, ptr %a41) unreachable -map.found3924: +map.found4208: %t43 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t36, i32 0, i32 0 %t44 = load ptr, ptr %t43 %t45 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t44, i64 %t39 %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i32 0, i32 2 %t47 = load i64, ptr %t46 ret i64 %t47 -endif3920: +endif4204: store i64 -1, ptr %a48 %t49 = load ptr, ptr %a1 %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2403, i64 1676, ptr @.str.2404) + br i1 %t50, label %panic4209, label %ok4210 +panic4209: + call void @finch_panic(ptr @.str.2616, i64 1801, ptr @.str.2617) unreachable -ok3926: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 31 +ok4210: + %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 33 %t52 = load { ptr, i64, i64 }, ptr %t51 %t53 = extractvalue { ptr, i64, i64 } %t52, 1 %t54 = icmp uge i64 0, %t53 - br i1 %t54, label %range3927, label %inrange3928 -range3927: - call void @finch_panic_index(ptr @.str.2405, i64 1676, i64 0, i64 %t53) + br i1 %t54, label %range4211, label %inrange4212 +range4211: + call void @finch_panic_index(ptr @.str.2618, i64 1801, i64 0, i64 %t53) unreachable -inrange3928: +inrange4212: %t55 = extractvalue { ptr, i64, i64 } %t52, 0 %t56 = getelementptr inbounds i64, ptr %t55, i64 0 %t57 = load i64, ptr %t56 store i64 %t57, ptr %a58 %t59 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t59, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.2406, i64 4, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2619, i64 4, i64 0 }, ptr %a61 %t62 = call i32 @finch_str_eq(ptr %a60, ptr %a61) %t63 = icmp ne i32 %t62, 0 - br i1 %t63, label %then3929, label %else3930 -then3929: + br i1 %t63, label %then4213, label %else4214 +then4213: %t64 = load ptr, ptr %a1 - %t65 = call i64 @finch.gen.basicType(ptr %t64, { ptr, i64, i64 } { ptr @.str.2407, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2408, i64 14, i64 0 }) + %t65 = call i64 @finch.gen.basicType(ptr %t64, { ptr, i64, i64 } { ptr @.str.2620, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2621, i64 14, i64 0 }) store i64 %t65, ptr %a48 - br label %endif3931 -else3930: + br label %endif4215 +else4214: %t66 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.2409, i64 4, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.2622, i64 4, i64 0 }, ptr %a68 %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %then3932, label %else3933 -then3932: + br i1 %t70, label %then4216, label %else4217 +then4216: %t71 = load ptr, ptr %a1 - %t72 = call i64 @finch.gen.basicType(ptr %t71, { ptr, i64, i64 } { ptr @.str.2410, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2411, i64 18, i64 0 }) + %t72 = call i64 @finch.gen.basicType(ptr %t71, { ptr, i64, i64 } { ptr @.str.2623, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2624, i64 18, i64 0 }) store i64 %t72, ptr %a48 - br label %endif3934 -else3933: + br label %endif4218 +else4217: %t73 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2412, i64 3, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2625, i64 3, i64 0 }, ptr %a75 %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then3935, label %else3936 -then3935: + br i1 %t77, label %then4219, label %else4220 +then4219: %t78 = load ptr, ptr %a1 - %t79 = call i64 @finch.gen.basicType(ptr %t78, { ptr, i64, i64 } { ptr @.str.2413, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2414, i64 13, i64 0 }) + %t79 = call i64 @finch.gen.basicType(ptr %t78, { ptr, i64, i64 } { ptr @.str.2626, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2627, i64 13, i64 0 }) store i64 %t79, ptr %a48 - br label %endif3937 -else3936: + br label %endif4221 +else4220: %t80 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.2415, i64 5, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2628, i64 5, i64 0 }, ptr %a82 %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then3938, label %else3939 -then3938: + br i1 %t84, label %then4222, label %else4223 +then4222: %t85 = load ptr, ptr %a1 - %t86 = call i64 @finch.gen.basicType(ptr %t85, { ptr, i64, i64 } { ptr @.str.2416, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2417, i64 12, i64 0 }) + %t86 = call i64 @finch.gen.basicType(ptr %t85, { ptr, i64, i64 } { ptr @.str.2629, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2630, i64 12, i64 0 }) store i64 %t86, ptr %a48 - br label %endif3940 -else3939: + br label %endif4224 +else4223: %t87 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.2418, i64 3, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2631, i64 3, i64 0 }, ptr %a89 %t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89) %t91 = icmp ne i32 %t90, 0 - br i1 %t91, label %then3941, label %else3942 -then3941: + br i1 %t91, label %then4225, label %else4226 +then4225: %t92 = load ptr, ptr %a1 - %t93 = call i64 @finch.gen.basicType(ptr %t92, { ptr, i64, i64 } { ptr @.str.2419, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2420, i64 12, i64 0 }) + %t93 = call i64 @finch.gen.basicType(ptr %t92, { ptr, i64, i64 } { ptr @.str.2632, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2633, i64 12, i64 0 }) store i64 %t93, ptr %a48 - br label %endif3943 -else3942: + br label %endif4227 +else4226: %t94 = load %S.ast.Type, ptr %a2 %t95 = call i1 @finch.gen.isInt(%S.ast.Type %t94) - br i1 %t95, label %then3944, label %else3945 -then3944: - store { ptr, i64, i64 } { ptr @.str.2421, i64 15, i64 0 }, ptr %a96 + br i1 %t95, label %then4228, label %else4229 +then4228: + store { ptr, i64, i64 } { ptr @.str.2634, i64 15, i64 0 }, ptr %a96 %t97 = load %S.ast.Type, ptr %a2 %t98 = call i1 @finch.gen.isSigned(%S.ast.Type %t97) - br i1 %t98, label %then3947, label %endif3949 -then3947: - store { ptr, i64, i64 } { ptr @.str.2422, i64 13, i64 0 }, ptr %a96 - br label %endif3949 -endif3949: + br i1 %t98, label %then4231, label %endif4233 +then4231: + store { ptr, i64, i64 } { ptr @.str.2635, i64 13, i64 0 }, ptr %a96 + br label %endif4233 +endif4233: %t99 = load ptr, ptr %a1 %t100 = load { ptr, i64, i64 }, ptr %a8 %t101 = load %S.ast.Type, ptr %a2 @@ -35395,22 +39201,22 @@ endif3949: %t103 = load { ptr, i64, i64 }, ptr %a96 %t104 = call i64 @finch.gen.basicType(ptr %t99, { ptr, i64, i64 } %t100, i64 %t102, { ptr, i64, i64 } %t103) store i64 %t104, ptr %a48 - br label %endif3946 -else3945: + br label %endif4230 +else4229: %t105 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.2423, i64 4, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.2636, i64 4, i64 0 }, ptr %a107 %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) %t109 = icmp ne i32 %t108, 0 - br i1 %t109, label %then3950, label %else3951 -then3950: + br i1 %t109, label %then4234, label %else4235 +then4234: %t110 = load ptr, ptr %a1 %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic3953, label %ok3954 -panic3953: - call void @finch_panic(ptr @.str.2424, i64 1694, ptr @.str.2425) + br i1 %t111, label %panic4237, label %ok4238 +panic4237: + call void @finch_panic(ptr @.str.2637, i64 1819, ptr @.str.2638) unreachable -ok3954: +ok4238: %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 20 %t113 = load ptr, ptr %a1 %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -35421,11 +39227,11 @@ ok3954: %t119 = load { ptr, i64, i64 }, ptr %t112 %t120 = extractvalue { ptr, i64, i64 } %t119, 1 %t121 = icmp uge i64 %t118, %t120 - br i1 %t121, label %range3955, label %inrange3956 -range3955: - call void @finch_panic_index(ptr @.str.2426, i64 1694, i64 %t118, i64 %t120) + br i1 %t121, label %range4239, label %inrange4240 +range4239: + call void @finch_panic_index(ptr @.str.2639, i64 1819, i64 %t118, i64 %t120) unreachable -inrange3956: +inrange4240: %t122 = extractvalue { ptr, i64, i64 } %t119, 0 %t123 = getelementptr inbounds %S.gen.EnumDef, ptr %t122, i64 %t118 %t124 = load %S.gen.EnumDef, ptr %t123 @@ -35438,12 +39244,12 @@ inrange3956: %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 %t132 = load i64, ptr %t131 store i64 0, ptr %a133 - br label %for.cond3957 -for.cond3957: + br label %for.cond4241 +for.cond4241: %t134 = load i64, ptr %a133 %t135 = icmp slt i64 %t134, %t132 - br i1 %t135, label %for.body3958, label %for.end3960 -for.body3958: + br i1 %t135, label %for.body4242, label %for.end4244 +for.body4242: %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 %t137 = load ptr, ptr %a1 %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 2 @@ -35451,20 +39257,20 @@ for.body3958: %t140 = load { ptr, i64, i64 }, ptr %t138 %t141 = extractvalue { ptr, i64, i64 } %t140, 1 %t142 = icmp uge i64 %t139, %t141 - br i1 %t142, label %range3961, label %inrange3962 -range3961: - call void @finch_panic_index(ptr @.str.2428, i64 1697, i64 %t139, i64 %t141) + br i1 %t142, label %range4245, label %inrange4246 +range4245: + call void @finch_panic_index(ptr @.str.2641, i64 1822, i64 %t139, i64 %t141) unreachable -inrange3962: +inrange4246: %t143 = extractvalue { ptr, i64, i64 } %t140, 0 %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i64 %t139 %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } { ptr @.str.2427, i64 21, i64 0 }, ptr %a147 + store { ptr, i64, i64 } { ptr @.str.2640, i64 21, i64 0 }, ptr %a147 store { ptr, i64, i64 } %t145, ptr %a148 call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) %t149 = load { ptr, i64, i64 }, ptr %a146 store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2429, i64 10, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.2642, i64 10, i64 0 }, ptr %a152 call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) %t153 = load { ptr, i64, i64 }, ptr %a150 %t154 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 3 @@ -35472,11 +39278,11 @@ inrange3962: %t156 = load { ptr, i64, i64 }, ptr %t154 %t157 = extractvalue { ptr, i64, i64 } %t156, 1 %t158 = icmp uge i64 %t155, %t157 - br i1 %t158, label %range3963, label %inrange3964 -range3963: - call void @finch_panic_index(ptr @.str.2430, i64 1697, i64 %t155, i64 %t157) + br i1 %t158, label %range4247, label %inrange4248 +range4247: + call void @finch_panic_index(ptr @.str.2643, i64 1822, i64 %t155, i64 %t157) unreachable -inrange3964: +inrange4248: %t159 = extractvalue { ptr, i64, i64 } %t156, 0 %t160 = getelementptr inbounds i64, ptr %t159, i64 %t155 %t161 = load i64, ptr %t160 @@ -35487,7 +39293,7 @@ inrange3964: call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) %t167 = load { ptr, i64, i64 }, ptr %a164 store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.2431, i64 1, i64 0 }, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.2644, i64 1, i64 0 }, ptr %a170 call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) %t171 = load { ptr, i64, i64 }, ptr %a168 %t172 = call i64 @finch.gen.md(ptr %t137, { ptr, i64, i64 } %t171) @@ -35499,22 +39305,22 @@ inrange3964: %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 store { ptr, i64, i64 } %t173, ptr %t177 store i64 %t175, ptr %t136 - br label %for.step3959 -for.step3959: + br label %for.step4243 +for.step4243: %t178 = load i64, ptr %a133 %t179 = add i64 %t178, 1 store i64 %t179, ptr %a133 - br label %for.cond3957 -for.end3960: + br label %for.cond4241 +for.end4244: %t180 = load ptr, ptr %a1 %t181 = getelementptr inbounds %S.gen.EnumDef, ptr %a128, i32 0, i32 1 %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.2432, i64 54, i64 0 }, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.2645, i64 54, i64 0 }, ptr %a184 store { ptr, i64, i64 } %t182, ptr %a185 call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) %t186 = load { ptr, i64, i64 }, ptr %a183 store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2433, i64 10, i64 0 }, ptr %a189 + store { ptr, i64, i64 } { ptr @.str.2646, i64 10, i64 0 }, ptr %a189 call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) %t190 = load { ptr, i64, i64 }, ptr %a187 %t191 = load i64, ptr %a58 @@ -35525,11 +39331,11 @@ for.end3960: call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) %t197 = load { ptr, i64, i64 }, ptr %a194 store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2434, i64 24, i64 0 }, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.2647, i64 24, i64 0 }, ptr %a200 call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) %t201 = load { ptr, i64, i64 }, ptr %a198 %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2435, i64 2, i64 0 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.2648, i64 2, i64 0 }, ptr %a203 call void @finch_str_join(ptr %a204, ptr %a129, ptr %a203) %t205 = load { ptr, i64, i64 }, ptr %a204 store { ptr, i64, i64 } %t201, ptr %a207 @@ -35537,25 +39343,25 @@ for.end3960: call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) %t209 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.2436, i64 2, i64 0 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.2649, i64 2, i64 0 }, ptr %a212 call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) %t213 = load { ptr, i64, i64 }, ptr %a210 %t214 = call i64 @finch.gen.md(ptr %t180, { ptr, i64, i64 } %t213) store i64 %t214, ptr %a48 - br label %endif3952 -else3951: + br label %endif4236 +else4235: %t215 = load ptr, ptr %a1 - %t216 = call i64 @finch.gen.md(ptr %t215, { ptr, i64, i64 } { ptr @.str.2437, i64 0, i64 0 }) + %t216 = call i64 @finch.gen.md(ptr %t215, { ptr, i64, i64 } { ptr @.str.2650, i64 0, i64 0 }) store i64 %t216, ptr %a48 %t217 = load i64, ptr %a48 %t218 = load ptr, ptr %a1 %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic3965, label %ok3966 -panic3965: - call void @finch_panic(ptr @.str.2438, i64 1703, ptr @.str.2439) + br i1 %t219, label %panic4249, label %ok4250 +panic4249: + call void @finch_panic(ptr @.str.2651, i64 1828, ptr @.str.2652) unreachable -ok3966: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 30 +ok4250: + %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 32 %t221 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t221, ptr %a222 store i32 0, ptr %a223 @@ -35565,96 +39371,96 @@ ok3966: %t227 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t226, i64 %t224 %t228 = load i32, ptr %a223 %t229 = icmp ne i32 %t228, 0 - br i1 %t229, label %map.new3967, label %map.have3968 -map.new3967: + br i1 %t229, label %map.new4251, label %map.have4252 +map.new4251: %t230 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 1 call void @finch_str_copy(ptr %t230, ptr %a222) %t231 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 2 store i64 0, ptr %t231 - br label %map.have3968 -map.have3968: + br label %map.have4252 +map.have4252: %t232 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t227, i32 0, i32 2 store i64 %t217, ptr %t232 %t233 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t233, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.2440, i64 3, i64 0 }, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.2653, i64 3, i64 0 }, ptr %a235 %t236 = call i32 @finch_str_eq(ptr %a234, ptr %a235) %t237 = icmp ne i32 %t236, 0 - br i1 %t237, label %then3969, label %else3970 -then3969: + br i1 %t237, label %then4253, label %else4254 +then4253: store i64 -1, ptr %a238 %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i32 0, i32 1 %t241 = load i64, ptr %t240 %t242 = icmp sgt i64 %t241, 0 - br i1 %t242, label %then3972, label %endif3974 -then3972: + br i1 %t242, label %then4256, label %endif4258 +then4256: %t243 = load ptr, ptr %a1 %t244 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t245 = load { ptr, i64, i64 }, ptr %t244 %t246 = extractvalue { ptr, i64, i64 } %t245, 1 %t247 = icmp uge i64 0, %t246 - br i1 %t247, label %range3975, label %inrange3976 -range3975: - call void @finch_panic_index(ptr @.str.2441, i64 1707, i64 0, i64 %t246) + br i1 %t247, label %range4259, label %inrange4260 +range4259: + call void @finch_panic_index(ptr @.str.2654, i64 1832, i64 0, i64 %t246) unreachable -inrange3976: +inrange4260: %t248 = extractvalue { ptr, i64, i64 } %t245, 0 %t249 = getelementptr inbounds %S.ast.Type, ptr %t248, i64 0 %t250 = load %S.ast.Type, ptr %t249 %t251 = call i64 @finch.gen.diType(ptr %t243, %S.ast.Type %t250) store i64 %t251, ptr %a238 - br label %endif3974 -endif3974: + br label %endif4258 +endif4258: %t252 = load i64, ptr %a238 %t253 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t252) - store { ptr, i64, i64 } { ptr @.str.2442, i64 51, i64 0 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.2655, i64 51, i64 0 }, ptr %a255 store { ptr, i64, i64 } %t253, ptr %a256 call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) %t257 = load { ptr, i64, i64 }, ptr %a254 store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.2443, i64 11, i64 0 }, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.2656, i64 11, i64 0 }, ptr %a260 call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) %t261 = load { ptr, i64, i64 }, ptr %a258 %t262 = load ptr, ptr %a1 %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic3977, label %ok3978 -panic3977: - call void @finch_panic(ptr @.str.2444, i64 1709, ptr @.str.2445) + br i1 %t263, label %panic4261, label %ok4262 +panic4261: + call void @finch_panic(ptr @.str.2657, i64 1834, ptr @.str.2658) unreachable -ok3978: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 29 +ok4262: + %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 31 %t265 = load i64, ptr %a48 %t266 = load { ptr, i64, i64 }, ptr %t264 %t267 = extractvalue { ptr, i64, i64 } %t266, 1 %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range3979, label %inrange3980 -range3979: - call void @finch_panic_index(ptr @.str.2446, i64 1709, i64 %t265, i64 %t267) + br i1 %t268, label %range4263, label %inrange4264 +range4263: + call void @finch_panic_index(ptr @.str.2659, i64 1834, i64 %t265, i64 %t267) unreachable -inrange3980: +inrange4264: %t269 = extractvalue { ptr, i64, i64 } %t266, 0 %t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i64 %t265 store { ptr, i64, i64 } %t261, ptr %t270 - br label %endif3971 -else3970: + br label %endif4255 +else4254: %t271 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2447, i64 5, i64 0 }, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.2660, i64 5, i64 0 }, ptr %a273 %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %then3981, label %else3982 -then3981: + br i1 %t275, label %then4265, label %else4266 +then4265: %t276 = load ptr, ptr %a1 %t277 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t278 = load { ptr, i64, i64 }, ptr %t277 %t279 = extractvalue { ptr, i64, i64 } %t278, 1 %t280 = icmp uge i64 0, %t279 - br i1 %t280, label %range3984, label %inrange3985 -range3984: - call void @finch_panic_index(ptr @.str.2448, i64 1711, i64 0, i64 %t279) + br i1 %t280, label %range4268, label %inrange4269 +range4268: + call void @finch_panic_index(ptr @.str.2661, i64 1836, i64 0, i64 %t279) unreachable -inrange3985: +inrange4269: %t281 = extractvalue { ptr, i64, i64 } %t278, 0 %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 0 %t283 = load %S.ast.Type, ptr %t282 @@ -35665,12 +39471,12 @@ inrange3985: %t288 = load i64, ptr %t287 call void @finch_str_from_int(ptr %a289, i64 %t288) %t290 = load { ptr, i64, i64 }, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.2449, i64 19, i64 0 }, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.2662, i64 19, i64 0 }, ptr %a292 store { ptr, i64, i64 } %t290, ptr %a293 call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) %t294 = load { ptr, i64, i64 }, ptr %a291 store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.2450, i64 1, i64 0 }, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.2663, i64 1, i64 0 }, ptr %a297 call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) %t298 = load { ptr, i64, i64 }, ptr %a295 %t299 = call i64 @finch.gen.md(ptr %t286, { ptr, i64, i64 } %t298) @@ -35680,22 +39486,22 @@ inrange3985: %t303 = load { ptr, i64, i64 }, ptr %t302 %t304 = extractvalue { ptr, i64, i64 } %t303, 1 %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range3986, label %inrange3987 -range3986: - call void @finch_panic_index(ptr @.str.2452, i64 1713, i64 0, i64 %t304) + br i1 %t305, label %range4270, label %inrange4271 +range4270: + call void @finch_panic_index(ptr @.str.2665, i64 1838, i64 0, i64 %t304) unreachable -inrange3987: +inrange4271: %t306 = extractvalue { ptr, i64, i64 } %t303, 0 %t307 = getelementptr inbounds %S.ast.Type, ptr %t306, i64 0 %t308 = load %S.ast.Type, ptr %t307 %t309 = call i64 @finch.gen.diType(ptr %t301, %S.ast.Type %t308) %t310 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t309) - store { ptr, i64, i64 } { ptr @.str.2451, i64 51, i64 0 }, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.2664, i64 51, i64 0 }, ptr %a312 store { ptr, i64, i64 } %t310, ptr %a313 call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) %t314 = load { ptr, i64, i64 }, ptr %a311 store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2453, i64 8, i64 0 }, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.2666, i64 8, i64 0 }, ptr %a317 call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) %t318 = load { ptr, i64, i64 }, ptr %a315 %t319 = getelementptr inbounds %S.gen.SizeAlign, ptr %a285, i32 0, i32 0 @@ -35711,7 +39517,7 @@ inrange3987: call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) %t330 = load { ptr, i64, i64 }, ptr %a327 store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.2454, i64 15, i64 0 }, ptr %a333 + store { ptr, i64, i64 } { ptr @.str.2667, i64 15, i64 0 }, ptr %a333 call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) %t334 = load { ptr, i64, i64 }, ptr %a331 %t335 = load i64, ptr %a300 @@ -35722,70 +39528,70 @@ inrange3987: call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) %t341 = load { ptr, i64, i64 }, ptr %a338 store { ptr, i64, i64 } %t341, ptr %a343 - store { ptr, i64, i64 } { ptr @.str.2455, i64 2, i64 0 }, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.2668, i64 2, i64 0 }, ptr %a344 call void @finch_str_concat(ptr %a342, ptr %a343, ptr %a344) %t345 = load { ptr, i64, i64 }, ptr %a342 %t346 = load ptr, ptr %a1 %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic3988, label %ok3989 -panic3988: - call void @finch_panic(ptr @.str.2456, i64 1713, ptr @.str.2457) + br i1 %t347, label %panic4272, label %ok4273 +panic4272: + call void @finch_panic(ptr @.str.2669, i64 1838, ptr @.str.2670) unreachable -ok3989: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 29 +ok4273: + %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 31 %t349 = load i64, ptr %a48 %t350 = load { ptr, i64, i64 }, ptr %t348 %t351 = extractvalue { ptr, i64, i64 } %t350, 1 %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range3990, label %inrange3991 -range3990: - call void @finch_panic_index(ptr @.str.2458, i64 1713, i64 %t349, i64 %t351) + br i1 %t352, label %range4274, label %inrange4275 +range4274: + call void @finch_panic_index(ptr @.str.2671, i64 1838, i64 %t349, i64 %t351) unreachable -inrange3991: +inrange4275: %t353 = extractvalue { ptr, i64, i64 } %t350, 0 %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 store { ptr, i64, i64 } %t345, ptr %t354 - br label %endif3983 -else3982: + br label %endif4267 +else4266: %t355 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.2459, i64 3, i64 0 }, ptr %a357 + store { ptr, i64, i64 } { ptr @.str.2672, i64 3, i64 0 }, ptr %a357 %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) %t359 = icmp ne i32 %t358, 0 - br label %logic.from3992 -logic.from3992: - br i1 %t359, label %logic.end3994, label %logic.rhs3993 -logic.rhs3993: + br label %logic.from4276 +logic.from4276: + br i1 %t359, label %logic.end4278, label %logic.rhs4277 +logic.rhs4277: %t360 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t360, ptr %a361 - store { ptr, i64, i64 } { ptr @.str.2460, i64 5, i64 0 }, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.2673, i64 5, i64 0 }, ptr %a362 %t363 = call i32 @finch_str_eq(ptr %a361, ptr %a362) %t364 = icmp ne i32 %t363, 0 - br label %logic.rend3995 -logic.rend3995: - br label %logic.end3994 -logic.end3994: - %t365 = phi i1 [ true, %logic.from3992 ], [ %t364, %logic.rend3995 ] - br i1 %t365, label %then3996, label %else3997 -then3996: - %t366 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2461, i64 4, i64 0 }) + br label %logic.rend4279 +logic.rend4279: + br label %logic.end4278 +logic.end4278: + %t365 = phi i1 [ true, %logic.from4276 ], [ %t364, %logic.rend4279 ] + br i1 %t365, label %then4280, label %else4281 +then4280: + %t366 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2674, i64 4, i64 0 }) store %S.ast.Type %t366, ptr %a367 %t368 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.2462, i64 5, i64 0 }, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.2675, i64 5, i64 0 }, ptr %a370 %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) %t372 = icmp ne i32 %t371, 0 - br i1 %t372, label %then3999, label %endif4001 -then3999: + br i1 %t372, label %then4283, label %endif4285 +then4283: %t373 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t374 = load { ptr, i64, i64 }, ptr %t373 %t375 = extractvalue { ptr, i64, i64 } %t374, 1 %t376 = icmp uge i64 0, %t375 - br i1 %t376, label %range4002, label %inrange4003 -range4002: - call void @finch_panic_index(ptr @.str.2463, i64 1717, i64 0, i64 %t375) + br i1 %t376, label %range4286, label %inrange4287 +range4286: + call void @finch_panic_index(ptr @.str.2676, i64 1842, i64 0, i64 %t375) unreachable -inrange4003: +inrange4287: %t377 = extractvalue { ptr, i64, i64 } %t374, 0 %t378 = getelementptr inbounds %S.ast.Type, ptr %t377, i64 0 %t379 = load %S.ast.Type, ptr %t378 @@ -35793,53 +39599,53 @@ inrange4003: call void @finch.copy.S_ast_Type(ptr %a381, ptr %a380) %t382 = load %S.ast.Type, ptr %a381 store %S.ast.Type %t382, ptr %a367 - br label %endif4001 -endif4001: + br label %endif4285 +endif4285: %t383 = load ptr, ptr %a1 %t384 = load ptr, ptr %a1 %t385 = load %S.ast.Type, ptr %a367 %t386 = call i64 @finch.gen.diType(ptr %t384, %S.ast.Type %t385) %t387 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t386) - store { ptr, i64, i64 } { ptr @.str.2464, i64 51, i64 0 }, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.2677, i64 51, i64 0 }, ptr %a389 store { ptr, i64, i64 } %t387, ptr %a390 call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) %t391 = load { ptr, i64, i64 }, ptr %a388 store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.2465, i64 11, i64 0 }, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.2678, i64 11, i64 0 }, ptr %a394 call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) %t395 = load { ptr, i64, i64 }, ptr %a392 %t396 = call i64 @finch.gen.md(ptr %t383, { ptr, i64, i64 } %t395) store i64 %t396, ptr %a397 %t398 = load ptr, ptr %a1 - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2466, i64 3, i64 0 }) + %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2679, i64 3, i64 0 }) %t400 = call i64 @finch.gen.diType(ptr %t398, %S.ast.Type %t399) store i64 %t400, ptr %a401 %t402 = load ptr, ptr %a1 %t403 = load i64, ptr %a48 %t404 = load i64, ptr %a58 %t405 = load i64, ptr %a397 - %t406 = call i64 @finch.gen.dbgMember(ptr %t402, { ptr, i64, i64 } { ptr @.str.2467, i64 3, i64 0 }, i64 %t403, i64 %t404, i64 0, i64 %t405, i64 64, i64 0) + %t406 = call i64 @finch.gen.dbgMember(ptr %t402, { ptr, i64, i64 } { ptr @.str.2680, i64 3, i64 0 }, i64 %t403, i64 %t404, i64 0, i64 %t405, i64 64, i64 0) store i64 %t406, ptr %a407 %t408 = load ptr, ptr %a1 %t409 = load i64, ptr %a48 %t410 = load i64, ptr %a58 %t411 = load i64, ptr %a401 - %t412 = call i64 @finch.gen.dbgMember(ptr %t408, { ptr, i64, i64 } { ptr @.str.2468, i64 3, i64 0 }, i64 %t409, i64 %t410, i64 0, i64 %t411, i64 64, i64 64) + %t412 = call i64 @finch.gen.dbgMember(ptr %t408, { ptr, i64, i64 } { ptr @.str.2681, i64 3, i64 0 }, i64 %t409, i64 %t410, i64 0, i64 %t411, i64 64, i64 64) store i64 %t412, ptr %a413 %t414 = load ptr, ptr %a1 %t415 = load i64, ptr %a48 %t416 = load i64, ptr %a58 %t417 = load i64, ptr %a401 - %t418 = call i64 @finch.gen.dbgMember(ptr %t414, { ptr, i64, i64 } { ptr @.str.2469, i64 3, i64 0 }, i64 %t415, i64 %t416, i64 0, i64 %t417, i64 64, i64 128) + %t418 = call i64 @finch.gen.dbgMember(ptr %t414, { ptr, i64, i64 } { ptr @.str.2682, i64 3, i64 0 }, i64 %t415, i64 %t416, i64 0, i64 %t417, i64 64, i64 128) store i64 %t418, ptr %a419 %t420 = load %S.ast.Type, ptr %a2 %t421 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t420) - store { ptr, i64, i64 } { ptr @.str.2470, i64 52, i64 0 }, ptr %a423 + store { ptr, i64, i64 } { ptr @.str.2683, i64 52, i64 0 }, ptr %a423 store { ptr, i64, i64 } %t421, ptr %a424 call void @finch_str_concat(ptr %a422, ptr %a423, ptr %a424) %t425 = load { ptr, i64, i64 }, ptr %a422 store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.2471, i64 10, i64 0 }, ptr %a428 + store { ptr, i64, i64 } { ptr @.str.2684, i64 10, i64 0 }, ptr %a428 call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) %t429 = load { ptr, i64, i64 }, ptr %a426 %t430 = load i64, ptr %a58 @@ -35850,7 +39656,7 @@ endif4001: call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) %t436 = load { ptr, i64, i64 }, ptr %a433 store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.2472, i64 37, i64 0 }, ptr %a439 + store { ptr, i64, i64 } { ptr @.str.2685, i64 37, i64 0 }, ptr %a439 call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) %t440 = load { ptr, i64, i64 }, ptr %a437 %t441 = load i64, ptr %a407 @@ -35861,7 +39667,7 @@ endif4001: call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) %t447 = load { ptr, i64, i64 }, ptr %a444 store { ptr, i64, i64 } %t447, ptr %a449 - store { ptr, i64, i64 } { ptr @.str.2473, i64 3, i64 0 }, ptr %a450 + store { ptr, i64, i64 } { ptr @.str.2686, i64 3, i64 0 }, ptr %a450 call void @finch_str_concat(ptr %a448, ptr %a449, ptr %a450) %t451 = load { ptr, i64, i64 }, ptr %a448 %t452 = load i64, ptr %a413 @@ -35872,7 +39678,7 @@ endif4001: call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) %t458 = load { ptr, i64, i64 }, ptr %a455 store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.2474, i64 3, i64 0 }, ptr %a461 + store { ptr, i64, i64 } { ptr @.str.2687, i64 3, i64 0 }, ptr %a461 call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) %t462 = load { ptr, i64, i64 }, ptr %a459 %t463 = load i64, ptr %a419 @@ -35883,105 +39689,105 @@ endif4001: call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) %t469 = load { ptr, i64, i64 }, ptr %a466 store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.2475, i64 2, i64 0 }, ptr %a472 + store { ptr, i64, i64 } { ptr @.str.2688, i64 2, i64 0 }, ptr %a472 call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) %t473 = load { ptr, i64, i64 }, ptr %a470 %t474 = load ptr, ptr %a1 %t475 = icmp eq ptr %t474, null - br i1 %t475, label %panic4004, label %ok4005 -panic4004: - call void @finch_panic(ptr @.str.2476, i64 1724, ptr @.str.2477) + br i1 %t475, label %panic4288, label %ok4289 +panic4288: + call void @finch_panic(ptr @.str.2689, i64 1849, ptr @.str.2690) unreachable -ok4005: - %t476 = getelementptr inbounds %S.gen.Gen, ptr %t474, i32 0, i32 29 +ok4289: + %t476 = getelementptr inbounds %S.gen.Gen, ptr %t474, i32 0, i32 31 %t477 = load i64, ptr %a48 %t478 = load { ptr, i64, i64 }, ptr %t476 %t479 = extractvalue { ptr, i64, i64 } %t478, 1 %t480 = icmp uge i64 %t477, %t479 - br i1 %t480, label %range4006, label %inrange4007 -range4006: - call void @finch_panic_index(ptr @.str.2478, i64 1724, i64 %t477, i64 %t479) + br i1 %t480, label %range4290, label %inrange4291 +range4290: + call void @finch_panic_index(ptr @.str.2691, i64 1849, i64 %t477, i64 %t479) unreachable -inrange4007: +inrange4291: %t481 = extractvalue { ptr, i64, i64 } %t478, 0 %t482 = getelementptr inbounds { ptr, i64, i64 }, ptr %t481, i64 %t477 store { ptr, i64, i64 } %t473, ptr %t482 - br label %endif3998 -else3997: + br label %endif4282 +else4281: %t483 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t483, ptr %a484 - store { ptr, i64, i64 } { ptr @.str.2479, i64 3, i64 0 }, ptr %a485 + store { ptr, i64, i64 } { ptr @.str.2692, i64 3, i64 0 }, ptr %a485 %t486 = call i32 @finch_str_eq(ptr %a484, ptr %a485) %t487 = icmp ne i32 %t486, 0 - br i1 %t487, label %then4008, label %else4009 -then4008: + br i1 %t487, label %then4292, label %else4293 +then4292: %t488 = load ptr, ptr %a1 - %t489 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2480, i64 3, i64 0 }) + %t489 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2693, i64 3, i64 0 }) %t490 = call i64 @finch.gen.diType(ptr %t488, %S.ast.Type %t489) store i64 %t490, ptr %a491 %t492 = load ptr, ptr %a1 - %t493 = call i64 @finch.gen.md(ptr %t492, { ptr, i64, i64 } { ptr @.str.2481, i64 66, i64 0 }) + %t493 = call i64 @finch.gen.md(ptr %t492, { ptr, i64, i64 } { ptr @.str.2694, i64 66, i64 0 }) store i64 %t493, ptr %a494 %t495 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t496 = call ptr @finch_alloc(i64 %t495) %t497 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 0 - store { ptr, i64, i64 } { ptr @.str.2482, i64 7, i64 0 }, ptr %t497 + store { ptr, i64, i64 } { ptr @.str.2695, i64 7, i64 0 }, ptr %t497 %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 1 - store { ptr, i64, i64 } { ptr @.str.2483, i64 3, i64 0 }, ptr %t498 + store { ptr, i64, i64 } { ptr @.str.2696, i64 3, i64 0 }, ptr %t498 %t499 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 2 - store { ptr, i64, i64 } { ptr @.str.2484, i64 4, i64 0 }, ptr %t499 + store { ptr, i64, i64 } { ptr @.str.2697, i64 4, i64 0 }, ptr %t499 %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 3 - store { ptr, i64, i64 } { ptr @.str.2485, i64 3, i64 0 }, ptr %t500 + store { ptr, i64, i64 } { ptr @.str.2698, i64 3, i64 0 }, ptr %t500 %t501 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 4 - store { ptr, i64, i64 } { ptr @.str.2486, i64 5, i64 0 }, ptr %t501 + store { ptr, i64, i64 } { ptr @.str.2699, i64 5, i64 0 }, ptr %t501 %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 5 - store { ptr, i64, i64 } { ptr @.str.2487, i64 4, i64 0 }, ptr %t502 + store { ptr, i64, i64 } { ptr @.str.2700, i64 4, i64 0 }, ptr %t502 %t503 = getelementptr inbounds { ptr, i64, i64 }, ptr %t496, i64 6 - store { ptr, i64, i64 } { ptr @.str.2488, i64 4, i64 0 }, ptr %t503 + store { ptr, i64, i64 } { ptr @.str.2701, i64 4, i64 0 }, ptr %t503 %t504 = insertvalue { ptr, i64, i64 } undef, ptr %t496, 0 %t505 = insertvalue { ptr, i64, i64 } %t504, i64 7, 1 %t506 = insertvalue { ptr, i64, i64 } %t505, i64 7, 2 store { ptr, i64, i64 } %t506, ptr %a507 store { ptr, i64, i64 } zeroinitializer, ptr %a508 store i64 0, ptr %a509 - br label %for.cond4011 -for.cond4011: + br label %for.cond4295 +for.cond4295: %t510 = load i64, ptr %a509 %t511 = icmp slt i64 %t510, 7 - br i1 %t511, label %for.body4012, label %for.end4014 -for.body4012: + br i1 %t511, label %for.body4296, label %for.end4298 +for.body4296: %t512 = load i64, ptr %a491 store i64 %t512, ptr %a513 %t514 = load i64, ptr %a509 %t515 = icmp eq i64 %t514, 0 - br label %logic.from4015 -logic.from4015: - br i1 %t515, label %logic.end4017, label %logic.rhs4016 -logic.rhs4016: + br label %logic.from4299 +logic.from4299: + br i1 %t515, label %logic.end4301, label %logic.rhs4300 +logic.rhs4300: %t516 = load i64, ptr %a509 %t517 = icmp eq i64 %t516, 4 - br label %logic.rend4018 -logic.rend4018: - br label %logic.end4017 -logic.end4017: - %t518 = phi i1 [ true, %logic.from4015 ], [ %t517, %logic.rend4018 ] - br i1 %t518, label %then4019, label %endif4021 -then4019: + br label %logic.rend4302 +logic.rend4302: + br label %logic.end4301 +logic.end4301: + %t518 = phi i1 [ true, %logic.from4299 ], [ %t517, %logic.rend4302 ] + br i1 %t518, label %then4303, label %endif4305 +then4303: %t519 = load i64, ptr %a494 store i64 %t519, ptr %a513 - br label %endif4021 -endif4021: + br label %endif4305 +endif4305: %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %a508, i32 0, i32 1 %t521 = load ptr, ptr %a1 %t522 = load i64, ptr %a509 %t523 = load { ptr, i64, i64 }, ptr %a507 %t524 = extractvalue { ptr, i64, i64 } %t523, 1 %t525 = icmp uge i64 %t522, %t524 - br i1 %t525, label %range4022, label %inrange4023 -range4022: - call void @finch_panic_index(ptr @.str.2490, i64 1735, i64 %t522, i64 %t524) + br i1 %t525, label %range4306, label %inrange4307 +range4306: + call void @finch_panic_index(ptr @.str.2703, i64 1860, i64 %t522, i64 %t524) unreachable -inrange4023: +inrange4307: %t526 = extractvalue { ptr, i64, i64 } %t523, 0 %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t522 %t528 = load { ptr, i64, i64 }, ptr %t527 @@ -35993,7 +39799,7 @@ inrange4023: %t534 = call i64 @finch.gen.dbgMember(ptr %t521, { ptr, i64, i64 } %t528, i64 %t529, i64 %t530, i64 0, i64 %t531, i64 64, i64 %t533) call void @finch_str_from_int(ptr %a535, i64 %t534) %t536 = load { ptr, i64, i64 }, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.2489, i64 1, i64 0 }, ptr %a538 + store { ptr, i64, i64 } { ptr @.str.2702, i64 1, i64 0 }, ptr %a538 store { ptr, i64, i64 } %t536, ptr %a539 call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) %t540 = load { ptr, i64, i64 }, ptr %a537 @@ -36004,21 +39810,21 @@ inrange4023: %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i64 %t541 store { ptr, i64, i64 } %t540, ptr %t544 store i64 %t542, ptr %t520 - br label %for.step4013 -for.step4013: + br label %for.step4297 +for.step4297: %t545 = load i64, ptr %a509 %t546 = add i64 %t545, 1 store i64 %t546, ptr %a509 - br label %for.cond4011 -for.end4014: + br label %for.cond4295 +for.end4298: %t547 = load %S.ast.Type, ptr %a2 %t548 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t547) - store { ptr, i64, i64 } { ptr @.str.2491, i64 52, i64 0 }, ptr %a550 + store { ptr, i64, i64 } { ptr @.str.2704, i64 52, i64 0 }, ptr %a550 store { ptr, i64, i64 } %t548, ptr %a551 call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) %t552 = load { ptr, i64, i64 }, ptr %a549 store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.2492, i64 10, i64 0 }, ptr %a555 + store { ptr, i64, i64 } { ptr @.str.2705, i64 10, i64 0 }, ptr %a555 call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) %t556 = load { ptr, i64, i64 }, ptr %a553 %t557 = load i64, ptr %a58 @@ -36029,11 +39835,11 @@ for.end4014: call void @finch_str_concat(ptr %a560, ptr %a561, ptr %a562) %t563 = load { ptr, i64, i64 }, ptr %a560 store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.2493, i64 36, i64 0 }, ptr %a566 + store { ptr, i64, i64 } { ptr @.str.2706, i64 36, i64 0 }, ptr %a566 call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) %t567 = load { ptr, i64, i64 }, ptr %a564 %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a508, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2494, i64 2, i64 0 }, ptr %a569 + store { ptr, i64, i64 } { ptr @.str.2707, i64 2, i64 0 }, ptr %a569 call void @finch_str_join(ptr %a570, ptr %a508, ptr %a569) %t571 = load { ptr, i64, i64 }, ptr %a570 store { ptr, i64, i64 } %t567, ptr %a573 @@ -36041,45 +39847,45 @@ for.end4014: call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) %t575 = load { ptr, i64, i64 }, ptr %a572 store { ptr, i64, i64 } %t575, ptr %a577 - store { ptr, i64, i64 } { ptr @.str.2495, i64 2, i64 0 }, ptr %a578 + store { ptr, i64, i64 } { ptr @.str.2708, i64 2, i64 0 }, ptr %a578 call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) %t579 = load { ptr, i64, i64 }, ptr %a576 %t580 = load ptr, ptr %a1 %t581 = icmp eq ptr %t580, null - br i1 %t581, label %panic4024, label %ok4025 -panic4024: - call void @finch_panic(ptr @.str.2496, i64 1737, ptr @.str.2497) + br i1 %t581, label %panic4308, label %ok4309 +panic4308: + call void @finch_panic(ptr @.str.2709, i64 1862, ptr @.str.2710) unreachable -ok4025: - %t582 = getelementptr inbounds %S.gen.Gen, ptr %t580, i32 0, i32 29 +ok4309: + %t582 = getelementptr inbounds %S.gen.Gen, ptr %t580, i32 0, i32 31 %t583 = load i64, ptr %a48 %t584 = load { ptr, i64, i64 }, ptr %t582 %t585 = extractvalue { ptr, i64, i64 } %t584, 1 %t586 = icmp uge i64 %t583, %t585 - br i1 %t586, label %range4026, label %inrange4027 -range4026: - call void @finch_panic_index(ptr @.str.2498, i64 1737, i64 %t583, i64 %t585) + br i1 %t586, label %range4310, label %inrange4311 +range4310: + call void @finch_panic_index(ptr @.str.2711, i64 1862, i64 %t583, i64 %t585) unreachable -inrange4027: +inrange4311: %t587 = extractvalue { ptr, i64, i64 } %t584, 0 %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %t587, i64 %t583 store { ptr, i64, i64 } %t579, ptr %t588 - br label %endif4010 -else4009: + br label %endif4294 +else4293: %t589 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.2499, i64 6, i64 0 }, ptr %a591 + store { ptr, i64, i64 } { ptr @.str.2712, i64 6, i64 0 }, ptr %a591 %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) %t593 = icmp ne i32 %t592, 0 - br i1 %t593, label %then4028, label %else4029 -then4028: + br i1 %t593, label %then4312, label %else4313 +then4312: %t594 = load ptr, ptr %a1 %t595 = icmp eq ptr %t594, null - br i1 %t595, label %panic4031, label %ok4032 -panic4031: - call void @finch_panic(ptr @.str.2500, i64 1739, ptr @.str.2501) + br i1 %t595, label %panic4315, label %ok4316 +panic4315: + call void @finch_panic(ptr @.str.2713, i64 1864, ptr @.str.2714) unreachable -ok4032: +ok4316: %t596 = getelementptr inbounds %S.gen.Gen, ptr %t594, i32 0, i32 15 %t597 = load ptr, ptr %a1 %t598 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -36090,11 +39896,11 @@ ok4032: %t603 = load { ptr, i64, i64 }, ptr %t596 %t604 = extractvalue { ptr, i64, i64 } %t603, 1 %t605 = icmp uge i64 %t602, %t604 - br i1 %t605, label %range4033, label %inrange4034 -range4033: - call void @finch_panic_index(ptr @.str.2502, i64 1739, i64 %t602, i64 %t604) + br i1 %t605, label %range4317, label %inrange4318 +range4317: + call void @finch_panic_index(ptr @.str.2715, i64 1864, i64 %t602, i64 %t604) unreachable -inrange4034: +inrange4318: %t606 = extractvalue { ptr, i64, i64 } %t603, 0 %t607 = getelementptr inbounds %S.gen.StructDef, ptr %t606, i64 %t602 %t608 = load %S.gen.StructDef, ptr %t607 @@ -36115,23 +39921,23 @@ inrange4034: %t623 = getelementptr inbounds { ptr, i64, i64 }, ptr %t622, i32 0, i32 1 %t624 = load i64, ptr %t623 store i64 0, ptr %a625 - br label %for.cond4035 -for.cond4035: + br label %for.cond4319 +for.cond4319: %t626 = load i64, ptr %a625 %t627 = icmp slt i64 %t626, %t624 - br i1 %t627, label %for.body4036, label %for.end4038 -for.body4036: + br i1 %t627, label %for.body4320, label %for.end4322 +for.body4320: %t628 = load ptr, ptr %a1 %t629 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 12 %t630 = load i64, ptr %a625 %t631 = load { ptr, i64, i64 }, ptr %t629 %t632 = extractvalue { ptr, i64, i64 } %t631, 1 %t633 = icmp uge i64 %t630, %t632 - br i1 %t633, label %range4039, label %inrange4040 -range4039: - call void @finch_panic_index(ptr @.str.2503, i64 1744, i64 %t630, i64 %t632) + br i1 %t633, label %range4323, label %inrange4324 +range4323: + call void @finch_panic_index(ptr @.str.2716, i64 1869, i64 %t630, i64 %t632) unreachable -inrange4040: +inrange4324: %t634 = extractvalue { ptr, i64, i64 } %t631, 0 %t635 = getelementptr inbounds %S.ast.Type, ptr %t634, i64 %t630 %t636 = load %S.ast.Type, ptr %t635 @@ -36144,11 +39950,11 @@ inrange4040: %t643 = load { ptr, i64, i64 }, ptr %t641 %t644 = extractvalue { ptr, i64, i64 } %t643, 1 %t645 = icmp uge i64 %t642, %t644 - br i1 %t645, label %range4041, label %inrange4042 -range4041: - call void @finch_panic_index(ptr @.str.2505, i64 1745, i64 %t642, i64 %t644) + br i1 %t645, label %range4325, label %inrange4326 +range4325: + call void @finch_panic_index(ptr @.str.2718, i64 1870, i64 %t642, i64 %t644) unreachable -inrange4042: +inrange4326: %t646 = extractvalue { ptr, i64, i64 } %t643, 0 %t647 = getelementptr inbounds { ptr, i64, i64 }, ptr %t646, i64 %t642 %t648 = load { ptr, i64, i64 }, ptr %t647 @@ -36160,11 +39966,11 @@ inrange4042: %t654 = load { ptr, i64, i64 }, ptr %t652 %t655 = extractvalue { ptr, i64, i64 } %t654, 1 %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range4043, label %inrange4044 -range4043: - call void @finch_panic_index(ptr @.str.2506, i64 1745, i64 %t653, i64 %t655) + br i1 %t656, label %range4327, label %inrange4328 +range4327: + call void @finch_panic_index(ptr @.str.2719, i64 1870, i64 %t653, i64 %t655) unreachable -inrange4044: +inrange4328: %t657 = extractvalue { ptr, i64, i64 } %t654, 0 %t658 = getelementptr inbounds %S.ast.Type, ptr %t657, i64 %t653 %t659 = load %S.ast.Type, ptr %t658 @@ -36176,11 +39982,11 @@ inrange4044: %t665 = load { ptr, i64, i64 }, ptr %a616 %t666 = extractvalue { ptr, i64, i64 } %t665, 1 %t667 = icmp uge i64 %t664, %t666 - br i1 %t667, label %range4045, label %inrange4046 -range4045: - call void @finch_panic_index(ptr @.str.2507, i64 1745, i64 %t664, i64 %t666) + br i1 %t667, label %range4329, label %inrange4330 +range4329: + call void @finch_panic_index(ptr @.str.2720, i64 1870, i64 %t664, i64 %t666) unreachable -inrange4046: +inrange4330: %t668 = extractvalue { ptr, i64, i64 } %t665, 0 %t669 = getelementptr inbounds i64, ptr %t668, i64 %t664 %t670 = load i64, ptr %t669 @@ -36188,7 +39994,7 @@ inrange4046: %t672 = call i64 @finch.gen.dbgMember(ptr %t640, { ptr, i64, i64 } %t648, i64 %t649, i64 %t650, i64 0, i64 %t660, i64 %t663, i64 %t671) call void @finch_str_from_int(ptr %a673, i64 %t672) %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.2504, i64 1, i64 0 }, ptr %a676 + store { ptr, i64, i64 } { ptr @.str.2717, i64 1, i64 0 }, ptr %a676 store { ptr, i64, i64 } %t674, ptr %a677 call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) %t678 = load { ptr, i64, i64 }, ptr %a675 @@ -36199,21 +40005,21 @@ inrange4046: %t682 = getelementptr inbounds { ptr, i64, i64 }, ptr %t681, i64 %t679 store { ptr, i64, i64 } %t678, ptr %t682 store i64 %t680, ptr %t639 - br label %for.step4037 -for.step4037: + br label %for.step4321 +for.step4321: %t683 = load i64, ptr %a625 %t684 = add i64 %t683, 1 store i64 %t684, ptr %a625 - br label %for.cond4035 -for.end4038: + br label %for.cond4319 +for.end4322: %t685 = getelementptr inbounds %S.gen.StructDef, ptr %a612, i32 0, i32 1 %t686 = load { ptr, i64, i64 }, ptr %t685 - store { ptr, i64, i64 } { ptr @.str.2508, i64 52, i64 0 }, ptr %a688 + store { ptr, i64, i64 } { ptr @.str.2721, i64 52, i64 0 }, ptr %a688 store { ptr, i64, i64 } %t686, ptr %a689 call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) %t690 = load { ptr, i64, i64 }, ptr %a687 store { ptr, i64, i64 } %t690, ptr %a692 - store { ptr, i64, i64 } { ptr @.str.2509, i64 10, i64 0 }, ptr %a693 + store { ptr, i64, i64 } { ptr @.str.2722, i64 10, i64 0 }, ptr %a693 call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) %t694 = load { ptr, i64, i64 }, ptr %a691 %t695 = load i64, ptr %a58 @@ -36224,7 +40030,7 @@ for.end4038: call void @finch_str_concat(ptr %a698, ptr %a699, ptr %a700) %t701 = load { ptr, i64, i64 }, ptr %a698 store { ptr, i64, i64 } %t701, ptr %a703 - store { ptr, i64, i64 } { ptr @.str.2510, i64 8, i64 0 }, ptr %a704 + store { ptr, i64, i64 } { ptr @.str.2723, i64 8, i64 0 }, ptr %a704 call void @finch_str_concat(ptr %a702, ptr %a703, ptr %a704) %t705 = load { ptr, i64, i64 }, ptr %a702 %t706 = getelementptr inbounds %S.gen.SizeAlign, ptr %a620, i32 0, i32 0 @@ -36237,11 +40043,11 @@ for.end4038: call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) %t714 = load { ptr, i64, i64 }, ptr %a711 store { ptr, i64, i64 } %t714, ptr %a716 - store { ptr, i64, i64 } { ptr @.str.2511, i64 24, i64 0 }, ptr %a717 + store { ptr, i64, i64 } { ptr @.str.2724, i64 24, i64 0 }, ptr %a717 call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717) %t718 = load { ptr, i64, i64 }, ptr %a715 %t719 = getelementptr inbounds { ptr, i64, i64 }, ptr %a621, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2512, i64 2, i64 0 }, ptr %a720 + store { ptr, i64, i64 } { ptr @.str.2725, i64 2, i64 0 }, ptr %a720 call void @finch_str_join(ptr %a721, ptr %a621, ptr %a720) %t722 = load { ptr, i64, i64 }, ptr %a721 store { ptr, i64, i64 } %t718, ptr %a724 @@ -36249,94 +40055,94 @@ for.end4038: call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) %t726 = load { ptr, i64, i64 }, ptr %a723 store { ptr, i64, i64 } %t726, ptr %a728 - store { ptr, i64, i64 } { ptr @.str.2513, i64 2, i64 0 }, ptr %a729 + store { ptr, i64, i64 } { ptr @.str.2726, i64 2, i64 0 }, ptr %a729 call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729) %t730 = load { ptr, i64, i64 }, ptr %a727 %t731 = load ptr, ptr %a1 %t732 = icmp eq ptr %t731, null - br i1 %t732, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2514, i64 1747, ptr @.str.2515) + br i1 %t732, label %panic4331, label %ok4332 +panic4331: + call void @finch_panic(ptr @.str.2727, i64 1872, ptr @.str.2728) unreachable -ok4048: - %t733 = getelementptr inbounds %S.gen.Gen, ptr %t731, i32 0, i32 29 +ok4332: + %t733 = getelementptr inbounds %S.gen.Gen, ptr %t731, i32 0, i32 31 %t734 = load i64, ptr %a48 %t735 = load { ptr, i64, i64 }, ptr %t733 %t736 = extractvalue { ptr, i64, i64 } %t735, 1 %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range4049, label %inrange4050 -range4049: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t734, i64 %t736) + br i1 %t737, label %range4333, label %inrange4334 +range4333: + call void @finch_panic_index(ptr @.str.2729, i64 1872, i64 %t734, i64 %t736) unreachable -inrange4050: +inrange4334: %t738 = extractvalue { ptr, i64, i64 } %t735, 0 %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 store { ptr, i64, i64 } %t730, ptr %t739 - br label %endif4030 -else4029: + br label %endif4314 +else4313: %t740 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2517, i64 20, i64 0 }, ptr %a742 + store { ptr, i64, i64 } { ptr @.str.2730, i64 20, i64 0 }, ptr %a742 store { ptr, i64, i64 } %t740, ptr %a743 call void @finch_str_concat(ptr %a741, ptr %a742, ptr %a743) %t744 = load { ptr, i64, i64 }, ptr %a741 store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.2518, i64 39, i64 0 }, ptr %a747 + store { ptr, i64, i64 } { ptr @.str.2731, i64 39, i64 0 }, ptr %a747 call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) %t748 = load { ptr, i64, i64 }, ptr %a745 %t749 = load ptr, ptr %a1 %t750 = icmp eq ptr %t749, null - br i1 %t750, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2519, i64 1749, ptr @.str.2520) + br i1 %t750, label %panic4335, label %ok4336 +panic4335: + call void @finch_panic(ptr @.str.2732, i64 1874, ptr @.str.2733) unreachable -ok4052: - %t751 = getelementptr inbounds %S.gen.Gen, ptr %t749, i32 0, i32 29 +ok4336: + %t751 = getelementptr inbounds %S.gen.Gen, ptr %t749, i32 0, i32 31 %t752 = load i64, ptr %a48 %t753 = load { ptr, i64, i64 }, ptr %t751 %t754 = extractvalue { ptr, i64, i64 } %t753, 1 %t755 = icmp uge i64 %t752, %t754 - br i1 %t755, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2521, i64 1749, i64 %t752, i64 %t754) + br i1 %t755, label %range4337, label %inrange4338 +range4337: + call void @finch_panic_index(ptr @.str.2734, i64 1874, i64 %t752, i64 %t754) unreachable -inrange4054: +inrange4338: %t756 = extractvalue { ptr, i64, i64 } %t753, 0 %t757 = getelementptr inbounds { ptr, i64, i64 }, ptr %t756, i64 %t752 store { ptr, i64, i64 } %t748, ptr %t757 - br label %endif4030 -endif4030: - br label %endif4010 -endif4010: - br label %endif3998 -endif3998: - br label %endif3983 -endif3983: - br label %endif3971 -endif3971: + br label %endif4314 +endif4314: + br label %endif4294 +endif4294: + br label %endif4282 +endif4282: + br label %endif4267 +endif4267: + br label %endif4255 +endif4255: %t758 = load i64, ptr %a48 ret i64 %t758 -endif3952: - br label %endif3946 -endif3946: - br label %endif3943 -endif3943: - br label %endif3940 -endif3940: - br label %endif3937 -endif3937: - br label %endif3934 -endif3934: - br label %endif3931 -endif3931: +endif4236: + br label %endif4230 +endif4230: + br label %endif4227 +endif4227: + br label %endif4224 +endif4224: + br label %endif4221 +endif4221: + br label %endif4218 +endif4218: + br label %endif4215 +endif4215: %t759 = load i64, ptr %a48 %t760 = load ptr, ptr %a1 %t761 = icmp eq ptr %t760, null - br i1 %t761, label %panic4055, label %ok4056 -panic4055: - call void @finch_panic(ptr @.str.2522, i64 1753, ptr @.str.2523) + br i1 %t761, label %panic4339, label %ok4340 +panic4339: + call void @finch_panic(ptr @.str.2735, i64 1878, ptr @.str.2736) unreachable -ok4056: - %t762 = getelementptr inbounds %S.gen.Gen, ptr %t760, i32 0, i32 30 +ok4340: + %t762 = getelementptr inbounds %S.gen.Gen, ptr %t760, i32 0, i32 32 %t763 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t763, ptr %a764 store i32 0, ptr %a765 @@ -36346,14 +40152,14 @@ ok4056: %t769 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t768, i64 %t766 %t770 = load i32, ptr %a765 %t771 = icmp ne i32 %t770, 0 - br i1 %t771, label %map.new4057, label %map.have4058 -map.new4057: + br i1 %t771, label %map.new4341, label %map.have4342 +map.new4341: %t772 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 1 call void @finch_str_copy(ptr %t772, ptr %a764) %t773 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 2 store i64 0, ptr %t773 - br label %map.have4058 -map.have4058: + br label %map.have4342 +map.have4342: %t774 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t769, i32 0, i32 2 store i64 %t759, ptr %t774 %t775 = load i64, ptr %a48 @@ -36413,31 +40219,31 @@ entry: store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4059, label %ok4060 -panic4059: - call void @finch_panic(ptr @.str.2525, i64 1758, ptr @.str.2526) + br i1 %t3, label %panic4343, label %ok4344 +panic4343: + call void @finch_panic(ptr @.str.2738, i64 1883, ptr @.str.2739) unreachable -ok4060: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 33 +ok4344: + %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 35 %t5 = load i64, ptr %t4 call void @finch_str_from_int(ptr %a6, i64 %t5) %t7 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.2524, i64 2, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.2737, i64 2, i64 0 }, ptr %a9 store { ptr, i64, i64 } %t7, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t11, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2527, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.2740, i64 1, i64 0 }, ptr %a14 call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic4061, label %ok4062 -panic4061: - call void @finch_panic(ptr @.str.2528, i64 1758, ptr @.str.2529) + br i1 %t17, label %panic4345, label %ok4346 +panic4345: + call void @finch_panic(ptr @.str.2741, i64 1883, ptr @.str.2742) unreachable -ok4062: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 34 +ok4346: + %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 36 %t19 = load i64, ptr %t18 call void @finch_str_from_int(ptr %a20, i64 %t19) %t21 = load { ptr, i64, i64 }, ptr %a20 @@ -36446,17 +40252,17 @@ ok4062: call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2530, i64 1, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2743, i64 1, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 %t30 = load ptr, ptr %a1 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic4063, label %ok4064 -panic4063: - call void @finch_panic(ptr @.str.2531, i64 1758, ptr @.str.2532) + br i1 %t31, label %panic4347, label %ok4348 +panic4347: + call void @finch_panic(ptr @.str.2744, i64 1883, ptr @.str.2745) unreachable -ok4064: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 32 +ok4348: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 34 %t33 = load i64, ptr %t32 call void @finch_str_from_int(ptr %a34, i64 %t33) %t35 = load { ptr, i64, i64 }, ptr %a34 @@ -36467,73 +40273,73 @@ ok4064: store { ptr, i64, i64 } %t39, ptr %a40 %t41 = load ptr, ptr %a1 %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4065, label %ok4066 -panic4065: - call void @finch_panic(ptr @.str.2533, i64 1759, ptr @.str.2534) + br i1 %t42, label %panic4349, label %ok4350 +panic4349: + call void @finch_panic(ptr @.str.2746, i64 1884, ptr @.str.2747) unreachable -ok4066: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 30 +ok4350: + %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 32 %t44 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t44, ptr %a45 %t46 = call i64 @finch_map_find(ptr %t43, ptr %a45, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then4067, label %endif4069 -then4067: + br i1 %t47, label %then4351, label %endif4353 +then4351: %t48 = load ptr, ptr %a1 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4070, label %ok4071 -panic4070: - call void @finch_panic(ptr @.str.2535, i64 1760, ptr @.str.2536) + br i1 %t49, label %panic4354, label %ok4355 +panic4354: + call void @finch_panic(ptr @.str.2748, i64 1885, ptr @.str.2749) unreachable -ok4071: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 30 +ok4355: + %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 32 %t51 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t51, ptr %a52 %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t54 = icmp slt i64 %t53, 0 - br i1 %t54, label %map.missing4072, label %map.found4073 -map.missing4072: + br i1 %t54, label %map.missing4356, label %map.found4357 +map.missing4356: store { ptr, i64, i64 } zeroinitializer, ptr %a55 store { ptr, i64, i64 } %t51, ptr %a56 call void @finch_buf_str(ptr %a55, ptr %a56, i32 1) - call void @finch_map_missing(ptr @.str.2537, i64 1760, ptr %a55) + call void @finch_map_missing(ptr @.str.2750, i64 1885, ptr %a55) unreachable -map.found4073: +map.found4357: %t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t50, i32 0, i32 0 %t58 = load ptr, ptr %t57 %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t58, i64 %t53 %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t59, i32 0, i32 2 %t61 = load i64, ptr %t60 ret i64 %t61 -endif4069: +endif4353: %t62 = load ptr, ptr %a1 %t63 = load ptr, ptr %a1 %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4074, label %ok4075 -panic4074: - call void @finch_panic(ptr @.str.2539, i64 1762, ptr @.str.2540) + br i1 %t64, label %panic4358, label %ok4359 +panic4358: + call void @finch_panic(ptr @.str.2752, i64 1887, ptr @.str.2753) unreachable -ok4075: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 33 +ok4359: + %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 35 %t66 = load i64, ptr %t65 call void @finch_str_from_int(ptr %a67, i64 %t66) %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.2538, i64 18, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.2751, i64 18, i64 0 }, ptr %a70 store { ptr, i64, i64 } %t68, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2541, i64 10, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2754, i64 10, i64 0 }, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 %t77 = load ptr, ptr %a1 %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic4076, label %ok4077 -panic4076: - call void @finch_panic(ptr @.str.2542, i64 1762, ptr @.str.2543) + br i1 %t78, label %panic4360, label %ok4361 +panic4360: + call void @finch_panic(ptr @.str.2755, i64 1887, ptr @.str.2756) unreachable -ok4077: - %t79 = getelementptr inbounds %S.gen.Gen, ptr %t77, i32 0, i32 34 +ok4361: + %t79 = getelementptr inbounds %S.gen.Gen, ptr %t77, i32 0, i32 36 %t80 = load i64, ptr %t79 call void @finch_str_from_int(ptr %a81, i64 %t80) %t82 = load { ptr, i64, i64 }, ptr %a81 @@ -36542,17 +40348,17 @@ ok4077: call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.2544, i64 10, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.2757, i64 10, i64 0 }, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 %t91 = load ptr, ptr %a1 %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4078, label %ok4079 -panic4078: - call void @finch_panic(ptr @.str.2545, i64 1762, ptr @.str.2546) + br i1 %t92, label %panic4362, label %ok4363 +panic4362: + call void @finch_panic(ptr @.str.2758, i64 1887, ptr @.str.2759) unreachable -ok4079: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 32 +ok4363: + %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 34 %t94 = load i64, ptr %t93 call void @finch_str_from_int(ptr %a95, i64 %t94) %t96 = load { ptr, i64, i64 }, ptr %a95 @@ -36561,7 +40367,7 @@ ok4079: call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2547, i64 1, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.2760, i64 1, i64 0 }, ptr %a103 call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) %t104 = load { ptr, i64, i64 }, ptr %a101 %t105 = call i64 @finch.gen.md(ptr %t62, { ptr, i64, i64 } %t104) @@ -36569,12 +40375,12 @@ ok4079: %t107 = load i64, ptr %a106 %t108 = load ptr, ptr %a1 %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic4080, label %ok4081 -panic4080: - call void @finch_panic(ptr @.str.2548, i64 1763, ptr @.str.2549) + br i1 %t109, label %panic4364, label %ok4365 +panic4364: + call void @finch_panic(ptr @.str.2761, i64 1888, ptr @.str.2762) unreachable -ok4081: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 30 +ok4365: + %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 32 %t111 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t111, ptr %a112 store i32 0, ptr %a113 @@ -36584,14 +40390,14 @@ ok4081: %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t116, i64 %t114 %t118 = load i32, ptr %a113 %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new4082, label %map.have4083 -map.new4082: + br i1 %t119, label %map.new4366, label %map.have4367 +map.new4366: %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 1 call void @finch_str_copy(ptr %t120, ptr %a112) %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 2 store i64 0, ptr %t121 - br label %map.have4083 -map.have4083: + br label %map.have4367 +map.have4367: %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t117, i32 0, i32 2 store i64 %t107, ptr %t122 %t123 = load i64, ptr %a106 @@ -36671,11 +40477,11 @@ entry: store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4084, label %ok4085 -panic4084: - call void @finch_panic(ptr @.str.2550, i64 1768, ptr @.str.2551) + br i1 %t4, label %panic4368, label %ok4369 +panic4368: + call void @finch_panic(ptr @.str.2763, i64 1893, ptr @.str.2764) unreachable -ok4085: +ok4369: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 12 %t6 = load %S.gen.FnSig, ptr %t5 store %S.gen.FnSig %t6, ptr %a7 @@ -36700,28 +40506,28 @@ ok4085: %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load i64, ptr %t23 %t25 = icmp sgt i64 %t24, 0 - br i1 %t25, label %then4086, label %endif4088 -then4086: + br i1 %t25, label %then4370, label %endif4372 +then4370: %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 %t27 = load i64, ptr %t26 %t28 = add i64 %t27, 1 call void @finch_arr_reserve(ptr %a11, i64 %t28, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t29 = load ptr, ptr %a11 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t27 - store { ptr, i64, i64 } { ptr @.str.2552, i64 4, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.2765, i64 4, i64 0 }, ptr %t30 store i64 %t28, ptr %t26 - br label %endif4088 -endif4088: + br label %endif4372 +endif4372: %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 store i64 0, ptr %a32 - br label %each.cond4089 -each.cond4089: + br label %each.cond4373 +each.cond4373: %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 %t34 = load i64, ptr %t33 %t35 = load i64, ptr %a32 %t36 = icmp slt i64 %t35, %t34 - br i1 %t36, label %each.body4090, label %each.end4092 -each.body4090: + br i1 %t36, label %each.body4374, label %each.end4376 +each.body4374: %t37 = load ptr, ptr %t31 %t38 = getelementptr inbounds %S.ast.Type, ptr %t37, i64 %t35 %t39 = load %S.ast.Type, ptr %t38 @@ -36738,46 +40544,46 @@ each.body4090: %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i64 %t46 store { ptr, i64, i64 } %t45, ptr %t49 store i64 %t47, ptr %t41 - br label %each.step4091 -each.step4091: + br label %each.step4375 +each.step4375: %t50 = load i64, ptr %a32 %t51 = add i64 %t50, 1 store i64 %t51, ptr %a32 - br label %each.cond4089 -each.end4092: + br label %each.cond4373 +each.end4376: %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4093, label %ok4094 -panic4093: - call void @finch_panic(ptr @.str.2553, i64 1777, ptr @.str.2554) + br i1 %t53, label %panic4377, label %ok4378 +panic4377: + call void @finch_panic(ptr @.str.2766, i64 1902, ptr @.str.2767) unreachable -ok4094: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 31 +ok4378: + %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 33 %t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t56 = load i64, ptr %t55 %t57 = load { ptr, i64, i64 }, ptr %t54 %t58 = extractvalue { ptr, i64, i64 } %t57, 1 %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range4095, label %inrange4096 -range4095: - call void @finch_panic_index(ptr @.str.2555, i64 1777, i64 %t56, i64 %t58) + br i1 %t59, label %range4379, label %inrange4380 +range4379: + call void @finch_panic_index(ptr @.str.2768, i64 1902, i64 %t56, i64 %t58) unreachable -inrange4096: +inrange4380: %t60 = extractvalue { ptr, i64, i64 } %t57, 0 %t61 = getelementptr inbounds i64, ptr %t60, i64 %t56 %t62 = load i64, ptr %t61 store i64 %t62, ptr %a63 %t64 = load ptr, ptr %a1 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2557, i64 2, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.2770, i64 2, i64 0 }, ptr %a66 call void @finch_str_join(ptr %a67, ptr %a11, ptr %a66) %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.2556, i64 27, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.2769, i64 27, i64 0 }, ptr %a70 store { ptr, i64, i64 } %t68, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2558, i64 2, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.2771, i64 2, i64 0 }, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 %t77 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t76) @@ -36785,12 +40591,12 @@ inrange4096: %t79 = load ptr, ptr %a1 %t80 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.2559, i64 30, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.2772, i64 30, i64 0 }, ptr %a83 store { ptr, i64, i64 } %t81, ptr %a84 call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2560, i64 17, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.2773, i64 17, i64 0 }, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 @@ -36799,14 +40605,14 @@ inrange4096: %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 %t96 = load i64, ptr %t95 - call void @finch_str_sub(ptr %a93, ptr %a92, i64 1, i64 %t96, ptr @.str.2561, i64 1779) + call void @finch_str_sub(ptr %a93, ptr %a92, i64 1, i64 %t96, ptr @.str.2774, i64 1904) %t97 = load { ptr, i64, i64 }, ptr %a93 store { ptr, i64, i64 } %t89, ptr %a99 store { ptr, i64, i64 } %t97, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2562, i64 11, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.2775, i64 11, i64 0 }, ptr %a104 call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) %t105 = load { ptr, i64, i64 }, ptr %a102 %t106 = load i64, ptr %a63 @@ -36817,7 +40623,7 @@ inrange4096: call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) %t112 = load { ptr, i64, i64 }, ptr %a109 store { ptr, i64, i64 } %t112, ptr %a114 - store { ptr, i64, i64 } { ptr @.str.2563, i64 9, i64 0 }, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.2776, i64 9, i64 0 }, ptr %a115 call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) %t116 = load { ptr, i64, i64 }, ptr %a113 %t117 = load i64, ptr %a63 @@ -36828,7 +40634,7 @@ inrange4096: call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) %t123 = load { ptr, i64, i64 }, ptr %a120 store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2564, i64 8, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a126 call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) %t127 = load { ptr, i64, i64 }, ptr %a124 %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -36840,7 +40646,7 @@ inrange4096: call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2565, i64 9, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.2778, i64 9, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = load i64, ptr %a78 @@ -36851,7 +40657,7 @@ inrange4096: call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) %t146 = load { ptr, i64, i64 }, ptr %a143 store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2566, i64 13, i64 0 }, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.2779, i64 13, i64 0 }, ptr %a149 call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) %t150 = load { ptr, i64, i64 }, ptr %a147 %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -36863,7 +40669,7 @@ inrange4096: call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) %t158 = load { ptr, i64, i64 }, ptr %a155 store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.2567, i64 87, i64 0 }, ptr %a161 + store { ptr, i64, i64 } { ptr @.str.2780, i64 87, i64 0 }, ptr %a161 call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) %t162 = load { ptr, i64, i64 }, ptr %a159 %t163 = call i64 @finch.gen.md(ptr %t79, { ptr, i64, i64 } %t162) @@ -36941,96 +40747,96 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic4097, label %ok4098 -panic4097: - call void @finch_panic(ptr @.str.2568, i64 1783, ptr @.str.2569) + br i1 %t7, label %panic4381, label %ok4382 +panic4381: + call void @finch_panic(ptr @.str.2781, i64 1908, ptr @.str.2782) unreachable -ok4098: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 26 +ok4382: + %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 28 %t9 = load i1, ptr %t8 %t10 = xor i1 %t9, true - br label %logic.from4099 -logic.from4099: - br i1 %t10, label %logic.end4101, label %logic.rhs4100 -logic.rhs4100: + br label %logic.from4383 +logic.from4383: + br i1 %t10, label %logic.end4385, label %logic.rhs4384 +logic.rhs4384: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4102, label %ok4103 -panic4102: - call void @finch_panic(ptr @.str.2570, i64 1783, ptr @.str.2571) + br i1 %t12, label %panic4386, label %ok4387 +panic4386: + call void @finch_panic(ptr @.str.2783, i64 1908, ptr @.str.2784) unreachable -ok4103: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 32 +ok4387: + %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 34 %t14 = load i64, ptr %t13 %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4104 -logic.rend4104: - br label %logic.end4101 -logic.end4101: - %t16 = phi i1 [ true, %logic.from4099 ], [ %t15, %logic.rend4104 ] - br i1 %t16, label %then4105, label %endif4107 -then4105: + br label %logic.rend4388 +logic.rend4388: + br label %logic.end4385 +logic.end4385: + %t16 = phi i1 [ true, %logic.from4383 ], [ %t15, %logic.rend4388 ] + br i1 %t16, label %then4389, label %endif4391 +then4389: ret void -endif4107: +endif4391: %t17 = load ptr, ptr %a1 %t18 = load %S.ast.Type, ptr %a4 %t19 = call i64 @finch.gen.diType(ptr %t17, %S.ast.Type %t18) store i64 %t19, ptr %a20 %t21 = load i64, ptr %a20 %t22 = icmp slt i64 %t21, 0 - br i1 %t22, label %then4108, label %endif4110 -then4108: + br i1 %t22, label %then4392, label %endif4394 +then4392: ret void -endif4110: - store { ptr, i64, i64 } { ptr @.str.2572, i64 0, i64 0 }, ptr %a23 +endif4394: + store { ptr, i64, i64 } { ptr @.str.2785, i64 0, i64 0 }, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4111, label %ok4112 -panic4111: - call void @finch_panic(ptr @.str.2573, i64 1791, ptr @.str.2574) + br i1 %t25, label %panic4395, label %ok4396 +panic4395: + call void @finch_panic(ptr @.str.2786, i64 1916, ptr @.str.2787) unreachable -ok4112: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 35 +ok4396: + %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 37 %t27 = load i64, ptr %t26 %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4113, label %endif4115 -then4113: + br i1 %t28, label %then4397, label %endif4399 +then4397: %t29 = load ptr, ptr %a1 %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4116, label %ok4117 -panic4116: - call void @finch_panic(ptr @.str.2576, i64 1792, ptr @.str.2577) + br i1 %t30, label %panic4400, label %ok4401 +panic4400: + call void @finch_panic(ptr @.str.2789, i64 1917, ptr @.str.2790) unreachable -ok4117: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 35 +ok4401: + %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 37 %t32 = load i64, ptr %t31 call void @finch_str_from_int(ptr %a33, i64 %t32) %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.2575, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.2788, i64 7, i64 0 }, ptr %a36 store { ptr, i64, i64 } %t34, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 store { ptr, i64, i64 } %t38, ptr %a23 - br label %endif4115 -endif4115: + br label %endif4399 +endif4399: %t39 = load ptr, ptr %a1 %t40 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2578, i64 24, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.2791, i64 24, i64 0 }, ptr %a42 store { ptr, i64, i64 } %t40, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.2579, i64 11, i64 0 }, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.2792, i64 11, i64 0 }, ptr %a47 call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) %t48 = load { ptr, i64, i64 }, ptr %a45 %t49 = load ptr, ptr %a1 %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic4118, label %ok4119 -panic4118: - call void @finch_panic(ptr @.str.2580, i64 1794, ptr @.str.2581) + br i1 %t50, label %panic4402, label %ok4403 +panic4402: + call void @finch_panic(ptr @.str.2793, i64 1919, ptr @.str.2794) unreachable -ok4119: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 32 +ok4403: + %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 34 %t52 = load i64, ptr %t51 call void @finch_str_from_int(ptr %a53, i64 %t52) %t54 = load { ptr, i64, i64 }, ptr %a53 @@ -37039,27 +40845,27 @@ ok4119: call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) %t58 = load { ptr, i64, i64 }, ptr %a55 store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.2582, i64 9, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.2795, i64 9, i64 0 }, ptr %a61 call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) %t62 = load { ptr, i64, i64 }, ptr %a59 %t63 = load ptr, ptr %a1 %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic4120, label %ok4121 -panic4120: - call void @finch_panic(ptr @.str.2583, i64 1794, ptr @.str.2584) + br i1 %t64, label %panic4404, label %ok4405 +panic4404: + call void @finch_panic(ptr @.str.2796, i64 1919, ptr @.str.2797) unreachable -ok4121: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 31 +ok4405: + %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 33 %t66 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t67 = load i64, ptr %t66 %t68 = load { ptr, i64, i64 }, ptr %t65 %t69 = extractvalue { ptr, i64, i64 } %t68, 1 %t70 = icmp uge i64 %t67, %t69 - br i1 %t70, label %range4122, label %inrange4123 -range4122: - call void @finch_panic_index(ptr @.str.2585, i64 1794, i64 %t67, i64 %t69) + br i1 %t70, label %range4406, label %inrange4407 +range4406: + call void @finch_panic_index(ptr @.str.2798, i64 1919, i64 %t67, i64 %t69) unreachable -inrange4123: +inrange4407: %t71 = extractvalue { ptr, i64, i64 } %t68, 0 %t72 = getelementptr inbounds i64, ptr %t71, i64 %t67 %t73 = load i64, ptr %t72 @@ -37070,7 +40876,7 @@ inrange4123: call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.2586, i64 8, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.2799, i64 8, i64 0 }, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -37082,7 +40888,7 @@ inrange4123: call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) %t91 = load { ptr, i64, i64 }, ptr %a88 store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2587, i64 9, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.2800, i64 9, i64 0 }, ptr %a94 call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) %t95 = load { ptr, i64, i64 }, ptr %a92 %t96 = load i64, ptr %a20 @@ -37098,7 +40904,7 @@ inrange4123: call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) %t107 = load { ptr, i64, i64 }, ptr %a104 store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2588, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.2801, i64 1, i64 0 }, ptr %a110 call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 %t112 = call i64 @finch.gen.md(ptr %t39, { ptr, i64, i64 } %t111) @@ -37107,32 +40913,32 @@ inrange4123: %t115 = load i64, ptr %t114 %t116 = load ptr, ptr %a1 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4124, label %ok4125 -panic4124: - call void @finch_panic(ptr @.str.2589, i64 1795, ptr @.str.2590) + br i1 %t117, label %panic4408, label %ok4409 +panic4408: + call void @finch_panic(ptr @.str.2802, i64 1920, ptr @.str.2803) unreachable -ok4125: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 33 +ok4409: + %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 35 store i64 %t115, ptr %t118 %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 %t120 = load i64, ptr %t119 %t121 = load ptr, ptr %a1 %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4126, label %ok4127 -panic4126: - call void @finch_panic(ptr @.str.2591, i64 1796, ptr @.str.2592) + br i1 %t122, label %panic4410, label %ok4411 +panic4410: + call void @finch_panic(ptr @.str.2804, i64 1921, ptr @.str.2805) unreachable -ok4127: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 34 +ok4411: + %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 36 store i64 %t120, ptr %t123 %t124 = load ptr, ptr %a1 %t125 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2593, i64 41, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.2806, i64 41, i64 0 }, ptr %a127 store { ptr, i64, i64 } %t125, ptr %a128 call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) %t129 = load { ptr, i64, i64 }, ptr %a126 store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.2594, i64 12, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.2807, i64 12, i64 0 }, ptr %a132 call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 %t134 = load i64, ptr %a113 @@ -37143,7 +40949,7 @@ ok4127: call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) %t140 = load { ptr, i64, i64 }, ptr %a137 store { ptr, i64, i64 } %t140, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.2595, i64 27, i64 0 }, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.2808, i64 27, i64 0 }, ptr %a143 call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) %t144 = load { ptr, i64, i64 }, ptr %a141 call void @finch.gen.emit(ptr %t124, { ptr, i64, i64 } %t144) @@ -37174,59 +40980,59 @@ entry: %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2596, i64 20, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.2809, i64 20, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2597, i64 30, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.2810, i64 30, i64 0 }, ptr %t5 %t6 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t7 = insertvalue { ptr, i64, i64 } %t6, i64 2, 1 %t8 = insertvalue { ptr, i64, i64 } %t7, i64 2, 2 store { ptr, i64, i64 } %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic4128, label %ok4129 -panic4128: - call void @finch_panic(ptr @.str.2598, i64 1803, ptr @.str.2599) + br i1 %t11, label %panic4412, label %ok4413 +panic4412: + call void @finch_panic(ptr @.str.2811, i64 1928, ptr @.str.2812) unreachable -ok4129: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 29 +ok4413: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 31 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 %t14 = load i64, ptr %t13 store i64 0, ptr %a15 - br label %for.cond4130 -for.cond4130: + br label %for.cond4414 +for.cond4414: %t16 = load i64, ptr %a15 %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4131, label %for.end4133 -for.body4131: + br i1 %t17, label %for.body4415, label %for.end4417 +for.body4415: %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 %t19 = load i64, ptr %a15 call void @finch_str_from_int(ptr %a20, i64 %t19) %t21 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.2600, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.2813, i64 1, i64 0 }, ptr %a23 store { ptr, i64, i64 } %t21, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2601, i64 3, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2814, i64 3, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 %t30 = load ptr, ptr %a1 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic4134, label %ok4135 -panic4134: - call void @finch_panic(ptr @.str.2602, i64 1804, ptr @.str.2603) + br i1 %t31, label %panic4418, label %ok4419 +panic4418: + call void @finch_panic(ptr @.str.2815, i64 1929, ptr @.str.2816) unreachable -ok4135: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 29 +ok4419: + %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 31 %t33 = load i64, ptr %a15 %t34 = load { ptr, i64, i64 }, ptr %t32 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp uge i64 %t33, %t35 - br i1 %t36, label %range4136, label %inrange4137 -range4136: - call void @finch_panic_index(ptr @.str.2604, i64 1804, i64 %t33, i64 %t35) + br i1 %t36, label %range4420, label %inrange4421 +range4420: + call void @finch_panic_index(ptr @.str.2817, i64 1929, i64 %t33, i64 %t35) unreachable -inrange4137: +inrange4421: %t37 = extractvalue { ptr, i64, i64 } %t34, 0 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t33 %t39 = load { ptr, i64, i64 }, ptr %t38 @@ -37241,19 +41047,19 @@ inrange4137: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44 store { ptr, i64, i64 } %t43, ptr %t47 store i64 %t45, ptr %t18 - br label %for.step4132 -for.step4132: + br label %for.step4416 +for.step4416: %t48 = load i64, ptr %a15 %t49 = add i64 %t48, 1 store i64 %t49, ptr %a15 - br label %for.cond4130 -for.end4133: + br label %for.cond4414 +for.end4417: %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2605, i64 1, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.2818, i64 1, i64 0 }, ptr %a51 call void @finch_str_join(ptr %a52, ptr %a9, ptr %a51) %t53 = load { ptr, i64, i64 }, ptr %a52 store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.2606, i64 1, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.2819, i64 1, i64 0 }, ptr %a56 call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 ret { ptr, i64, i64 } %t57 @@ -37268,20 +41074,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond4206 -n.cond4206: + br label %n.cond4490 +n.cond4490: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4207, label %n.end4208 -n.body4207: + br i1 %t7, label %n.body4491, label %n.end4492 +n.body4491: %t8 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.gen.Scope, ptr %t2, i64 %t6 call void @finch.copy.S_gen_Scope(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond4206 -n.end4208: + br label %n.cond4490 +n.end4492: ret void } @@ -37410,31 +41216,31 @@ entry: store i64 %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4138, label %ok4139 -panic4138: - call void @finch_panic(ptr @.str.2607, i64 1810, ptr @.str.2608) + br i1 %t4, label %panic4422, label %ok4423 +panic4422: + call void @finch_panic(ptr @.str.2820, i64 1935, ptr @.str.2821) unreachable -ok4139: +ok4423: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 14 %t6 = load i64, ptr %a2 %t7 = load { ptr, i64, i64 }, ptr %t5 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4140, label %inrange4141 -range4140: - call void @finch_panic_index(ptr @.str.2609, i64 1810, i64 %t6, i64 %t8) + br i1 %t9, label %range4424, label %inrange4425 +range4424: + call void @finch_panic_index(ptr @.str.2822, i64 1935, i64 %t6, i64 %t8) unreachable -inrange4141: +inrange4425: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.gen.FnSig, ptr %t10, i64 %t6 %t12 = load %S.gen.FnSig, ptr %t11 %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic4142, label %ok4143 -panic4142: - call void @finch_panic(ptr @.str.2610, i64 1810, ptr @.str.2611) + br i1 %t14, label %panic4426, label %ok4427 +panic4426: + call void @finch_panic(ptr @.str.2823, i64 1935, ptr @.str.2824) unreachable -ok4143: +ok4427: %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 12 store %S.gen.FnSig %t12, ptr %a16 call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) @@ -37442,21 +41248,21 @@ ok4143: store %S.gen.FnSig %t18, ptr %t15 %t19 = load ptr, ptr %a1 %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic4144, label %ok4145 -panic4144: - call void @finch_panic(ptr @.str.2612, i64 1811, ptr @.str.2613) + br i1 %t20, label %panic4428, label %ok4429 +panic4428: + call void @finch_panic(ptr @.str.2825, i64 1936, ptr @.str.2826) unreachable -ok4145: +ok4429: %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 12 %t22 = getelementptr inbounds %S.gen.FnSig, ptr %t21, i32 0, i32 0 %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4146, label %ok4147 -panic4146: - call void @finch_panic(ptr @.str.2614, i64 1811, ptr @.str.2615) + br i1 %t25, label %panic4430, label %ok4431 +panic4430: + call void @finch_panic(ptr @.str.2827, i64 1936, ptr @.str.2828) unreachable -ok4147: +ok4431: %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 13 store { ptr, i64, i64 } %t23, ptr %a27 call void @finch_str_copy(ptr %a28, ptr %a27) @@ -37464,21 +41270,21 @@ ok4147: store { ptr, i64, i64 } %t29, ptr %t26 %t30 = load ptr, ptr %a1 %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic4148, label %ok4149 -panic4148: - call void @finch_panic(ptr @.str.2616, i64 1812, ptr @.str.2617) + br i1 %t31, label %panic4432, label %ok4433 +panic4432: + call void @finch_panic(ptr @.str.2829, i64 1937, ptr @.str.2830) unreachable -ok4149: +ok4433: %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 12 %t33 = getelementptr inbounds %S.gen.FnSig, ptr %t32, i32 0, i32 6 %t34 = load { ptr, i64, i64 }, ptr %t33 %t35 = load ptr, ptr %a1 %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4150, label %ok4151 -panic4150: - call void @finch_panic(ptr @.str.2618, i64 1812, ptr @.str.2619) + br i1 %t36, label %panic4434, label %ok4435 +panic4434: + call void @finch_panic(ptr @.str.2831, i64 1937, ptr @.str.2832) unreachable -ok4151: +ok4435: %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 17 store { ptr, i64, i64 } %t34, ptr %a38 call void @finch.copy.arr_str(ptr %a39, ptr %a38) @@ -37486,21 +41292,21 @@ ok4151: store { ptr, i64, i64 } %t40, ptr %t37 %t41 = load ptr, ptr %a1 %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic4152, label %ok4153 -panic4152: - call void @finch_panic(ptr @.str.2620, i64 1813, ptr @.str.2621) + br i1 %t42, label %panic4436, label %ok4437 +panic4436: + call void @finch_panic(ptr @.str.2833, i64 1938, ptr @.str.2834) unreachable -ok4153: +ok4437: %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 12 %t44 = getelementptr inbounds %S.gen.FnSig, ptr %t43, i32 0, i32 7 %t45 = load { ptr, i64, i64 }, ptr %t44 %t46 = load ptr, ptr %a1 %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic4154, label %ok4155 -panic4154: - call void @finch_panic(ptr @.str.2622, i64 1813, ptr @.str.2623) + br i1 %t47, label %panic4438, label %ok4439 +panic4438: + call void @finch_panic(ptr @.str.2835, i64 1938, ptr @.str.2836) unreachable -ok4155: +ok4439: %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 18 store { ptr, i64, i64 } %t45, ptr %a49 call void @finch.copy.arr_S_ast_Type(ptr %a50, ptr %a49) @@ -37508,103 +41314,103 @@ ok4155: store { ptr, i64, i64 } %t51, ptr %t48 %t52 = load ptr, ptr %a1 %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4156, label %ok4157 -panic4156: - call void @finch_panic(ptr @.str.2625, i64 1814, ptr @.str.2626) + br i1 %t53, label %panic4440, label %ok4441 +panic4440: + call void @finch_panic(ptr @.str.2838, i64 1939, ptr @.str.2839) unreachable -ok4157: +ok4441: %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } { ptr @.str.2624, i64 0, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.2837, i64 0, i64 0 }, ptr %t54 %t55 = load ptr, ptr %a1 %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4158, label %ok4159 -panic4158: - call void @finch_panic(ptr @.str.2627, i64 1815, ptr @.str.2628) + br i1 %t56, label %panic4442, label %ok4443 +panic4442: + call void @finch_panic(ptr @.str.2840, i64 1940, ptr @.str.2841) unreachable -ok4159: +ok4443: %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 12 %t58 = getelementptr inbounds %S.gen.FnSig, ptr %t57, i32 0, i32 7 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1 %t60 = load i64, ptr %t59 %t61 = icmp sgt i64 %t60, 0 - br i1 %t61, label %then4160, label %endif4162 -then4160: + br i1 %t61, label %then4444, label %endif4446 +then4444: %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic4163, label %ok4164 -panic4163: - call void @finch_panic(ptr @.str.2630, i64 1816, ptr @.str.2631) + br i1 %t63, label %panic4447, label %ok4448 +panic4447: + call void @finch_panic(ptr @.str.2843, i64 1941, ptr @.str.2844) unreachable -ok4164: +ok4448: %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 12 %t65 = getelementptr inbounds %S.gen.FnSig, ptr %t64, i32 0, i32 8 %t66 = load { ptr, i64, i64 }, ptr %t65 - store { ptr, i64, i64 } { ptr @.str.2629, i64 17, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.2842, i64 17, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.2632, i64 1, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.2845, i64 1, i64 0 }, ptr %a73 call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic4165, label %ok4166 -panic4165: - call void @finch_panic(ptr @.str.2633, i64 1816, ptr @.str.2634) + br i1 %t76, label %panic4449, label %ok4450 +panic4449: + call void @finch_panic(ptr @.str.2846, i64 1941, ptr @.str.2847) unreachable -ok4166: +ok4450: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 19 store { ptr, i64, i64 } %t74, ptr %t77 - br label %endif4162 -endif4162: + br label %endif4446 +endif4446: %t78 = load ptr, ptr %a1 %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic4167, label %ok4168 -panic4167: - call void @finch_panic(ptr @.str.2635, i64 1818, ptr @.str.2636) + br i1 %t79, label %panic4451, label %ok4452 +panic4451: + call void @finch_panic(ptr @.str.2848, i64 1943, ptr @.str.2849) unreachable -ok4168: +ok4452: %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 0 %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic4169, label %ok4170 -panic4169: - call void @finch_panic(ptr @.str.2637, i64 1818, ptr @.str.2638) + br i1 %t82, label %panic4453, label %ok4454 +panic4453: + call void @finch_panic(ptr @.str.2850, i64 1943, ptr @.str.2851) unreachable -ok4170: +ok4454: %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 12 %t84 = getelementptr inbounds %S.gen.FnSig, ptr %t83, i32 0, i32 16 %t85 = load i64, ptr %t84 %t86 = load { ptr, i64, i64 }, ptr %t80 %t87 = extractvalue { ptr, i64, i64 } %t86, 1 %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range4171, label %inrange4172 -range4171: - call void @finch_panic_index(ptr @.str.2639, i64 1818, i64 %t85, i64 %t87) + br i1 %t88, label %range4455, label %inrange4456 +range4455: + call void @finch_panic_index(ptr @.str.2852, i64 1943, i64 %t85, i64 %t87) unreachable -inrange4172: +inrange4456: %t89 = extractvalue { ptr, i64, i64 } %t86, 0 %t90 = getelementptr inbounds %S.ast.Program, ptr %t89, i64 %t85 %t91 = getelementptr inbounds %S.ast.Program, ptr %t90, i32 0, i32 8 %t92 = load ptr, ptr %a1 %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic4173, label %ok4174 -panic4173: - call void @finch_panic(ptr @.str.2640, i64 1818, ptr @.str.2641) + br i1 %t93, label %panic4457, label %ok4458 +panic4457: + call void @finch_panic(ptr @.str.2853, i64 1943, ptr @.str.2854) unreachable -ok4174: +ok4458: %t94 = getelementptr inbounds %S.gen.Gen, ptr %t92, i32 0, i32 12 %t95 = getelementptr inbounds %S.gen.FnSig, ptr %t94, i32 0, i32 17 %t96 = load i64, ptr %t95 %t97 = load { ptr, i64, i64 }, ptr %t91 %t98 = extractvalue { ptr, i64, i64 } %t97, 1 %t99 = icmp uge i64 %t96, %t98 - br i1 %t99, label %range4175, label %inrange4176 -range4175: - call void @finch_panic_index(ptr @.str.2642, i64 1818, i64 %t96, i64 %t98) + br i1 %t99, label %range4459, label %inrange4460 +range4459: + call void @finch_panic_index(ptr @.str.2855, i64 1943, i64 %t96, i64 %t98) unreachable -inrange4176: +inrange4460: %t100 = extractvalue { ptr, i64, i64 } %t97, 0 %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t96 %t102 = load %S.ast.Node, ptr %t101 @@ -37616,11 +41422,11 @@ inrange4176: %t108 = load { ptr, i64, i64 }, ptr %a107 %t109 = load ptr, ptr %a1 %t110 = icmp eq ptr %t109, null - br i1 %t110, label %panic4177, label %ok4178 -panic4177: - call void @finch_panic(ptr @.str.2643, i64 1820, ptr @.str.2644) + br i1 %t110, label %panic4461, label %ok4462 +panic4461: + call void @finch_panic(ptr @.str.2856, i64 1945, ptr @.str.2857) unreachable -ok4178: +ok4462: %t111 = getelementptr inbounds %S.gen.Gen, ptr %t109, i32 0, i32 4 store { ptr, i64, i64 } %t108, ptr %a112 call void @finch.copy.arr_str(ptr %a113, ptr %a112) @@ -37629,11 +41435,11 @@ ok4178: %t115 = load { ptr, i64, i64 }, ptr %a107 %t116 = load ptr, ptr %a1 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic4179, label %ok4180 -panic4179: - call void @finch_panic(ptr @.str.2645, i64 1821, ptr @.str.2646) + br i1 %t117, label %panic4463, label %ok4464 +panic4463: + call void @finch_panic(ptr @.str.2858, i64 1946, ptr @.str.2859) unreachable -ok4180: +ok4464: %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 5 store { ptr, i64, i64 } %t115, ptr %a119 call void @finch.copy.arr_str(ptr %a120, ptr %a119) @@ -37641,52 +41447,52 @@ ok4180: store { ptr, i64, i64 } %t121, ptr %t118 %t122 = load ptr, ptr %a1 %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4181, label %ok4182 -panic4181: - call void @finch_panic(ptr @.str.2647, i64 1822, ptr @.str.2648) + br i1 %t123, label %panic4465, label %ok4466 +panic4465: + call void @finch_panic(ptr @.str.2860, i64 1947, ptr @.str.2861) unreachable -ok4182: +ok4466: %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 6 store i64 0, ptr %t124 %t125 = load ptr, ptr %a1 %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4183, label %ok4184 -panic4183: - call void @finch_panic(ptr @.str.2649, i64 1823, ptr @.str.2650) + br i1 %t126, label %panic4467, label %ok4468 +panic4467: + call void @finch_panic(ptr @.str.2862, i64 1948, ptr @.str.2863) unreachable -ok4184: +ok4468: %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 9 store i1 false, ptr %t127 %t128 = load ptr, ptr %a1 %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic4185, label %ok4186 -panic4185: - call void @finch_panic(ptr @.str.2651, i64 1824, ptr @.str.2652) + br i1 %t129, label %panic4469, label %ok4470 +panic4469: + call void @finch_panic(ptr @.str.2864, i64 1949, ptr @.str.2865) unreachable -ok4186: +ok4470: %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 23 store i64 0, ptr %t130 %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4187, label %ok4188 -panic4187: - call void @finch_panic(ptr @.str.2653, i64 1825, ptr @.str.2654) + br i1 %t132, label %panic4471, label %ok4472 +panic4471: + call void @finch_panic(ptr @.str.2866, i64 1950, ptr @.str.2867) unreachable -ok4188: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 32 +ok4472: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 34 store i64 -1, ptr %t133 store i64 -1, ptr %a134 %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic4189, label %ok4190 -panic4189: - call void @finch_panic(ptr @.str.2655, i64 1827, ptr @.str.2656) + br i1 %t136, label %panic4473, label %ok4474 +panic4473: + call void @finch_panic(ptr @.str.2868, i64 1952, ptr @.str.2869) unreachable -ok4190: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 26 +ok4474: + %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 28 %t138 = load i1, ptr %t137 - br i1 %t138, label %then4191, label %endif4193 -then4191: + br i1 %t138, label %then4475, label %endif4477 +then4475: %t139 = load ptr, ptr %a1 %t140 = load %S.ast.Node, ptr %a106 %t141 = call i64 @finch.gen.dbgSubprogram(ptr %t139, %S.ast.Node %t140) @@ -37694,64 +41500,64 @@ then4191: %t142 = load i64, ptr %a134 %t143 = load ptr, ptr %a1 %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic4194, label %ok4195 -panic4194: - call void @finch_panic(ptr @.str.2657, i64 1829, ptr @.str.2658) + br i1 %t144, label %panic4478, label %ok4479 +panic4478: + call void @finch_panic(ptr @.str.2870, i64 1954, ptr @.str.2871) unreachable -ok4195: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 32 +ok4479: + %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 34 store i64 %t142, ptr %t145 %t146 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 11 %t147 = load i64, ptr %t146 %t148 = load ptr, ptr %a1 %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4196, label %ok4197 -panic4196: - call void @finch_panic(ptr @.str.2659, i64 1830, ptr @.str.2660) + br i1 %t149, label %panic4480, label %ok4481 +panic4480: + call void @finch_panic(ptr @.str.2872, i64 1955, ptr @.str.2873) unreachable -ok4197: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 33 +ok4481: + %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 35 store i64 %t147, ptr %t150 %t151 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 12 %t152 = load i64, ptr %t151 %t153 = load ptr, ptr %a1 %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic4198, label %ok4199 -panic4198: - call void @finch_panic(ptr @.str.2661, i64 1831, ptr @.str.2662) + br i1 %t154, label %panic4482, label %ok4483 +panic4482: + call void @finch_panic(ptr @.str.2874, i64 1956, ptr @.str.2875) unreachable -ok4199: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 34 +ok4483: + %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 36 store i64 %t152, ptr %t155 - br label %endif4193 -endif4193: + br label %endif4477 +endif4477: %t156 = load ptr, ptr %a1 %t157 = icmp eq ptr %t156, null - br i1 %t157, label %panic4200, label %ok4201 -panic4200: - call void @finch_panic(ptr @.str.2663, i64 1833, ptr @.str.2664) + br i1 %t157, label %panic4484, label %ok4485 +panic4484: + call void @finch_panic(ptr @.str.2876, i64 1958, ptr @.str.2877) unreachable -ok4201: - %t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 40 +ok4485: + %t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 42 store i1 false, ptr %t158 %t159 = load ptr, ptr %a1 %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic4202, label %ok4203 -panic4202: - call void @finch_panic(ptr @.str.2665, i64 1834, ptr @.str.2666) + br i1 %t160, label %panic4486, label %ok4487 +panic4486: + call void @finch_panic(ptr @.str.2878, i64 1959, ptr @.str.2879) unreachable -ok4203: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 42 +ok4487: + %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 44 store i64 0, ptr %t161 store { ptr, i64, i64 } zeroinitializer, ptr %a162 %t163 = load { ptr, i64, i64 }, ptr %a162 %t164 = load ptr, ptr %a1 %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic4204, label %ok4205 -panic4204: - call void @finch_panic(ptr @.str.2667, i64 1836, ptr @.str.2668) + br i1 %t165, label %panic4488, label %ok4489 +panic4488: + call void @finch_panic(ptr @.str.2880, i64 1961, ptr @.str.2881) unreachable -ok4205: +ok4489: %t166 = getelementptr inbounds %S.gen.Gen, ptr %t164, i32 0, i32 10 store { ptr, i64, i64 } %t163, ptr %a167 call void @finch.copy.arr_S_gen_Scope(ptr %a168, ptr %a167) @@ -37762,42 +41568,42 @@ ok4205: store { ptr, i64, i64 } zeroinitializer, ptr %a171 %t172 = load ptr, ptr %a1 %t173 = icmp eq ptr %t172, null - br i1 %t173, label %panic4209, label %ok4210 -panic4209: - call void @finch_panic(ptr @.str.2669, i64 1839, ptr @.str.2670) + br i1 %t173, label %panic4493, label %ok4494 +panic4493: + call void @finch_panic(ptr @.str.2882, i64 1964, ptr @.str.2883) unreachable -ok4210: +ok4494: %t174 = getelementptr inbounds %S.gen.Gen, ptr %t172, i32 0, i32 12 %t175 = getelementptr inbounds %S.gen.FnSig, ptr %t174, i32 0, i32 2 %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 %t177 = load i64, ptr %t176 %t178 = icmp sgt i64 %t177, 0 - br i1 %t178, label %then4211, label %endif4213 -then4211: + br i1 %t178, label %then4495, label %endif4497 +then4495: %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1 %t180 = load i64, ptr %t179 %t181 = add i64 %t180, 1 call void @finch_arr_reserve(ptr %a171, i64 %t181, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t182 = load ptr, ptr %a171 %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t180 - store { ptr, i64, i64 } { ptr @.str.2671, i64 9, i64 0 }, ptr %t183 + store { ptr, i64, i64 } { ptr @.str.2884, i64 9, i64 0 }, ptr %t183 store i64 %t181, ptr %t179 - store { ptr, i64, i64 } { ptr @.str.2672, i64 6, i64 0 }, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.2885, i64 6, i64 0 }, ptr %a184 %t185 = load ptr, ptr %a1 %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic4214, label %ok4215 -panic4214: - call void @finch_panic(ptr @.str.2673, i64 1843, ptr @.str.2674) + br i1 %t186, label %panic4498, label %ok4499 +panic4498: + call void @finch_panic(ptr @.str.2886, i64 1968, ptr @.str.2887) unreachable -ok4215: +ok4499: %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 12 %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i32 0, i32 4 %t189 = load i1, ptr %t188 - br i1 %t189, label %then4216, label %endif4218 -then4216: - store { ptr, i64, i64 } { ptr @.str.2675, i64 4, i64 0 }, ptr %a184 - br label %endif4218 -endif4218: + br i1 %t189, label %then4500, label %endif4502 +then4500: + store { ptr, i64, i64 } { ptr @.str.2888, i64 4, i64 0 }, ptr %a184 + br label %endif4502 +endif4502: %t190 = load { ptr, i64, i64 }, ptr %a184 store { ptr, i64, i64 } %t190, ptr %a191 call void @finch_str_copy(ptr %a192, ptr %a191) @@ -37805,11 +41611,11 @@ endif4218: %t194 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t193, 0 %t195 = load ptr, ptr %a1 %t196 = icmp eq ptr %t195, null - br i1 %t196, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2676, i64 1846, ptr @.str.2677) + br i1 %t196, label %panic4503, label %ok4504 +panic4503: + call void @finch_panic(ptr @.str.2889, i64 1971, ptr @.str.2890) unreachable -ok4220: +ok4504: %t197 = getelementptr inbounds %S.gen.Gen, ptr %t195, i32 0, i32 12 %t198 = getelementptr inbounds %S.gen.FnSig, ptr %t197, i32 0, i32 2 %t199 = load { ptr, i64, i64 }, ptr %t198 @@ -37819,11 +41625,11 @@ ok4220: %t203 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t202, 2 %t204 = load ptr, ptr %a1 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4221, label %ok4222 -panic4221: - call void @finch_panic(ptr @.str.2678, i64 1846, ptr @.str.2679) + br i1 %t205, label %panic4505, label %ok4506 +panic4505: + call void @finch_panic(ptr @.str.2891, i64 1971, ptr @.str.2892) unreachable -ok4222: +ok4506: %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 12 %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 3 %t208 = load { ptr, i64, i64 }, ptr %t207 @@ -37834,31 +41640,31 @@ ok4222: store %S.ast.Type %t212, ptr %a213 %t214 = load ptr, ptr %a1 %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4223, label %ok4224 -panic4223: - call void @finch_panic(ptr @.str.2680, i64 1847, ptr @.str.2681) + br i1 %t215, label %panic4507, label %ok4508 +panic4507: + call void @finch_panic(ptr @.str.2893, i64 1972, ptr @.str.2894) unreachable -ok4224: +ok4508: %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 10 %t217 = load { ptr, i64, i64 }, ptr %t216 %t218 = extractvalue { ptr, i64, i64 } %t217, 1 %t219 = icmp uge i64 0, %t218 - br i1 %t219, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2682, i64 1847, i64 0, i64 %t218) + br i1 %t219, label %range4509, label %inrange4510 +range4509: + call void @finch_panic_index(ptr @.str.2895, i64 1972, i64 0, i64 %t218) unreachable -inrange4226: +inrange4510: %t220 = extractvalue { ptr, i64, i64 } %t217, 0 %t221 = getelementptr inbounds %S.gen.Scope, ptr %t220, i64 0 %t222 = getelementptr inbounds %S.gen.Scope, ptr %t221, i32 0, i32 0 %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1 - %t224 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.2683, i64 4, i64 0 }, 0 + %t224 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.2896, i64 4, i64 0 }, 0 %t225 = load %S.ast.Type, ptr %a213 store %S.ast.Type %t225, ptr %a226 call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) %t228 = load %S.ast.Type, ptr %a227 %t229 = insertvalue %S.gen.Var %t224, %S.ast.Type %t228, 1 - %t230 = insertvalue %S.gen.Var %t229, { ptr, i64, i64 } { ptr @.str.2684, i64 5, i64 0 }, 2 + %t230 = insertvalue %S.gen.Var %t229, { ptr, i64, i64 } { ptr @.str.2897, i64 5, i64 0 }, 2 %t231 = insertvalue %S.gen.Var %t230, i1 false, 3 %t232 = load i64, ptr %t223 %t233 = add i64 %t232, 1 @@ -37869,59 +41675,59 @@ inrange4226: store i64 %t233, ptr %t223 %t236 = load ptr, ptr %a1 %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4227, label %ok4228 -panic4227: - call void @finch_panic(ptr @.str.2685, i64 1848, ptr @.str.2686) + br i1 %t237, label %panic4511, label %ok4512 +panic4511: + call void @finch_panic(ptr @.str.2898, i64 1973, ptr @.str.2899) unreachable -ok4228: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 26 +ok4512: + %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 28 %t239 = load i1, ptr %t238 - br i1 %t239, label %then4229, label %endif4231 -then4229: + br i1 %t239, label %then4513, label %endif4515 +then4513: %t240 = load ptr, ptr %a1 %t241 = load %S.ast.Node, ptr %a106 %t242 = load %S.ast.Type, ptr %a213 - call void @finch.gen.dbgVariable(ptr %t240, %S.ast.Node %t241, { ptr, i64, i64 } { ptr @.str.2687, i64 4, i64 0 }, %S.ast.Type %t242, { ptr, i64, i64 } { ptr @.str.2688, i64 5, i64 0 }) - br label %endif4231 -endif4231: - br label %endif4213 -endif4213: + call void @finch.gen.dbgVariable(ptr %t240, %S.ast.Node %t241, { ptr, i64, i64 } { ptr @.str.2900, i64 4, i64 0 }, %S.ast.Type %t242, { ptr, i64, i64 } { ptr @.str.2901, i64 5, i64 0 }) + br label %endif4515 +endif4515: + br label %endif4497 +endif4497: %t243 = load ptr, ptr %a1 %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic4232, label %ok4233 -panic4232: - call void @finch_panic(ptr @.str.2689, i64 1853, ptr @.str.2690) + br i1 %t244, label %panic4516, label %ok4517 +panic4516: + call void @finch_panic(ptr @.str.2902, i64 1978, ptr @.str.2903) unreachable -ok4233: +ok4517: %t245 = getelementptr inbounds %S.gen.Gen, ptr %t243, i32 0, i32 12 %t246 = getelementptr inbounds %S.gen.FnSig, ptr %t245, i32 0, i32 13 %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 %t248 = load i64, ptr %t247 store i64 0, ptr %a249 - br label %for.cond4234 -for.cond4234: + br label %for.cond4518 +for.cond4518: %t250 = load i64, ptr %a249 %t251 = icmp slt i64 %t250, %t248 - br i1 %t251, label %for.body4235, label %for.end4237 -for.body4235: + br i1 %t251, label %for.body4519, label %for.end4521 +for.body4519: %t252 = load ptr, ptr %a1 %t253 = icmp eq ptr %t252, null - br i1 %t253, label %panic4238, label %ok4239 -panic4238: - call void @finch_panic(ptr @.str.2691, i64 1854, ptr @.str.2692) + br i1 %t253, label %panic4522, label %ok4523 +panic4522: + call void @finch_panic(ptr @.str.2904, i64 1979, ptr @.str.2905) unreachable -ok4239: +ok4523: %t254 = getelementptr inbounds %S.gen.Gen, ptr %t252, i32 0, i32 12 %t255 = getelementptr inbounds %S.gen.FnSig, ptr %t254, i32 0, i32 13 %t256 = load i64, ptr %a249 %t257 = load { ptr, i64, i64 }, ptr %t255 %t258 = extractvalue { ptr, i64, i64 } %t257, 1 %t259 = icmp uge i64 %t256, %t258 - br i1 %t259, label %range4240, label %inrange4241 -range4240: - call void @finch_panic_index(ptr @.str.2693, i64 1854, i64 %t256, i64 %t258) + br i1 %t259, label %range4524, label %inrange4525 +range4524: + call void @finch_panic_index(ptr @.str.2906, i64 1979, i64 %t256, i64 %t258) unreachable -inrange4241: +inrange4525: %t260 = extractvalue { ptr, i64, i64 } %t257, 0 %t261 = getelementptr inbounds %S.ast.Type, ptr %t260, i64 %t256 %t262 = load %S.ast.Type, ptr %t261 @@ -37934,7 +41740,7 @@ inrange4241: %t269 = load %S.ast.Type, ptr %a266 %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2694, i64 3, i64 0 }, ptr %a273 + store { ptr, i64, i64 } { ptr @.str.2907, i64 3, i64 0 }, ptr %a273 call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) %t274 = load { ptr, i64, i64 }, ptr %a271 %t275 = load i64, ptr %a249 @@ -37954,7 +41760,7 @@ inrange4241: %t286 = load i64, ptr %a249 call void @finch_str_from_int(ptr %a287, i64 %t286) %t288 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.2695, i64 2, i64 0 }, ptr %a290 + store { ptr, i64, i64 } { ptr @.str.2908, i64 2, i64 0 }, ptr %a290 store { ptr, i64, i64 } %t288, ptr %a291 call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291) %t292 = load { ptr, i64, i64 }, ptr %a289 @@ -37962,116 +41768,116 @@ inrange4241: %t294 = load ptr, ptr %a1 %t295 = load %S.ast.Type, ptr %a266 %t296 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t295) - br label %logic.from4242 -logic.from4242: - br i1 %t296, label %logic.rhs4243, label %logic.end4244 -logic.rhs4243: + br label %logic.from4526 +logic.from4526: + br i1 %t296, label %logic.rhs4527, label %logic.end4528 +logic.rhs4527: %t297 = load ptr, ptr %a1 %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4245, label %ok4246 -panic4245: - call void @finch_panic(ptr @.str.2696, i64 1857, ptr @.str.2697) + br i1 %t298, label %panic4529, label %ok4530 +panic4529: + call void @finch_panic(ptr @.str.2909, i64 1982, ptr @.str.2910) unreachable -ok4246: +ok4530: %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 12 %t300 = getelementptr inbounds %S.gen.FnSig, ptr %t299, i32 0, i32 15 %t301 = load i64, ptr %a249 %t302 = load { ptr, i64, i64 }, ptr %t300 %t303 = extractvalue { ptr, i64, i64 } %t302, 1 %t304 = icmp uge i64 %t301, %t303 - br i1 %t304, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2698, i64 1857, i64 %t301, i64 %t303) + br i1 %t304, label %range4531, label %inrange4532 +range4531: + call void @finch_panic_index(ptr @.str.2911, i64 1982, i64 %t301, i64 %t303) unreachable -inrange4248: +inrange4532: %t305 = extractvalue { ptr, i64, i64 } %t302, 0 %t306 = getelementptr inbounds i1, ptr %t305, i64 %t301 %t307 = load i1, ptr %t306 %t308 = xor i1 %t307, true - br label %logic.rend4249 -logic.rend4249: - br label %logic.end4244 -logic.end4244: - %t309 = phi i1 [ false, %logic.from4242 ], [ %t308, %logic.rend4249 ] - br i1 %t309, label %then4250, label %endif4252 -then4250: + br label %logic.rend4533 +logic.rend4533: + br label %logic.end4528 +logic.end4528: + %t309 = phi i1 [ false, %logic.from4526 ], [ %t308, %logic.rend4533 ] + br i1 %t309, label %then4534, label %endif4536 +then4534: %t310 = load ptr, ptr %a1 %t311 = load { ptr, i64, i64 }, ptr %a293 %t312 = load %S.ast.Type, ptr %a266 %t313 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t310, { ptr, i64, i64 } %t311, %S.ast.Type %t312) store { ptr, i64, i64 } %t313, ptr %a293 - br label %endif4252 -endif4252: + br label %endif4536 +endif4536: %t314 = load i64, ptr %a249 %t315 = add i64 %t314, 1 %t316 = load ptr, ptr %a1 %t317 = icmp eq ptr %t316, null - br i1 %t317, label %panic4253, label %ok4254 -panic4253: - call void @finch_panic(ptr @.str.2699, i64 1860, ptr @.str.2700) + br i1 %t317, label %panic4537, label %ok4538 +panic4537: + call void @finch_panic(ptr @.str.2912, i64 1985, ptr @.str.2913) unreachable -ok4254: - %t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 35 +ok4538: + %t318 = getelementptr inbounds %S.gen.Gen, ptr %t316, i32 0, i32 37 store i64 %t315, ptr %t318 %t319 = load ptr, ptr %a1 %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic4255, label %ok4256 -panic4255: - call void @finch_panic(ptr @.str.2701, i64 1861, ptr @.str.2702) + br i1 %t320, label %panic4539, label %ok4540 +panic4539: + call void @finch_panic(ptr @.str.2914, i64 1986, ptr @.str.2915) unreachable -ok4256: +ok4540: %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 12 %t322 = getelementptr inbounds %S.gen.FnSig, ptr %t321, i32 0, i32 2 %t323 = getelementptr inbounds { ptr, i64, i64 }, ptr %t322, i32 0, i32 1 %t324 = load i64, ptr %t323 %t325 = icmp sgt i64 %t324, 0 - br i1 %t325, label %then4257, label %endif4259 -then4257: + br i1 %t325, label %then4541, label %endif4543 +then4541: %t326 = load i64, ptr %a249 %t327 = add i64 %t326, 2 %t328 = load ptr, ptr %a1 %t329 = icmp eq ptr %t328, null - br i1 %t329, label %panic4260, label %ok4261 -panic4260: - call void @finch_panic(ptr @.str.2703, i64 1862, ptr @.str.2704) + br i1 %t329, label %panic4544, label %ok4545 +panic4544: + call void @finch_panic(ptr @.str.2916, i64 1987, ptr @.str.2917) unreachable -ok4261: - %t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 35 +ok4545: + %t330 = getelementptr inbounds %S.gen.Gen, ptr %t328, i32 0, i32 37 store i64 %t327, ptr %t330 - br label %endif4259 -endif4259: + br label %endif4543 +endif4543: %t331 = load ptr, ptr %a1 %t332 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9 %t333 = load i64, ptr %a249 %t334 = load { ptr, i64, i64 }, ptr %t332 %t335 = extractvalue { ptr, i64, i64 } %t334, 1 %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4262, label %inrange4263 -range4262: - call void @finch_panic_index(ptr @.str.2705, i64 1864, i64 %t333, i64 %t335) + br i1 %t336, label %range4546, label %inrange4547 +range4546: + call void @finch_panic_index(ptr @.str.2918, i64 1989, i64 %t333, i64 %t335) unreachable -inrange4263: +inrange4547: %t337 = extractvalue { ptr, i64, i64 } %t334, 0 %t338 = getelementptr inbounds %S.ast.Node, ptr %t337, i64 %t333 %t339 = load %S.ast.Node, ptr %t338 %t340 = load ptr, ptr %a1 %t341 = icmp eq ptr %t340, null - br i1 %t341, label %panic4264, label %ok4265 -panic4264: - call void @finch_panic(ptr @.str.2706, i64 1864, ptr @.str.2707) + br i1 %t341, label %panic4548, label %ok4549 +panic4548: + call void @finch_panic(ptr @.str.2919, i64 1989, ptr @.str.2920) unreachable -ok4265: +ok4549: %t342 = getelementptr inbounds %S.gen.Gen, ptr %t340, i32 0, i32 12 %t343 = getelementptr inbounds %S.gen.FnSig, ptr %t342, i32 0, i32 14 %t344 = load i64, ptr %a249 %t345 = load { ptr, i64, i64 }, ptr %t343 %t346 = extractvalue { ptr, i64, i64 } %t345, 1 %t347 = icmp uge i64 %t344, %t346 - br i1 %t347, label %range4266, label %inrange4267 -range4266: - call void @finch_panic_index(ptr @.str.2708, i64 1864, i64 %t344, i64 %t346) + br i1 %t347, label %range4550, label %inrange4551 +range4550: + call void @finch_panic_index(ptr @.str.2921, i64 1989, i64 %t344, i64 %t346) unreachable -inrange4267: +inrange4551: %t348 = extractvalue { ptr, i64, i64 } %t345, 0 %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i64 %t344 %t350 = load { ptr, i64, i64 }, ptr %t349 @@ -38080,20 +41886,20 @@ inrange4267: %t353 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t331, %S.ast.Node %t339, { ptr, i64, i64 } %t350, %S.ast.Type %t351, { ptr, i64, i64 } %t352, i1 false) %t354 = load ptr, ptr %a1 %t355 = icmp eq ptr %t354, null - br i1 %t355, label %panic4268, label %ok4269 -panic4268: - call void @finch_panic(ptr @.str.2709, i64 1865, ptr @.str.2710) + br i1 %t355, label %panic4552, label %ok4553 +panic4552: + call void @finch_panic(ptr @.str.2922, i64 1990, ptr @.str.2923) unreachable -ok4269: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 35 +ok4553: + %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 37 store i64 0, ptr %t356 - br label %for.step4236 -for.step4236: + br label %for.step4520 +for.step4520: %t357 = load i64, ptr %a249 %t358 = add i64 %t357, 1 store i64 %t358, ptr %a249 - br label %for.cond4234 -for.end4237: + br label %for.cond4518 +for.end4521: %t359 = load ptr, ptr %a1 %t360 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9 %t361 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 9 @@ -38103,63 +41909,63 @@ for.end4237: %t365 = load { ptr, i64, i64 }, ptr %t360 %t366 = extractvalue { ptr, i64, i64 } %t365, 1 %t367 = icmp uge i64 %t364, %t366 - br i1 %t367, label %range4270, label %inrange4271 -range4270: - call void @finch_panic_index(ptr @.str.2711, i64 1867, i64 %t364, i64 %t366) + br i1 %t367, label %range4554, label %inrange4555 +range4554: + call void @finch_panic_index(ptr @.str.2924, i64 1992, i64 %t364, i64 %t366) unreachable -inrange4271: +inrange4555: %t368 = extractvalue { ptr, i64, i64 } %t365, 0 %t369 = getelementptr inbounds %S.ast.Node, ptr %t368, i64 %t364 %t370 = load %S.ast.Node, ptr %t369 call void @finch.gen.block(ptr %t359, %S.ast.Node %t370, i1 false) %t371 = load ptr, ptr %a1 %t372 = icmp eq ptr %t371, null - br i1 %t372, label %panic4272, label %ok4273 -panic4272: - call void @finch_panic(ptr @.str.2712, i64 1868, ptr @.str.2713) + br i1 %t372, label %panic4556, label %ok4557 +panic4556: + call void @finch_panic(ptr @.str.2925, i64 1993, ptr @.str.2926) unreachable -ok4273: +ok4557: %t373 = getelementptr inbounds %S.gen.Gen, ptr %t371, i32 0, i32 9 %t374 = load i1, ptr %t373 %t375 = xor i1 %t374, true - br i1 %t375, label %then4274, label %endif4276 -then4274: + br i1 %t375, label %then4558, label %endif4560 +then4558: %t376 = load ptr, ptr %a1 %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic4277, label %ok4278 -panic4277: - call void @finch_panic(ptr @.str.2714, i64 1869, ptr @.str.2715) + br i1 %t377, label %panic4561, label %ok4562 +panic4561: + call void @finch_panic(ptr @.str.2927, i64 1994, ptr @.str.2928) unreachable -ok4278: +ok4562: %t378 = getelementptr inbounds %S.gen.Gen, ptr %t376, i32 0, i32 12 %t379 = getelementptr inbounds %S.gen.FnSig, ptr %t378, i32 0, i32 12 %t380 = getelementptr inbounds %S.ast.Type, ptr %t379, i32 0, i32 0 %t381 = load { ptr, i64, i64 }, ptr %t380 store { ptr, i64, i64 } %t381, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.2716, i64 4, i64 0 }, ptr %a383 + store { ptr, i64, i64 } { ptr @.str.2929, i64 4, i64 0 }, ptr %a383 %t384 = call i32 @finch_str_eq(ptr %a382, ptr %a383) %t385 = icmp eq i32 %t384, 0 - br i1 %t385, label %then4279, label %endif4281 -then4279: + br i1 %t385, label %then4563, label %endif4565 +then4563: %t386 = load ptr, ptr %a1 %t387 = load %S.ast.Node, ptr %a106 %t388 = getelementptr inbounds %S.ast.Node, ptr %a106, i32 0, i32 1 %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } { ptr @.str.2717, i64 10, i64 0 }, ptr %a391 + store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a391 store { ptr, i64, i64 } %t389, ptr %a392 call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) %t393 = load { ptr, i64, i64 }, ptr %a390 store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.2718, i64 38, i64 0 }, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.2931, i64 38, i64 0 }, ptr %a396 call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) %t397 = load { ptr, i64, i64 }, ptr %a394 %t398 = load ptr, ptr %a1 %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4282, label %ok4283 -panic4282: - call void @finch_panic(ptr @.str.2719, i64 1870, ptr @.str.2720) + br i1 %t399, label %panic4566, label %ok4567 +panic4566: + call void @finch_panic(ptr @.str.2932, i64 1995, ptr @.str.2933) unreachable -ok4283: +ok4567: %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 12 %t401 = getelementptr inbounds %S.gen.FnSig, ptr %t400, i32 0, i32 12 %t402 = load %S.ast.Type, ptr %t401 @@ -38169,110 +41975,110 @@ ok4283: call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) %t407 = load { ptr, i64, i64 }, ptr %a404 call void @finch.gen.fail(ptr %t386, %S.ast.Node %t387, { ptr, i64, i64 } %t407) - br label %endif4281 -endif4281: + br label %endif4565 +endif4565: %t408 = load ptr, ptr %a1 call void @finch.gen.runDefers(ptr %t408, i64 0) %t409 = load ptr, ptr %a1 %t410 = icmp eq ptr %t409, null - br i1 %t410, label %panic4284, label %ok4285 -panic4284: - call void @finch_panic(ptr @.str.2721, i64 1873, ptr @.str.2722) + br i1 %t410, label %panic4568, label %ok4569 +panic4568: + call void @finch_panic(ptr @.str.2934, i64 1998, ptr @.str.2935) unreachable -ok4285: +ok4569: %t411 = getelementptr inbounds %S.gen.Gen, ptr %t409, i32 0, i32 12 %t412 = getelementptr inbounds %S.gen.FnSig, ptr %t411, i32 0, i32 9 %t413 = load i1, ptr %t412 - br i1 %t413, label %then4286, label %else4287 -then4286: + br i1 %t413, label %then4570, label %else4571 +then4570: %t414 = load ptr, ptr %a1 %t415 = load ptr, ptr %a1 %t416 = load ptr, ptr %a1 %t417 = icmp eq ptr %t416, null - br i1 %t417, label %panic4289, label %ok4290 -panic4289: - call void @finch_panic(ptr @.str.2724, i64 1874, ptr @.str.2725) + br i1 %t417, label %panic4573, label %ok4574 +panic4573: + call void @finch_panic(ptr @.str.2937, i64 1999, ptr @.str.2938) unreachable -ok4290: +ok4574: %t418 = getelementptr inbounds %S.gen.Gen, ptr %t416, i32 0, i32 12 %t419 = load %S.gen.FnSig, ptr %t418 %t420 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t415, %S.gen.FnSig %t419) - store { ptr, i64, i64 } { ptr @.str.2723, i64 4, i64 0 }, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.2936, i64 4, i64 0 }, ptr %a422 store { ptr, i64, i64 } %t420, ptr %a423 call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) %t424 = load { ptr, i64, i64 }, ptr %a421 store { ptr, i64, i64 } %t424, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.2726, i64 53, i64 0 }, ptr %a427 + store { ptr, i64, i64 } { ptr @.str.2939, i64 53, i64 0 }, ptr %a427 call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) %t428 = load { ptr, i64, i64 }, ptr %a425 call void @finch.gen.emit(ptr %t414, { ptr, i64, i64 } %t428) - br label %endif4288 -else4287: + br label %endif4572 +else4571: %t429 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.2727, i64 8, i64 0 }) - br label %endif4288 -endif4288: - br label %endif4276 -endif4276: - store { ptr, i64, i64 } { ptr @.str.2728, i64 0, i64 0 }, ptr %a430 + call void @finch.gen.emit(ptr %t429, { ptr, i64, i64 } { ptr @.str.2940, i64 8, i64 0 }) + br label %endif4572 +endif4572: + br label %endif4560 +endif4560: + store { ptr, i64, i64 } { ptr @.str.2941, i64 0, i64 0 }, ptr %a430 %t431 = load i64, ptr %a134 %t432 = icmp sge i64 %t431, 0 - br i1 %t432, label %then4291, label %endif4293 -then4291: + br i1 %t432, label %then4575, label %endif4577 +then4575: %t433 = load i64, ptr %a134 call void @finch_str_from_int(ptr %a434, i64 %t433) %t435 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } { ptr @.str.2729, i64 7, i64 0 }, ptr %a437 + store { ptr, i64, i64 } { ptr @.str.2942, i64 7, i64 0 }, ptr %a437 store { ptr, i64, i64 } %t435, ptr %a438 call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) %t439 = load { ptr, i64, i64 }, ptr %a436 store { ptr, i64, i64 } %t439, ptr %a430 - br label %endif4293 -endif4293: + br label %endif4577 +endif4577: %t440 = load ptr, ptr %a1 %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic4294, label %ok4295 -panic4294: - call void @finch_panic(ptr @.str.2730, i64 1883, ptr @.str.2731) + br i1 %t441, label %panic4578, label %ok4579 +panic4578: + call void @finch_panic(ptr @.str.2943, i64 2008, ptr @.str.2944) unreachable -ok4295: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 32 +ok4579: + %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 34 store i64 -1, ptr %t442 %t443 = load ptr, ptr %a1 %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4296, label %ok4297 -panic4296: - call void @finch_panic(ptr @.str.2732, i64 1884, ptr @.str.2733) + br i1 %t444, label %panic4580, label %ok4581 +panic4580: + call void @finch_panic(ptr @.str.2945, i64 2009, ptr @.str.2946) unreachable -ok4297: +ok4581: %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 3 %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i32 0, i32 1 %t447 = load ptr, ptr %a1 %t448 = load ptr, ptr %a1 %t449 = icmp eq ptr %t448, null - br i1 %t449, label %panic4298, label %ok4299 -panic4298: - call void @finch_panic(ptr @.str.2735, i64 1884, ptr @.str.2736) + br i1 %t449, label %panic4582, label %ok4583 +panic4582: + call void @finch_panic(ptr @.str.2948, i64 2009, ptr @.str.2949) unreachable -ok4299: +ok4583: %t450 = getelementptr inbounds %S.gen.Gen, ptr %t448, i32 0, i32 12 %t451 = load %S.gen.FnSig, ptr %t450 %t452 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t447, %S.gen.FnSig %t451) - store { ptr, i64, i64 } { ptr @.str.2734, i64 16, i64 0 }, ptr %a454 + store { ptr, i64, i64 } { ptr @.str.2947, i64 16, i64 0 }, ptr %a454 store { ptr, i64, i64 } %t452, ptr %a455 call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) %t456 = load { ptr, i64, i64 }, ptr %a453 store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.2737, i64 1, i64 0 }, ptr %a459 + store { ptr, i64, i64 } { ptr @.str.2950, i64 1, i64 0 }, ptr %a459 call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) %t460 = load { ptr, i64, i64 }, ptr %a457 %t461 = load ptr, ptr %a1 %t462 = icmp eq ptr %t461, null - br i1 %t462, label %panic4300, label %ok4301 -panic4300: - call void @finch_panic(ptr @.str.2738, i64 1884, ptr @.str.2739) + br i1 %t462, label %panic4584, label %ok4585 +panic4584: + call void @finch_panic(ptr @.str.2951, i64 2009, ptr @.str.2952) unreachable -ok4301: +ok4585: %t463 = getelementptr inbounds %S.gen.Gen, ptr %t461, i32 0, i32 12 %t464 = getelementptr inbounds %S.gen.FnSig, ptr %t463, i32 0, i32 11 %t465 = load { ptr, i64, i64 }, ptr %t464 @@ -38281,11 +42087,11 @@ ok4301: call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) %t469 = load { ptr, i64, i64 }, ptr %a466 store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.2740, i64 1, i64 0 }, ptr %a472 + store { ptr, i64, i64 } { ptr @.str.2953, i64 1, i64 0 }, ptr %a472 call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) %t473 = load { ptr, i64, i64 }, ptr %a470 %t474 = getelementptr inbounds { ptr, i64, i64 }, ptr %a171, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2741, i64 2, i64 0 }, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.2954, i64 2, i64 0 }, ptr %a475 call void @finch_str_join(ptr %a476, ptr %a171, ptr %a475) %t477 = load { ptr, i64, i64 }, ptr %a476 store { ptr, i64, i64 } %t473, ptr %a479 @@ -38293,7 +42099,7 @@ ok4301: call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) %t481 = load { ptr, i64, i64 }, ptr %a478 store { ptr, i64, i64 } %t481, ptr %a483 - store { ptr, i64, i64 } { ptr @.str.2742, i64 1, i64 0 }, ptr %a484 + store { ptr, i64, i64 } { ptr @.str.2955, i64 1, i64 0 }, ptr %a484 call void @finch_str_concat(ptr %a482, ptr %a483, ptr %a484) %t485 = load { ptr, i64, i64 }, ptr %a482 %t486 = load { ptr, i64, i64 }, ptr %a430 @@ -38302,19 +42108,19 @@ ok4301: call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) %t490 = load { ptr, i64, i64 }, ptr %a487 store { ptr, i64, i64 } %t490, ptr %a492 - store { ptr, i64, i64 } { ptr @.str.2743, i64 10, i64 0 }, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.2956, i64 10, i64 0 }, ptr %a493 call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493) %t494 = load { ptr, i64, i64 }, ptr %a491 %t495 = load ptr, ptr %a1 %t496 = icmp eq ptr %t495, null - br i1 %t496, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2744, i64 1885, ptr @.str.2745) + br i1 %t496, label %panic4586, label %ok4587 +panic4586: + call void @finch_panic(ptr @.str.2957, i64 2010, ptr @.str.2958) unreachable -ok4303: +ok4587: %t497 = getelementptr inbounds %S.gen.Gen, ptr %t495, i32 0, i32 5 %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2746, i64 1, i64 0 }, ptr %a499 + store { ptr, i64, i64 } { ptr @.str.2959, i64 1, i64 0 }, ptr %a499 call void @finch_str_join(ptr %a500, ptr %t497, ptr %a499) %t501 = load { ptr, i64, i64 }, ptr %a500 store { ptr, i64, i64 } %t494, ptr %a503 @@ -38322,19 +42128,19 @@ ok4303: call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) %t505 = load { ptr, i64, i64 }, ptr %a502 store { ptr, i64, i64 } %t505, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.2747, i64 1, i64 0 }, ptr %a508 + store { ptr, i64, i64 } { ptr @.str.2960, i64 1, i64 0 }, ptr %a508 call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) %t509 = load { ptr, i64, i64 }, ptr %a506 %t510 = load ptr, ptr %a1 %t511 = icmp eq ptr %t510, null - br i1 %t511, label %panic4304, label %ok4305 -panic4304: - call void @finch_panic(ptr @.str.2748, i64 1885, ptr @.str.2749) + br i1 %t511, label %panic4588, label %ok4589 +panic4588: + call void @finch_panic(ptr @.str.2961, i64 2010, ptr @.str.2962) unreachable -ok4305: +ok4589: %t512 = getelementptr inbounds %S.gen.Gen, ptr %t510, i32 0, i32 4 %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2750, i64 1, i64 0 }, ptr %a514 + store { ptr, i64, i64 } { ptr @.str.2963, i64 1, i64 0 }, ptr %a514 call void @finch_str_join(ptr %a515, ptr %t512, ptr %a514) %t516 = load { ptr, i64, i64 }, ptr %a515 store { ptr, i64, i64 } %t509, ptr %a518 @@ -38342,7 +42148,7 @@ ok4305: call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519) %t520 = load { ptr, i64, i64 }, ptr %a517 store { ptr, i64, i64 } %t520, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.2751, i64 3, i64 0 }, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.2964, i64 3, i64 0 }, ptr %a523 call void @finch_str_concat(ptr %a521, ptr %a522, ptr %a523) %t524 = load { ptr, i64, i64 }, ptr %a521 %t525 = load i64, ptr %t446 @@ -38366,59 +42172,59 @@ entry: store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 %t4 = load i1, ptr %a3 - br i1 %t4, label %then4306, label %endif4308 -then4306: + br i1 %t4, label %then4590, label %endif4592 +then4590: %t5 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t5) - br label %endif4308 -endif4308: + br label %endif4592 +endif4592: %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 store i64 0, ptr %a7 - br label %each.cond4309 -each.cond4309: + br label %each.cond4593 +each.cond4593: %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 %t9 = load i64, ptr %t8 %t10 = load i64, ptr %a7 %t11 = icmp slt i64 %t10, %t9 - br i1 %t11, label %each.body4310, label %each.end4312 -each.body4310: + br i1 %t11, label %each.body4594, label %each.end4596 +each.body4594: %t12 = load ptr, ptr %t6 %t13 = getelementptr inbounds %S.ast.Node, ptr %t12, i64 %t10 %t14 = load %S.ast.Node, ptr %t13 store %S.ast.Node %t14, ptr %a15 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic4313, label %ok4314 -panic4313: - call void @finch_panic(ptr @.str.2752, i64 1895, ptr @.str.2753) + br i1 %t17, label %panic4597, label %ok4598 +panic4597: + call void @finch_panic(ptr @.str.2965, i64 2020, ptr @.str.2966) unreachable -ok4314: +ok4598: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 %t19 = load i1, ptr %t18 - br i1 %t19, label %then4315, label %endif4317 -then4315: + br i1 %t19, label %then4599, label %endif4601 +then4599: %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a15 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } { ptr @.str.2754, i64 66, i64 0 }) - br label %endif4317 -endif4317: + call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } { ptr @.str.2967, i64 66, i64 0 }) + br label %endif4601 +endif4601: %t22 = load ptr, ptr %a1 %t23 = load %S.ast.Node, ptr %a15 call void @finch.gen.stmt(ptr %t22, %S.ast.Node %t23) - br label %each.step4311 -each.step4311: + br label %each.step4595 +each.step4595: %t24 = load i64, ptr %a7 %t25 = add i64 %t24, 1 store i64 %t25, ptr %a7 - br label %each.cond4309 -each.end4312: + br label %each.cond4593 +each.end4596: %t26 = load i1, ptr %a3 - br i1 %t26, label %then4318, label %endif4320 -then4318: + br i1 %t26, label %then4602, label %endif4604 +then4602: %t27 = load ptr, ptr %a1 call void @finch.gen.endScope(ptr %t27) - br label %endif4320 -endif4320: + br label %endif4604 +endif4604: ret void } @@ -38494,23 +42300,23 @@ entry: %t4 = load i64, ptr %t3 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2755, i64 1906, ptr @.str.2756) + br i1 %t6, label %panic4605, label %ok4606 +panic4605: + call void @finch_panic(ptr @.str.2968, i64 2031, ptr @.str.2969) unreachable -ok4322: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 33 +ok4606: + %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 35 store i64 %t4, ptr %t7 %t8 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 %t9 = load i64, ptr %t8 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic4323, label %ok4324 -panic4323: - call void @finch_panic(ptr @.str.2757, i64 1907, ptr @.str.2758) + br i1 %t11, label %panic4607, label %ok4608 +panic4607: + call void @finch_panic(ptr @.str.2970, i64 2032, ptr @.str.2971) unreachable -ok4324: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 34 +ok4608: + %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 36 store i64 %t9, ptr %t12 %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t14 = load { ptr, i64, i64 }, ptr %t13 @@ -38520,203 +42326,203 @@ ok4324: store { ptr, i64, i64 } %t17, ptr %a18 %t19 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.2759, i64 5, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.2972, i64 5, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then4325, label %else4326 -then4325: + br i1 %t23, label %then4609, label %else4610 +then4609: %t24 = load ptr, ptr %a1 %t25 = load %S.ast.Node, ptr %a2 call void @finch.gen.block(ptr %t24, %S.ast.Node %t25, i1 true) - br label %endif4327 -else4326: + br label %endif4611 +else4610: %t26 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2760, i64 4, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.2973, i64 4, i64 0 }, ptr %a28 %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) %t30 = icmp ne i32 %t29, 0 - br i1 %t30, label %then4328, label %else4329 -then4328: + br i1 %t30, label %then4612, label %else4613 +then4612: %t31 = load ptr, ptr %a1 %t32 = load %S.ast.Node, ptr %a2 call void @finch.gen.declStmt(ptr %t31, %S.ast.Node %t32) - br label %endif4330 -else4329: + br label %endif4614 +else4613: %t33 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.2761, i64 6, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.2974, i64 6, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then4331, label %else4332 -then4331: + br i1 %t37, label %then4615, label %else4616 +then4615: %t38 = load ptr, ptr %a1 %t39 = load %S.ast.Node, ptr %a2 call void @finch.gen.assignStmt(ptr %t38, %S.ast.Node %t39) - br label %endif4333 -else4332: + br label %endif4617 +else4616: %t40 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2762, i64 4, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.2975, i64 4, i64 0 }, ptr %a42 %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then4334, label %else4335 -then4334: + br i1 %t44, label %then4618, label %else4619 +then4618: %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t46 = load { ptr, i64, i64 }, ptr %t45 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 0, %t47 - br i1 %t48, label %range4337, label %inrange4338 -range4337: - call void @finch_panic_index(ptr @.str.2763, i64 1916, i64 0, i64 %t47) + br i1 %t48, label %range4621, label %inrange4622 +range4621: + call void @finch_panic_index(ptr @.str.2976, i64 2041, i64 0, i64 %t47) unreachable -inrange4338: +inrange4622: %t49 = extractvalue { ptr, i64, i64 } %t46, 0 %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 0 %t51 = getelementptr inbounds %S.ast.Node, ptr %t50, i32 0, i32 0 %t52 = load { ptr, i64, i64 }, ptr %t51 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2764, i64 2, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.2977, i64 2, i64 0 }, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then4339, label %else4340 -then4339: + br i1 %t56, label %then4623, label %else4624 +then4623: %t57 = load ptr, ptr %a1 %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t59 = load { ptr, i64, i64 }, ptr %t58 %t60 = extractvalue { ptr, i64, i64 } %t59, 1 %t61 = icmp uge i64 0, %t60 - br i1 %t61, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2765, i64 1917, i64 0, i64 %t60) + br i1 %t61, label %range4626, label %inrange4627 +range4626: + call void @finch_panic_index(ptr @.str.2978, i64 2042, i64 0, i64 %t60) unreachable -inrange4343: +inrange4627: %t62 = extractvalue { ptr, i64, i64 } %t59, 0 %t63 = getelementptr inbounds %S.ast.Node, ptr %t62, i64 0 %t64 = load %S.ast.Node, ptr %t63 %t65 = call %S.gen.Val @finch.gen.orElse(ptr %t57, %S.ast.Node %t64, i1 true) - br label %endif4341 -else4340: + br label %endif4625 +else4624: %t66 = load ptr, ptr %a1 %t67 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t68 = load { ptr, i64, i64 }, ptr %t67 %t69 = extractvalue { ptr, i64, i64 } %t68, 1 %t70 = icmp uge i64 0, %t69 - br i1 %t70, label %range4344, label %inrange4345 -range4344: - call void @finch_panic_index(ptr @.str.2766, i64 1919, i64 0, i64 %t69) + br i1 %t70, label %range4628, label %inrange4629 +range4628: + call void @finch_panic_index(ptr @.str.2979, i64 2044, i64 0, i64 %t69) unreachable -inrange4345: +inrange4629: %t71 = extractvalue { ptr, i64, i64 } %t68, 0 %t72 = getelementptr inbounds %S.ast.Node, ptr %t71, i64 0 %t73 = load %S.ast.Node, ptr %t72 %t74 = call %S.gen.Val @finch.gen.expr(ptr %t66, %S.ast.Node %t73) - br label %endif4341 -endif4341: - br label %endif4336 -else4335: + br label %endif4625 +endif4625: + br label %endif4620 +else4619: %t75 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2767, i64 5, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.2980, i64 5, i64 0 }, ptr %a77 %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) %t79 = icmp ne i32 %t78, 0 - br i1 %t79, label %then4346, label %else4347 -then4346: + br i1 %t79, label %then4630, label %else4631 +then4630: %t80 = load ptr, ptr %a1 %t81 = load %S.ast.Node, ptr %a2 %t82 = call %S.gen.Val @finch.gen.matchGen(ptr %t80, %S.ast.Node %t81, i1 false) - br label %endif4348 -else4347: + br label %endif4632 +else4631: %t83 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.2768, i64 2, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.2981, i64 2, i64 0 }, ptr %a85 %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) %t87 = icmp ne i32 %t86, 0 - br i1 %t87, label %then4349, label %else4350 -then4349: + br i1 %t87, label %then4633, label %else4634 +then4633: %t88 = load ptr, ptr %a1 %t89 = load %S.ast.Node, ptr %a2 call void @finch.gen.ifStmt(ptr %t88, %S.ast.Node %t89) - br label %endif4351 -else4350: + br label %endif4635 +else4634: %t90 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2769, i64 5, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.2982, i64 5, i64 0 }, ptr %a92 %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then4352, label %else4353 -then4352: + br i1 %t94, label %then4636, label %else4637 +then4636: %t95 = load ptr, ptr %a1 %t96 = load %S.ast.Node, ptr %a2 call void @finch.gen.whileStmt(ptr %t95, %S.ast.Node %t96) - br label %endif4354 -else4353: + br label %endif4638 +else4637: %t97 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.2770, i64 3, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.2983, i64 3, i64 0 }, ptr %a99 %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) %t101 = icmp ne i32 %t100, 0 - br i1 %t101, label %then4355, label %else4356 -then4355: + br i1 %t101, label %then4639, label %else4640 +then4639: %t102 = load ptr, ptr %a1 %t103 = load %S.ast.Node, ptr %a2 call void @finch.gen.forStmt(ptr %t102, %S.ast.Node %t103) - br label %endif4357 -else4356: + br label %endif4641 +else4640: %t104 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t104, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2771, i64 4, i64 0 }, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.2984, i64 4, i64 0 }, ptr %a106 %t107 = call i32 @finch_str_eq(ptr %a105, ptr %a106) %t108 = icmp ne i32 %t107, 0 - br i1 %t108, label %then4358, label %else4359 -then4358: + br i1 %t108, label %then4642, label %else4643 +then4642: %t109 = load ptr, ptr %a1 %t110 = load %S.ast.Node, ptr %a2 call void @finch.gen.eachStmt(ptr %t109, %S.ast.Node %t110) - br label %endif4360 -else4359: + br label %endif4644 +else4643: %t111 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.2772, i64 6, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.2985, i64 6, i64 0 }, ptr %a113 %t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113) %t115 = icmp ne i32 %t114, 0 - br i1 %t115, label %then4361, label %else4362 -then4361: + br i1 %t115, label %then4645, label %else4646 +then4645: %t116 = load ptr, ptr %a1 %t117 = load %S.ast.Node, ptr %a2 call void @finch.gen.returnStmt(ptr %t116, %S.ast.Node %t117) - br label %endif4363 -else4362: + br label %endif4647 +else4646: %t118 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.2773, i64 5, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.2986, i64 5, i64 0 }, ptr %a120 %t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120) %t122 = icmp ne i32 %t121, 0 - br i1 %t122, label %then4364, label %else4365 -then4364: + br i1 %t122, label %then4648, label %else4649 +then4648: %t123 = load ptr, ptr %a1 %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4367, label %ok4368 -panic4367: - call void @finch_panic(ptr @.str.2774, i64 1934, ptr @.str.2775) + br i1 %t124, label %panic4651, label %ok4652 +panic4651: + call void @finch_panic(ptr @.str.2987, i64 2059, ptr @.str.2988) unreachable -ok4368: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 42 +ok4652: + %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 44 %t126 = load i64, ptr %t125 %t127 = icmp sgt i64 %t126, 0 - br i1 %t127, label %then4369, label %endif4371 -then4369: + br i1 %t127, label %then4653, label %endif4655 +then4653: %t128 = load ptr, ptr %a1 %t129 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t128, %S.ast.Node %t129, { ptr, i64, i64 } { ptr @.str.2776, i64 33, i64 0 }) - br label %endif4371 -endif4371: + call void @finch.gen.fail(ptr %t128, %S.ast.Node %t129, { ptr, i64, i64 } { ptr @.str.2989, i64 33, i64 0 }) + br label %endif4655 +endif4655: %t130 = load ptr, ptr %a1 %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic4372, label %ok4373 -panic4372: - call void @finch_panic(ptr @.str.2777, i64 1937, ptr @.str.2778) + br i1 %t131, label %panic4656, label %ok4657 +panic4656: + call void @finch_panic(ptr @.str.2990, i64 2062, ptr @.str.2991) unreachable -ok4373: +ok4657: %t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 10 %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1 %t134 = load i64, ptr %t133 @@ -38724,21 +42530,21 @@ ok4373: store i64 %t135, ptr %a136 %t137 = load ptr, ptr %a1 %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic4374, label %ok4375 -panic4374: - call void @finch_panic(ptr @.str.2779, i64 1938, ptr @.str.2780) + br i1 %t138, label %panic4658, label %ok4659 +panic4658: + call void @finch_panic(ptr @.str.2992, i64 2063, ptr @.str.2993) unreachable -ok4375: +ok4659: %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 10 %t140 = load i64, ptr %a136 %t141 = load { ptr, i64, i64 }, ptr %t139 %t142 = extractvalue { ptr, i64, i64 } %t141, 1 %t143 = icmp uge i64 %t140, %t142 - br i1 %t143, label %range4376, label %inrange4377 -range4376: - call void @finch_panic_index(ptr @.str.2781, i64 1938, i64 %t140, i64 %t142) + br i1 %t143, label %range4660, label %inrange4661 +range4660: + call void @finch_panic_index(ptr @.str.2994, i64 2063, i64 %t140, i64 %t142) unreachable -inrange4377: +inrange4661: %t144 = extractvalue { ptr, i64, i64 } %t141, 0 %t145 = getelementptr inbounds %S.gen.Scope, ptr %t144, i64 %t140 %t146 = getelementptr inbounds %S.gen.Scope, ptr %t145, i32 0, i32 1 @@ -38747,11 +42553,11 @@ inrange4377: %t149 = load { ptr, i64, i64 }, ptr %t148 %t150 = extractvalue { ptr, i64, i64 } %t149, 1 %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range4378, label %inrange4379 -range4378: - call void @finch_panic_index(ptr @.str.2782, i64 1938, i64 0, i64 %t150) + br i1 %t151, label %range4662, label %inrange4663 +range4662: + call void @finch_panic_index(ptr @.str.2995, i64 2063, i64 0, i64 %t150) unreachable -inrange4379: +inrange4663: %t152 = extractvalue { ptr, i64, i64 } %t149, 0 %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 %t154 = load %S.ast.Node, ptr %t153 @@ -38767,32 +42573,32 @@ inrange4379: store i64 %t159, ptr %t147 %t162 = load ptr, ptr %a1 %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4380, label %ok4381 -panic4380: - call void @finch_panic(ptr @.str.2783, i64 1939, ptr @.str.2784) + br i1 %t163, label %panic4664, label %ok4665 +panic4664: + call void @finch_panic(ptr @.str.2996, i64 2064, ptr @.str.2997) unreachable -ok4381: +ok4665: %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 10 %t165 = load i64, ptr %a136 %t166 = load { ptr, i64, i64 }, ptr %t164 %t167 = extractvalue { ptr, i64, i64 } %t166, 1 %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4382, label %inrange4383 -range4382: - call void @finch_panic_index(ptr @.str.2785, i64 1939, i64 %t165, i64 %t167) + br i1 %t168, label %range4666, label %inrange4667 +range4666: + call void @finch_panic_index(ptr @.str.2998, i64 2064, i64 %t165, i64 %t167) unreachable -inrange4383: +inrange4667: %t169 = extractvalue { ptr, i64, i64 } %t166, 0 %t170 = getelementptr inbounds %S.gen.Scope, ptr %t169, i64 %t165 %t171 = getelementptr inbounds %S.gen.Scope, ptr %t170, i32 0, i32 2 %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 %t173 = load ptr, ptr %a1 %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4384, label %ok4385 -panic4384: - call void @finch_panic(ptr @.str.2786, i64 1939, ptr @.str.2787) + br i1 %t174, label %panic4668, label %ok4669 +panic4668: + call void @finch_panic(ptr @.str.2999, i64 2064, ptr @.str.3000) unreachable -ok4385: +ok4669: %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 23 %t176 = load i64, ptr %t175 %t177 = load i64, ptr %t172 @@ -38802,89 +42608,89 @@ ok4385: %t180 = getelementptr inbounds i64, ptr %t179, i64 %t177 store i64 %t176, ptr %t180 store i64 %t178, ptr %t172 - br label %endif4366 -else4365: + br label %endif4650 +else4649: %t181 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2788, i64 5, i64 0 }, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.3001, i64 5, i64 0 }, ptr %a183 %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) %t185 = icmp ne i32 %t184, 0 - br label %logic.from4386 -logic.from4386: - br i1 %t185, label %logic.end4388, label %logic.rhs4387 -logic.rhs4387: + br label %logic.from4670 +logic.from4670: + br i1 %t185, label %logic.end4672, label %logic.rhs4671 +logic.rhs4671: %t186 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.2789, i64 8, i64 0 }, ptr %a188 + store { ptr, i64, i64 } { ptr @.str.3002, i64 8, i64 0 }, ptr %a188 %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) %t190 = icmp ne i32 %t189, 0 - br label %logic.rend4389 -logic.rend4389: - br label %logic.end4388 -logic.end4388: - %t191 = phi i1 [ true, %logic.from4386 ], [ %t190, %logic.rend4389 ] - br i1 %t191, label %then4390, label %else4391 -then4390: + br label %logic.rend4673 +logic.rend4673: + br label %logic.end4672 +logic.end4672: + %t191 = phi i1 [ true, %logic.from4670 ], [ %t190, %logic.rend4673 ] + br i1 %t191, label %then4674, label %else4675 +then4674: %t192 = load ptr, ptr %a1 %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2790, i64 1941, ptr @.str.2791) + br i1 %t193, label %panic4677, label %ok4678 +panic4677: + call void @finch_panic(ptr @.str.3003, i64 2066, ptr @.str.3004) unreachable -ok4394: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 42 +ok4678: + %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 44 %t195 = load i64, ptr %t194 %t196 = icmp sgt i64 %t195, 0 - br i1 %t196, label %then4395, label %endif4397 -then4395: + br i1 %t196, label %then4679, label %endif4681 +then4679: %t197 = load ptr, ptr %a1 %t198 = load %S.ast.Node, ptr %a2 %t199 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.2792, i64 27, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.3005, i64 27, i64 0 }, ptr %a202 call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 call void @finch.gen.fail(ptr %t197, %S.ast.Node %t198, { ptr, i64, i64 } %t203) - br label %endif4397 -endif4397: + br label %endif4681 +endif4681: %t204 = load ptr, ptr %a1 %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4398, label %ok4399 -panic4398: - call void @finch_panic(ptr @.str.2793, i64 1944, ptr @.str.2794) + br i1 %t205, label %panic4682, label %ok4683 +panic4682: + call void @finch_panic(ptr @.str.3006, i64 2069, ptr @.str.3007) unreachable -ok4399: +ok4683: %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 11 %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 %t208 = load i64, ptr %t207 %t209 = icmp eq i64 %t208, 0 - br i1 %t209, label %then4400, label %endif4402 -then4400: + br i1 %t209, label %then4684, label %endif4686 +then4684: %t210 = load ptr, ptr %a1 %t211 = load %S.ast.Node, ptr %a2 %t212 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.2795, i64 31, i64 0 }, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.3008, i64 31, i64 0 }, ptr %a215 call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) %t216 = load { ptr, i64, i64 }, ptr %a213 call void @finch.gen.fail(ptr %t210, %S.ast.Node %t211, { ptr, i64, i64 } %t216) - br label %endif4402 -endif4402: + br label %endif4686 +endif4686: %t217 = load ptr, ptr %a1 %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2796, i64 1947, ptr @.str.2797) + br i1 %t218, label %panic4687, label %ok4688 +panic4687: + call void @finch_panic(ptr @.str.3009, i64 2072, ptr @.str.3010) unreachable -ok4404: +ok4688: %t219 = getelementptr inbounds %S.gen.Gen, ptr %t217, i32 0, i32 11 %t220 = load ptr, ptr %a1 %t221 = icmp eq ptr %t220, null - br i1 %t221, label %panic4405, label %ok4406 -panic4405: - call void @finch_panic(ptr @.str.2798, i64 1947, ptr @.str.2799) + br i1 %t221, label %panic4689, label %ok4690 +panic4689: + call void @finch_panic(ptr @.str.3011, i64 2072, ptr @.str.3012) unreachable -ok4406: +ok4690: %t222 = getelementptr inbounds %S.gen.Gen, ptr %t220, i32 0, i32 11 %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1 %t224 = load i64, ptr %t223 @@ -38892,11 +42698,11 @@ ok4406: %t226 = load { ptr, i64, i64 }, ptr %t219 %t227 = extractvalue { ptr, i64, i64 } %t226, 1 %t228 = icmp uge i64 %t225, %t227 - br i1 %t228, label %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2800, i64 1947, i64 %t225, i64 %t227) + br i1 %t228, label %range4691, label %inrange4692 +range4691: + call void @finch_panic_index(ptr @.str.3013, i64 2072, i64 %t225, i64 %t227) unreachable -inrange4408: +inrange4692: %t229 = extractvalue { ptr, i64, i64 } %t226, 0 %t230 = getelementptr inbounds %S.gen.Loop, ptr %t229, i64 %t225 %t231 = load %S.gen.Loop, ptr %t230 @@ -38910,57 +42716,57 @@ inrange4408: call void @finch.gen.unwind(ptr %t236, i64 %t238) %t239 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t239, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.2801, i64 5, i64 0 }, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3014, i64 5, i64 0 }, ptr %a241 %t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241) %t243 = icmp ne i32 %t242, 0 - br i1 %t243, label %then4409, label %else4410 -then4409: + br i1 %t243, label %then4693, label %else4694 +then4693: %t244 = load ptr, ptr %a1 %t245 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 1 %t246 = load { ptr, i64, i64 }, ptr %t245 call void @finch.gen.br(ptr %t244, { ptr, i64, i64 } %t246) - br label %endif4411 -else4410: + br label %endif4695 +else4694: %t247 = load ptr, ptr %a1 %t248 = getelementptr inbounds %S.gen.Loop, ptr %a235, i32 0, i32 0 %t249 = load { ptr, i64, i64 }, ptr %t248 call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t249) - br label %endif4411 -endif4411: - br label %endif4392 -else4391: + br label %endif4695 +endif4695: + br label %endif4676 +else4675: %t250 = load ptr, ptr %a1 %t251 = load %S.ast.Node, ptr %a2 %t252 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.2802, i64 18, i64 0 }, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.3015, i64 18, i64 0 }, ptr %a254 store { ptr, i64, i64 } %t252, ptr %a255 call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 call void @finch.gen.fail(ptr %t250, %S.ast.Node %t251, { ptr, i64, i64 } %t256) - br label %endif4392 -endif4392: - br label %endif4366 -endif4366: - br label %endif4363 -endif4363: - br label %endif4360 -endif4360: - br label %endif4357 -endif4357: - br label %endif4354 -endif4354: - br label %endif4351 -endif4351: - br label %endif4348 -endif4348: - br label %endif4336 -endif4336: - br label %endif4333 -endif4333: - br label %endif4330 -endif4330: - br label %endif4327 -endif4327: + br label %endif4676 +endif4676: + br label %endif4650 +endif4650: + br label %endif4647 +endif4647: + br label %endif4644 +endif4644: + br label %endif4641 +endif4641: + br label %endif4638 +endif4638: + br label %endif4635 +endif4635: + br label %endif4632 +endif4632: + br label %endif4620 +endif4620: + br label %endif4617 +endif4617: + br label %endif4614 +endif4614: + br label %endif4611 +endif4611: ret void } @@ -38997,18 +42803,18 @@ entry: %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 %t4 = load i1, ptr %t3 %t5 = xor i1 %t4, true - br i1 %t5, label %then4412, label %endif4414 -then4412: + br i1 %t5, label %then4696, label %endif4698 +then4696: %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t8 = load { ptr, i64, i64 }, ptr %t7 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 0, %t9 - br i1 %t10, label %range4415, label %inrange4416 -range4415: - call void @finch_panic_index(ptr @.str.2803, i64 1961, i64 0, i64 %t9) + br i1 %t10, label %range4699, label %inrange4700 +range4699: + call void @finch_panic_index(ptr @.str.3016, i64 2086, i64 0, i64 %t9) unreachable -inrange4416: +inrange4700: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.ast.Node, ptr %t11, i64 0 %t13 = load %S.ast.Node, ptr %t12 @@ -39018,62 +42824,62 @@ inrange4416: %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.2804, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.3017, i64 4, i64 0 }, ptr %a20 %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then4417, label %endif4419 -then4417: + br i1 %t22, label %then4701, label %endif4703 +then4701: %t23 = load ptr, ptr %a1 %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t25 = load { ptr, i64, i64 }, ptr %t24 %t26 = extractvalue { ptr, i64, i64 } %t25, 1 %t27 = icmp uge i64 0, %t26 - br i1 %t27, label %range4420, label %inrange4421 -range4420: - call void @finch_panic_index(ptr @.str.2805, i64 1963, i64 0, i64 %t26) + br i1 %t27, label %range4704, label %inrange4705 +range4704: + call void @finch_panic_index(ptr @.str.3018, i64 2088, i64 0, i64 %t26) unreachable -inrange4421: +inrange4705: %t28 = extractvalue { ptr, i64, i64 } %t25, 0 %t29 = getelementptr inbounds %S.ast.Node, ptr %t28, i64 0 %t30 = load %S.ast.Node, ptr %t29 - call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.2806, i64 46, i64 0 }) - br label %endif4419 -endif4419: + call void @finch.gen.fail(ptr %t23, %S.ast.Node %t30, { ptr, i64, i64 } { ptr @.str.3019, i64 46, i64 0 }) + br label %endif4703 +endif4703: %t31 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i32 0, i32 0 %t33 = load { ptr, i64, i64 }, ptr %t32 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.2807, i64 4, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3020, i64 4, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then4422, label %endif4424 -then4422: + br i1 %t37, label %then4706, label %endif4708 +then4706: %t38 = load ptr, ptr %a1 %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t40 = load { ptr, i64, i64 }, ptr %t39 %t41 = extractvalue { ptr, i64, i64 } %t40, 1 %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range4425, label %inrange4426 -range4425: - call void @finch_panic_index(ptr @.str.2808, i64 1966, i64 0, i64 %t41) + br i1 %t42, label %range4709, label %inrange4710 +range4709: + call void @finch_panic_index(ptr @.str.3021, i64 2091, i64 0, i64 %t41) unreachable -inrange4426: +inrange4710: %t43 = extractvalue { ptr, i64, i64 } %t40, 0 %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 0 %t45 = load %S.ast.Node, ptr %t44 %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } { ptr @.str.2809, i64 34, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3022, i64 34, i64 0 }, ptr %a49 store { ptr, i64, i64 } %t47, ptr %a50 call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) %t51 = load { ptr, i64, i64 }, ptr %a48 store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2810, i64 7, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.3023, i64 7, i64 0 }, ptr %a54 call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) %t55 = load { ptr, i64, i64 }, ptr %a52 call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t55) - br label %endif4424 -endif4424: + br label %endif4708 +endif4708: %t56 = load ptr, ptr %a1 %t57 = load %S.ast.Node, ptr %a2 %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -39085,7 +42891,7 @@ endif4424: %t64 = call { ptr, i64, i64 } @finch.gen.own(ptr %t62, %S.gen.Val %t63) %t65 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t59, %S.ast.Type %t61, { ptr, i64, i64 } %t64, i1 false) ret void -endif4414: +endif4698: %t66 = load ptr, ptr %a1 %t67 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 %t68 = load %S.ast.Type, ptr %t67 @@ -39096,28 +42902,28 @@ endif4414: %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 %t74 = load i64, ptr %t73 %t75 = icmp eq i64 %t74, 0 - br i1 %t75, label %then4427, label %endif4429 -then4427: + br i1 %t75, label %then4711, label %endif4713 +then4711: %t76 = getelementptr inbounds %S.ast.Type, ptr %a71, i32 0, i32 0 %t77 = load { ptr, i64, i64 }, ptr %t76 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2811, i64 6, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.3024, i64 6, i64 0 }, ptr %a79 %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) %t81 = icmp ne i32 %t80, 0 - br label %logic.from4430 -logic.from4430: - br i1 %t81, label %logic.rhs4431, label %logic.end4432 -logic.rhs4431: + br label %logic.from4714 +logic.from4714: + br i1 %t81, label %logic.rhs4715, label %logic.end4716 +logic.rhs4715: %t82 = load ptr, ptr %a1 %t83 = load %S.ast.Type, ptr %a71 %t84 = call i1 @finch.gen.hasDefaults(ptr %t82, %S.ast.Type %t83) - br label %logic.rend4433 -logic.rend4433: - br label %logic.end4432 -logic.end4432: - %t85 = phi i1 [ false, %logic.from4430 ], [ %t84, %logic.rend4433 ] - br i1 %t85, label %then4434, label %endif4436 -then4434: + br label %logic.rend4717 +logic.rend4717: + br label %logic.end4716 +logic.end4716: + %t85 = phi i1 [ false, %logic.from4714 ], [ %t84, %logic.rend4717 ] + br i1 %t85, label %then4718, label %endif4720 +then4718: store { ptr, i64, i64 } zeroinitializer, ptr %a86 store { ptr, i64, i64 } zeroinitializer, ptr %a87 %t88 = load ptr, ptr %a1 @@ -39141,7 +42947,7 @@ then4434: %t106 = load { ptr, i64, i64 }, ptr %t105 %t107 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t100, %S.ast.Node %t101, { ptr, i64, i64 } %t103, %S.ast.Type %t104, { ptr, i64, i64 } %t106, i1 false) ret void -endif4436: +endif4720: %t108 = load ptr, ptr %a1 %t109 = load %S.ast.Node, ptr %a2 %t110 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -39151,18 +42957,18 @@ endif4436: %t114 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t113) %t115 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t108, %S.ast.Node %t109, { ptr, i64, i64 } %t111, %S.ast.Type %t112, { ptr, i64, i64 } %t114, i1 false) ret void -endif4429: +endif4713: %t116 = load ptr, ptr %a1 %t117 = load ptr, ptr %a1 %t118 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t119 = load { ptr, i64, i64 }, ptr %t118 %t120 = extractvalue { ptr, i64, i64 } %t119, 1 %t121 = icmp uge i64 0, %t120 - br i1 %t121, label %range4437, label %inrange4438 -range4437: - call void @finch_panic_index(ptr @.str.2812, i64 1983, i64 0, i64 %t120) + br i1 %t121, label %range4721, label %inrange4722 +range4721: + call void @finch_panic_index(ptr @.str.3025, i64 2108, i64 0, i64 %t120) unreachable -inrange4438: +inrange4722: %t122 = extractvalue { ptr, i64, i64 } %t119, 0 %t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 0 %t124 = load %S.ast.Node, ptr %t123 @@ -39173,22 +42979,22 @@ inrange4438: %t129 = load { ptr, i64, i64 }, ptr %t128 %t130 = extractvalue { ptr, i64, i64 } %t129, 1 %t131 = icmp uge i64 0, %t130 - br i1 %t131, label %range4439, label %inrange4440 -range4439: - call void @finch_panic_index(ptr @.str.2813, i64 1983, i64 0, i64 %t130) + br i1 %t131, label %range4723, label %inrange4724 +range4723: + call void @finch_panic_index(ptr @.str.3026, i64 2108, i64 0, i64 %t130) unreachable -inrange4440: +inrange4724: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds %S.ast.Node, ptr %t132, i64 0 %t134 = load %S.ast.Node, ptr %t133 %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.2814, i64 1, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.3027, i64 1, i64 0 }, ptr %a138 store { ptr, i64, i64 } %t136, ptr %a139 call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) %t140 = load { ptr, i64, i64 }, ptr %a137 store { ptr, i64, i64 } %t140, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.2815, i64 1, i64 0 }, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.3028, i64 1, i64 0 }, ptr %a143 call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) %t144 = load { ptr, i64, i64 }, ptr %a141 %t145 = call %S.gen.Val @finch.gen.coerce(ptr %t116, %S.gen.Val %t126, %S.ast.Type %t127, %S.ast.Node %t134, { ptr, i64, i64 } %t144) @@ -39218,11 +43024,11 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2816, i64 1988, ptr @.str.2817) + br i1 %t4, label %panic4725, label %ok4726 +panic4725: + call void @finch_panic(ptr @.str.3029, i64 2113, ptr @.str.3030) unreachable -ok4442: +ok4726: %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 15 %t6 = load ptr, ptr %a1 %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -39233,11 +43039,11 @@ ok4442: %t12 = load { ptr, i64, i64 }, ptr %t5 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2818, i64 1988, i64 %t11, i64 %t13) + br i1 %t14, label %range4727, label %inrange4728 +range4727: + call void @finch_panic_index(ptr @.str.3031, i64 2113, i64 %t11, i64 %t13) unreachable -inrange4444: +inrange4728: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.StructDef, ptr %t15, i64 %t11 %t17 = load %S.gen.StructDef, ptr %t16 @@ -39247,28 +43053,28 @@ inrange4444: store %S.gen.StructDef %t20, ptr %a21 %t22 = getelementptr inbounds %S.gen.StructDef, ptr %a21, i32 0, i32 2 %t23 = load i1, ptr %t22 - br i1 %t23, label %then4445, label %endif4447 -then4445: + br i1 %t23, label %then4729, label %endif4731 +then4729: ret i1 false -endif4447: +endif4731: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4448, label %ok4449 -panic4448: - call void @finch_panic(ptr @.str.2819, i64 1992, ptr @.str.2820) + br i1 %t25, label %panic4732, label %ok4733 +panic4732: + call void @finch_panic(ptr @.str.3032, i64 2117, ptr @.str.3033) unreachable -ok4449: +ok4733: %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0 %t27 = getelementptr inbounds %S.gen.StructDef, ptr %a21, i32 0, i32 13 %t28 = load i64, ptr %t27 %t29 = load { ptr, i64, i64 }, ptr %t26 %t30 = extractvalue { ptr, i64, i64 } %t29, 1 %t31 = icmp uge i64 %t28, %t30 - br i1 %t31, label %range4450, label %inrange4451 -range4450: - call void @finch_panic_index(ptr @.str.2821, i64 1992, i64 %t28, i64 %t30) + br i1 %t31, label %range4734, label %inrange4735 +range4734: + call void @finch_panic_index(ptr @.str.3034, i64 2117, i64 %t28, i64 %t30) unreachable -inrange4451: +inrange4735: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.ast.Program, ptr %t32, i64 %t28 %t34 = getelementptr inbounds %S.ast.Program, ptr %t33, i32 0, i32 6 @@ -39277,23 +43083,23 @@ inrange4451: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range4452, label %inrange4453 -range4452: - call void @finch_panic_index(ptr @.str.2822, i64 1992, i64 %t36, i64 %t38) + br i1 %t39, label %range4736, label %inrange4737 +range4736: + call void @finch_panic_index(ptr @.str.3035, i64 2117, i64 %t36, i64 %t38) unreachable -inrange4453: +inrange4737: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i32 0, i32 9 store i64 0, ptr %a43 - br label %each.cond4454 -each.cond4454: + br label %each.cond4738 +each.cond4738: %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 %t45 = load i64, ptr %t44 %t46 = load i64, ptr %a43 %t47 = icmp slt i64 %t46, %t45 - br i1 %t47, label %each.body4455, label %each.end4457 -each.body4455: + br i1 %t47, label %each.body4739, label %each.end4741 +each.body4739: %t48 = load ptr, ptr %t42 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 %t46 %t50 = load %S.ast.Node, ptr %t49 @@ -39302,17 +43108,17 @@ each.body4455: %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 %t54 = load i64, ptr %t53 %t55 = icmp sgt i64 %t54, 0 - br i1 %t55, label %then4458, label %endif4460 -then4458: + br i1 %t55, label %then4742, label %endif4744 +then4742: ret i1 true -endif4460: - br label %each.step4456 -each.step4456: +endif4744: + br label %each.step4740 +each.step4740: %t56 = load i64, ptr %a43 %t57 = add i64 %t56, 1 store i64 %t57, ptr %a43 - br label %each.cond4454 -each.end4457: + br label %each.cond4738 +each.end4741: ret i1 false } @@ -39373,11 +43179,11 @@ entry: %t4 = load { ptr, i64, i64 }, ptr %t3 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range4461, label %inrange4462 -range4461: - call void @finch_panic_index(ptr @.str.2823, i64 2001, i64 0, i64 %t5) + br i1 %t6, label %range4745, label %inrange4746 +range4745: + call void @finch_panic_index(ptr @.str.3036, i64 2126, i64 0, i64 %t5) unreachable -inrange4462: +inrange4746: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -39391,40 +43197,40 @@ inrange4462: %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a16, i32 0, i32 1 %t18 = load i64, ptr %t17 %t19 = icmp sgt i64 %t18, 0 - br i1 %t19, label %then4463, label %endif4465 -then4463: + br i1 %t19, label %then4747, label %endif4749 +then4747: %t20 = load ptr, ptr %a1 %t21 = load { ptr, i64, i64 }, ptr %a16 %t22 = call i64 @finch.gen.lookup(ptr %t20, { ptr, i64, i64 } %t21) store i64 %t22, ptr %a23 %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, 0 - br label %logic.from4466 -logic.from4466: - br i1 %t25, label %logic.rhs4467, label %logic.end4468 -logic.rhs4467: + br label %logic.from4750 +logic.from4750: + br i1 %t25, label %logic.rhs4751, label %logic.end4752 +logic.rhs4751: %t26 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2824, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3037, i64 3, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br label %logic.rend4469 -logic.rend4469: - br label %logic.end4468 -logic.end4468: - %t32 = phi i1 [ false, %logic.from4466 ], [ %t31, %logic.rend4469 ] - br i1 %t32, label %then4470, label %endif4472 -then4470: + br label %logic.rend4753 +logic.rend4753: + br label %logic.end4752 +logic.end4752: + %t32 = phi i1 [ false, %logic.from4750 ], [ %t31, %logic.rend4753 ] + br i1 %t32, label %then4754, label %endif4756 +then4754: %t33 = load ptr, ptr %a1 %t34 = load %S.ast.Node, ptr %a2 %t35 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.2825, i64 28, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3038, i64 28, i64 0 }, ptr %a37 store { ptr, i64, i64 } %t35, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2826, i64 18, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.3039, i64 18, i64 0 }, ptr %a42 call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) %t43 = load { ptr, i64, i64 }, ptr %a40 %t44 = load { ptr, i64, i64 }, ptr %a16 @@ -39433,84 +43239,84 @@ then4470: call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) %t48 = load { ptr, i64, i64 }, ptr %a45 store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.2827, i64 8, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3040, i64 8, i64 0 }, ptr %a51 call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t52) - br label %endif4472 -endif4472: + br label %endif4756 +endif4756: %t53 = load i64, ptr %a23 %t54 = icmp sge i64 %t53, 0 - br label %logic.from4473 -logic.from4473: - br i1 %t54, label %logic.rhs4474, label %logic.end4475 -logic.rhs4474: + br label %logic.from4757 +logic.from4757: + br i1 %t54, label %logic.rhs4758, label %logic.end4759 +logic.rhs4758: %t55 = load ptr, ptr %a1 %t56 = load i64, ptr %a23 %t57 = call %S.gen.Var @finch.gen.varAt(ptr %t55, i64 %t56) %t58 = extractvalue %S.gen.Var %t57, 3 - br label %logic.rend4476 -logic.rend4476: - br label %logic.end4475 -logic.end4475: - %t59 = phi i1 [ false, %logic.from4473 ], [ %t58, %logic.rend4476 ] - br i1 %t59, label %then4477, label %endif4479 -then4477: + br label %logic.rend4760 +logic.rend4760: + br label %logic.end4759 +logic.end4759: + %t59 = phi i1 [ false, %logic.from4757 ], [ %t58, %logic.rend4760 ] + br i1 %t59, label %then4761, label %endif4763 +then4761: %t60 = load ptr, ptr %a1 %t61 = load %S.ast.Node, ptr %a2 %t62 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.2828, i64 19, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.3041, i64 19, i64 0 }, ptr %a64 store { ptr, i64, i64 } %t62, ptr %a65 call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) %t66 = load { ptr, i64, i64 }, ptr %a63 store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2829, i64 18, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.3042, i64 18, i64 0 }, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 call void @finch.gen.fail(ptr %t60, %S.ast.Node %t61, { ptr, i64, i64 } %t70) - br label %endif4479 -endif4479: - br label %endif4465 -endif4465: - store { ptr, i64, i64 } { ptr @.str.2830, i64 9, i64 0 }, ptr %a71 + br label %endif4763 +endif4763: + br label %endif4749 +endif4749: + store { ptr, i64, i64 } { ptr @.str.3043, i64 9, i64 0 }, ptr %a71 %t72 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 %t73 = load { ptr, i64, i64 }, ptr %t72 store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2831, i64 3, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.3044, i64 3, i64 0 }, ptr %a75 %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then4480, label %endif4482 -then4480: + br i1 %t77, label %then4764, label %endif4766 +then4764: %t78 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.2832, i64 1, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.3045, i64 1, i64 0 }, ptr %a80 store { ptr, i64, i64 } %t78, ptr %a81 call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) %t82 = load { ptr, i64, i64 }, ptr %a79 store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.2833, i64 1, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.3046, i64 1, i64 0 }, ptr %a85 call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t86, ptr %a71 - br label %endif4482 -endif4482: + br label %endif4766 +endif4766: %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t88 = load { ptr, i64, i64 }, ptr %t87 store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2834, i64 1, i64 0 }, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.3047, i64 1, i64 0 }, ptr %a90 %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4483, label %endif4485 -then4483: + br i1 %t92, label %then4767, label %endif4769 +then4767: %t93 = load ptr, ptr %a1 %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t95 = load { ptr, i64, i64 }, ptr %t94 %t96 = extractvalue { ptr, i64, i64 } %t95, 1 %t97 = icmp uge i64 1, %t96 - br i1 %t97, label %range4486, label %inrange4487 -range4486: - call void @finch_panic_index(ptr @.str.2835, i64 2017, i64 1, i64 %t96) + br i1 %t97, label %range4770, label %inrange4771 +range4770: + call void @finch_panic_index(ptr @.str.3048, i64 2142, i64 1, i64 %t96) unreachable -inrange4487: +inrange4771: %t98 = extractvalue { ptr, i64, i64 } %t95, 0 %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1 %t100 = load %S.ast.Node, ptr %t99 @@ -39528,11 +43334,11 @@ inrange4487: %t112 = load { ptr, i64, i64 }, ptr %t111 %t113 = extractvalue { ptr, i64, i64 } %t112, 1 %t114 = icmp uge i64 1, %t113 - br i1 %t114, label %range4488, label %inrange4489 -range4488: - call void @finch_panic_index(ptr @.str.2836, i64 2019, i64 1, i64 %t113) + br i1 %t114, label %range4772, label %inrange4773 +range4772: + call void @finch_panic_index(ptr @.str.3049, i64 2144, i64 1, i64 %t113) unreachable -inrange4489: +inrange4773: %t115 = extractvalue { ptr, i64, i64 } %t112, 0 %t116 = getelementptr inbounds %S.ast.Node, ptr %t115, i64 1 %t117 = load %S.ast.Node, ptr %t116 @@ -39551,17 +43357,17 @@ inrange4489: %t129 = load { ptr, i64, i64 }, ptr %t128 call void @finch.gen.store(ptr %t120, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t127, { ptr, i64, i64 } %t129) ret void -endif4485: +endif4769: %t130 = load ptr, ptr %a1 %t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t132 = load { ptr, i64, i64 }, ptr %t131 %t133 = extractvalue { ptr, i64, i64 } %t132, 1 %t134 = icmp uge i64 1, %t133 - br i1 %t134, label %range4490, label %inrange4491 -range4490: - call void @finch_panic_index(ptr @.str.2837, i64 2023, i64 1, i64 %t133) + br i1 %t134, label %range4774, label %inrange4775 +range4774: + call void @finch_panic_index(ptr @.str.3050, i64 2148, i64 1, i64 %t133) unreachable -inrange4491: +inrange4775: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 %t137 = load %S.ast.Node, ptr %t136 @@ -39590,7 +43396,7 @@ inrange4491: %t160 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t161 = load { ptr, i64, i64 }, ptr %t160 store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_sub(ptr %a163, ptr %a162, i64 0, i64 1, ptr @.str.2838, i64 2026) + call void @finch_str_sub(ptr %a163, ptr %a162, i64 0, i64 1, ptr @.str.3051, i64 2151) %t164 = load { ptr, i64, i64 }, ptr %a163 store { ptr, i64, i64 } %t164, ptr %a165 %t166 = load ptr, ptr %a1 @@ -39632,9 +43438,9 @@ entry: %t4 = load ptr, ptr %a1 %t5 = load %S.ast.Node, ptr %a2 %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2839, i64 4, i64 0 }) + %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3052, i64 4, i64 0 }) %t8 = load %S.ast.Node, ptr %a2 - %t9 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t6, %S.ast.Type %t7, %S.ast.Node %t8, { ptr, i64, i64 } { ptr @.str.2840, i64 11, i64 0 }) + %t9 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t6, %S.ast.Type %t7, %S.ast.Node %t8, { ptr, i64, i64 } { ptr @.str.3053, i64 11, i64 0 }) %t10 = extractvalue %S.gen.Val %t9, 0 store { ptr, i64, i64 } %t10, ptr %a11 call void @finch_str_copy(ptr %a12, ptr %a11) @@ -39658,45 +43464,45 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %t4 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 0, %t6 - br i1 %t7, label %range4492, label %inrange4493 -range4492: - call void @finch_panic_index(ptr @.str.2841, i64 2036, i64 0, i64 %t6) + br i1 %t7, label %range4776, label %inrange4777 +range4776: + call void @finch_panic_index(ptr @.str.3054, i64 2161, i64 0, i64 %t6) unreachable -inrange4493: +inrange4777: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 %t10 = load %S.ast.Node, ptr %t9 %t11 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t3, %S.ast.Node %t10) store { ptr, i64, i64 } %t11, ptr %a12 %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.2842, i64 4, i64 0 }) + %t14 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t13, { ptr, i64, i64 } { ptr @.str.3055, i64 4, i64 0 }) store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.2843, i64 4, i64 0 }) + %t17 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t16, { ptr, i64, i64 } { ptr @.str.3056, i64 4, i64 0 }) store { ptr, i64, i64 } %t17, ptr %a18 %t19 = load ptr, ptr %a1 - %t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.2844, i64 5, i64 0 }) + %t20 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t19, { ptr, i64, i64 } { ptr @.str.3057, i64 5, i64 0 }) store { ptr, i64, i64 } %t20, ptr %a21 %t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load i64, ptr %t23 %t25 = icmp sgt i64 %t24, 2 - br i1 %t25, label %then4494, label %else4495 -then4494: + br i1 %t25, label %then4778, label %else4779 +then4778: %t26 = load ptr, ptr %a1 %t27 = load { ptr, i64, i64 }, ptr %a12 %t28 = load { ptr, i64, i64 }, ptr %a15 %t29 = load { ptr, i64, i64 }, ptr %a18 call void @finch.gen.condBr(ptr %t26, { ptr, i64, i64 } %t27, { ptr, i64, i64 } %t28, { ptr, i64, i64 } %t29) - br label %endif4496 -else4495: + br label %endif4780 +else4779: %t30 = load ptr, ptr %a1 %t31 = load { ptr, i64, i64 }, ptr %a12 %t32 = load { ptr, i64, i64 }, ptr %a15 %t33 = load { ptr, i64, i64 }, ptr %a21 call void @finch.gen.condBr(ptr %t30, { ptr, i64, i64 } %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33) - br label %endif4496 -endif4496: + br label %endif4780 +endif4780: %t34 = load ptr, ptr %a1 %t35 = load { ptr, i64, i64 }, ptr %a15 call void @finch.gen.label(ptr %t34, { ptr, i64, i64 } %t35) @@ -39705,22 +43511,22 @@ endif4496: %t38 = load { ptr, i64, i64 }, ptr %t37 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 1, %t39 - br i1 %t40, label %range4497, label %inrange4498 -range4497: - call void @finch_panic_index(ptr @.str.2845, i64 2046, i64 1, i64 %t39) + br i1 %t40, label %range4781, label %inrange4782 +range4781: + call void @finch_panic_index(ptr @.str.3058, i64 2171, i64 1, i64 %t39) unreachable -inrange4498: +inrange4782: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 1 %t43 = load %S.ast.Node, ptr %t42 call void @finch.gen.block(ptr %t36, %S.ast.Node %t43, i1 true) %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic4499, label %ok4500 -panic4499: - call void @finch_panic(ptr @.str.2846, i64 2047, ptr @.str.2847) + br i1 %t45, label %panic4783, label %ok4784 +panic4783: + call void @finch_panic(ptr @.str.3059, i64 2172, ptr @.str.3060) unreachable -ok4500: +ok4784: %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 9 %t47 = load i1, ptr %t46 %t48 = xor i1 %t47, true @@ -39732,8 +43538,8 @@ ok4500: %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 %t54 = load i64, ptr %t53 %t55 = icmp sgt i64 %t54, 2 - br i1 %t55, label %then4501, label %else4502 -then4501: + br i1 %t55, label %then4785, label %else4786 +then4785: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a18 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -39742,52 +43548,52 @@ then4501: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 2, %t61 - br i1 %t62, label %range4504, label %inrange4505 -range4504: - call void @finch_panic_index(ptr @.str.2848, i64 2051, i64 2, i64 %t61) + br i1 %t62, label %range4788, label %inrange4789 +range4788: + call void @finch_panic_index(ptr @.str.3061, i64 2176, i64 2, i64 %t61) unreachable -inrange4505: +inrange4789: %t63 = extractvalue { ptr, i64, i64 } %t60, 0 %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 2 %t65 = load %S.ast.Node, ptr %t64 call void @finch.gen.stmt(ptr %t58, %S.ast.Node %t65) %t66 = load i1, ptr %a49 - br label %logic.from4506 -logic.from4506: - br i1 %t66, label %logic.end4508, label %logic.rhs4507 -logic.rhs4507: + br label %logic.from4790 +logic.from4790: + br i1 %t66, label %logic.end4792, label %logic.rhs4791 +logic.rhs4791: %t67 = load ptr, ptr %a1 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic4509, label %ok4510 -panic4509: - call void @finch_panic(ptr @.str.2849, i64 2052, ptr @.str.2850) + br i1 %t68, label %panic4793, label %ok4794 +panic4793: + call void @finch_panic(ptr @.str.3062, i64 2177, ptr @.str.3063) unreachable -ok4510: +ok4794: %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 9 %t70 = load i1, ptr %t69 %t71 = xor i1 %t70, true - br label %logic.rend4511 -logic.rend4511: - br label %logic.end4508 -logic.end4508: - %t72 = phi i1 [ true, %logic.from4506 ], [ %t71, %logic.rend4511 ] + br label %logic.rend4795 +logic.rend4795: + br label %logic.end4792 +logic.end4792: + %t72 = phi i1 [ true, %logic.from4790 ], [ %t71, %logic.rend4795 ] store i1 %t72, ptr %a49 %t73 = load ptr, ptr %a1 %t74 = load { ptr, i64, i64 }, ptr %a21 call void @finch.gen.br(ptr %t73, { ptr, i64, i64 } %t74) - br label %endif4503 -else4502: + br label %endif4787 +else4786: store i1 true, ptr %a49 - br label %endif4503 -endif4503: + br label %endif4787 +endif4787: %t75 = load i1, ptr %a49 - br i1 %t75, label %then4512, label %endif4514 -then4512: + br i1 %t75, label %then4796, label %endif4798 +then4796: %t76 = load ptr, ptr %a1 %t77 = load { ptr, i64, i64 }, ptr %a21 call void @finch.gen.label(ptr %t76, { ptr, i64, i64 } %t77) - br label %endif4514 -endif4514: + br label %endif4798 +endif4798: ret void } @@ -39812,13 +43618,13 @@ entry: store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.2851, i64 10, i64 0 }) + %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3064, i64 10, i64 0 }) store { ptr, i64, i64 } %t4, ptr %a5 %t6 = load ptr, ptr %a1 - %t7 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t6, { ptr, i64, i64 } { ptr @.str.2852, i64 10, i64 0 }) + %t7 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t6, { ptr, i64, i64 } { ptr @.str.3065, i64 10, i64 0 }) store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load ptr, ptr %a1 - %t10 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t9, { ptr, i64, i64 } { ptr @.str.2853, i64 9, i64 0 }) + %t10 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t9, { ptr, i64, i64 } { ptr @.str.3066, i64 9, i64 0 }) store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load ptr, ptr %a1 %t13 = load { ptr, i64, i64 }, ptr %a5 @@ -39830,86 +43636,86 @@ entry: %t17 = load { ptr, i64, i64 }, ptr %t16 %t18 = extractvalue { ptr, i64, i64 } %t17, 1 %t19 = icmp uge i64 0, %t18 - br i1 %t19, label %range4515, label %inrange4516 -range4515: - call void @finch_panic_index(ptr @.str.2854, i64 2068, i64 0, i64 %t18) + br i1 %t19, label %range4799, label %inrange4800 +range4799: + call void @finch_panic_index(ptr @.str.3067, i64 2193, i64 0, i64 %t18) unreachable -inrange4516: +inrange4800: %t20 = extractvalue { ptr, i64, i64 } %t17, 0 %t21 = getelementptr inbounds %S.ast.Node, ptr %t20, i64 0 %t22 = getelementptr inbounds %S.ast.Node, ptr %t21, i32 0, i32 0 %t23 = load { ptr, i64, i64 }, ptr %t22 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.2855, i64 4, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3068, i64 4, i64 0 }, ptr %a25 %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.from4517 -logic.from4517: - br i1 %t27, label %logic.rhs4518, label %logic.end4519 -logic.rhs4518: + br label %logic.from4801 +logic.from4801: + br i1 %t27, label %logic.rhs4802, label %logic.end4803 +logic.rhs4802: %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t29 = load { ptr, i64, i64 }, ptr %t28 %t30 = extractvalue { ptr, i64, i64 } %t29, 1 %t31 = icmp uge i64 0, %t30 - br i1 %t31, label %range4520, label %inrange4521 -range4520: - call void @finch_panic_index(ptr @.str.2856, i64 2068, i64 0, i64 %t30) + br i1 %t31, label %range4804, label %inrange4805 +range4804: + call void @finch_panic_index(ptr @.str.3069, i64 2193, i64 0, i64 %t30) unreachable -inrange4521: +inrange4805: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i64 0 %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i32 0, i32 4 %t35 = load { ptr, i64, i64 }, ptr %t34 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.2857, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3070, i64 4, i64 0 }, ptr %a37 %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) %t39 = icmp ne i32 %t38, 0 - br label %logic.rend4522 -logic.rend4522: - br label %logic.end4519 -logic.end4519: - %t40 = phi i1 [ false, %logic.from4517 ], [ %t39, %logic.rend4522 ] + br label %logic.rend4806 +logic.rend4806: + br label %logic.end4803 +logic.end4803: + %t40 = phi i1 [ false, %logic.from4801 ], [ %t39, %logic.rend4806 ] store i1 %t40, ptr %a41 %t42 = load ptr, ptr %a1 %t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t44 = load { ptr, i64, i64 }, ptr %t43 %t45 = extractvalue { ptr, i64, i64 } %t44, 1 %t46 = icmp uge i64 0, %t45 - br i1 %t46, label %range4523, label %inrange4524 -range4523: - call void @finch_panic_index(ptr @.str.2858, i64 2069, i64 0, i64 %t45) + br i1 %t46, label %range4807, label %inrange4808 +range4807: + call void @finch_panic_index(ptr @.str.3071, i64 2194, i64 0, i64 %t45) unreachable -inrange4524: +inrange4808: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0 %t49 = load %S.ast.Node, ptr %t48 %t50 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t42, %S.ast.Node %t49) store { ptr, i64, i64 } %t50, ptr %a51 %t52 = load i1, ptr %a41 - br i1 %t52, label %then4525, label %else4526 -then4525: + br i1 %t52, label %then4809, label %else4810 +then4809: %t53 = load ptr, ptr %a1 %t54 = load { ptr, i64, i64 }, ptr %a8 call void @finch.gen.br(ptr %t53, { ptr, i64, i64 } %t54) - br label %endif4527 -else4526: + br label %endif4811 +else4810: %t55 = load ptr, ptr %a1 %t56 = load { ptr, i64, i64 }, ptr %a51 %t57 = load { ptr, i64, i64 }, ptr %a8 %t58 = load { ptr, i64, i64 }, ptr %a11 call void @finch.gen.condBr(ptr %t55, { ptr, i64, i64 } %t56, { ptr, i64, i64 } %t57, { ptr, i64, i64 } %t58) - br label %endif4527 -endif4527: + br label %endif4811 +endif4811: %t59 = load ptr, ptr %a1 %t60 = load { ptr, i64, i64 }, ptr %a8 call void @finch.gen.label(ptr %t59, { ptr, i64, i64 } %t60) %t61 = load ptr, ptr %a1 %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic4528, label %ok4529 -panic4528: - call void @finch_panic(ptr @.str.2859, i64 2076, ptr @.str.2860) + br i1 %t62, label %panic4812, label %ok4813 +panic4812: + call void @finch_panic(ptr @.str.3072, i64 2201, ptr @.str.3073) unreachable -ok4529: +ok4813: %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 %t65 = load { ptr, i64, i64 }, ptr %a5 @@ -39924,11 +43730,11 @@ ok4529: %t74 = insertvalue %S.gen.Loop %t69, { ptr, i64, i64 } %t73, 1 %t75 = load ptr, ptr %a1 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic4530, label %ok4531 -panic4530: - call void @finch_panic(ptr @.str.2861, i64 2076, ptr @.str.2862) + br i1 %t76, label %panic4814, label %ok4815 +panic4814: + call void @finch_panic(ptr @.str.3074, i64 2201, ptr @.str.3075) unreachable -ok4531: +ok4815: %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 10 %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 %t79 = load i64, ptr %t78 @@ -39944,11 +43750,11 @@ ok4531: %t86 = load { ptr, i64, i64 }, ptr %t85 %t87 = extractvalue { ptr, i64, i64 } %t86, 1 %t88 = icmp uge i64 1, %t87 - br i1 %t88, label %range4532, label %inrange4533 -range4532: - call void @finch_panic_index(ptr @.str.2863, i64 2077, i64 1, i64 %t87) + br i1 %t88, label %range4816, label %inrange4817 +range4816: + call void @finch_panic_index(ptr @.str.3076, i64 2202, i64 1, i64 %t87) unreachable -inrange4533: +inrange4817: %t89 = extractvalue { ptr, i64, i64 } %t86, 0 %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 1 %t91 = load %S.ast.Node, ptr %t90 @@ -39959,31 +43765,31 @@ inrange4533: %t96 = load { ptr, i64, i64 }, ptr %t95 %t97 = extractvalue { ptr, i64, i64 } %t96, 1 %t98 = icmp uge i64 1, %t97 - br i1 %t98, label %range4534, label %inrange4535 -range4534: - call void @finch_panic_index(ptr @.str.2864, i64 2078, i64 1, i64 %t97) + br i1 %t98, label %range4818, label %inrange4819 +range4818: + call void @finch_panic_index(ptr @.str.3077, i64 2203, i64 1, i64 %t97) unreachable -inrange4535: +inrange4819: %t99 = extractvalue { ptr, i64, i64 } %t96, 0 %t100 = getelementptr inbounds %S.ast.Node, ptr %t99, i64 1 %t101 = load %S.ast.Node, ptr %t100 call void @finch.gen.block(ptr %t94, %S.ast.Node %t101, i1 true) %t102 = load ptr, ptr %a1 %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic4536, label %ok4537 -panic4536: - call void @finch_panic(ptr @.str.2865, i64 2079, ptr @.str.2866) + br i1 %t103, label %panic4820, label %ok4821 +panic4820: + call void @finch_panic(ptr @.str.3078, i64 2204, ptr @.str.3079) unreachable -ok4537: +ok4821: %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 11 %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 %t106 = load i64, ptr %t105 %t107 = icmp eq i64 %t106, 0 - br i1 %t107, label %panic4538, label %ok4539 -panic4538: - call void @finch_panic(ptr @.str.2867, i64 2079, ptr @.str.2868) + br i1 %t107, label %panic4822, label %ok4823 +panic4822: + call void @finch_panic(ptr @.str.3080, i64 2204, ptr @.str.3081) unreachable -ok4539: +ok4823: %t108 = sub i64 %t106, 1 %t109 = load ptr, ptr %t104 %t110 = getelementptr inbounds %S.gen.Loop, ptr %t109, i64 %t108 @@ -39994,23 +43800,23 @@ ok4539: call void @finch.gen.br(ptr %t112, { ptr, i64, i64 } %t113) %t114 = load i1, ptr %a41 %t115 = xor i1 %t114, true - br label %logic.from4540 -logic.from4540: - br i1 %t115, label %logic.end4542, label %logic.rhs4541 -logic.rhs4541: + br label %logic.from4824 +logic.from4824: + br i1 %t115, label %logic.end4826, label %logic.rhs4825 +logic.rhs4825: %t116 = load i1, ptr %a93 - br label %logic.rend4543 -logic.rend4543: - br label %logic.end4542 -logic.end4542: - %t117 = phi i1 [ true, %logic.from4540 ], [ %t116, %logic.rend4543 ] - br i1 %t117, label %then4544, label %endif4546 -then4544: + br label %logic.rend4827 +logic.rend4827: + br label %logic.end4826 +logic.end4826: + %t117 = phi i1 [ true, %logic.from4824 ], [ %t116, %logic.rend4827 ] + br i1 %t117, label %then4828, label %endif4830 +then4828: %t118 = load ptr, ptr %a1 %t119 = load { ptr, i64, i64 }, ptr %a11 call void @finch.gen.label(ptr %t118, { ptr, i64, i64 } %t119) - br label %endif4546 -endif4546: + br label %endif4830 +endif4830: ret void } @@ -40031,80 +43837,80 @@ entry: %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t3 = load { ptr, i64, i64 }, ptr %t2 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.2869, i64 5, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3082, i64 5, i64 0 }, ptr %a5 %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then4547, label %endif4549 -then4547: + br i1 %t7, label %then4831, label %endif4833 +then4831: ret i1 true -endif4549: +endif4833: %t8 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t9 = load { ptr, i64, i64 }, ptr %t8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.2870, i64 5, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3083, i64 5, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.from4550 -logic.from4550: - br i1 %t13, label %logic.end4552, label %logic.rhs4551 -logic.rhs4551: + br label %logic.from4834 +logic.from4834: + br i1 %t13, label %logic.end4836, label %logic.rhs4835 +logic.rhs4835: %t14 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t15 = load { ptr, i64, i64 }, ptr %t14 store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.2871, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3084, i64 3, i64 0 }, ptr %a17 %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) %t19 = icmp ne i32 %t18, 0 - br label %logic.rend4553 -logic.rend4553: - br label %logic.end4552 -logic.end4552: - %t20 = phi i1 [ true, %logic.from4550 ], [ %t19, %logic.rend4553 ] - br label %logic.from4554 -logic.from4554: - br i1 %t20, label %logic.end4556, label %logic.rhs4555 -logic.rhs4555: + br label %logic.rend4837 +logic.rend4837: + br label %logic.end4836 +logic.end4836: + %t20 = phi i1 [ true, %logic.from4834 ], [ %t19, %logic.rend4837 ] + br label %logic.from4838 +logic.from4838: + br i1 %t20, label %logic.end4840, label %logic.rhs4839 +logic.rhs4839: %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.2872, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3085, i64 4, i64 0 }, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br label %logic.rend4557 -logic.rend4557: - br label %logic.end4556 -logic.end4556: - %t27 = phi i1 [ true, %logic.from4554 ], [ %t26, %logic.rend4557 ] - br i1 %t27, label %then4558, label %endif4560 -then4558: + br label %logic.rend4841 +logic.rend4841: + br label %logic.end4840 +logic.end4840: + %t27 = phi i1 [ true, %logic.from4838 ], [ %t26, %logic.rend4841 ] + br i1 %t27, label %then4842, label %endif4844 +then4842: ret i1 false -endif4560: +endif4844: %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 store i64 0, ptr %a29 - br label %each.cond4561 -each.cond4561: + br label %each.cond4845 +each.cond4845: %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 %t31 = load i64, ptr %t30 %t32 = load i64, ptr %a29 %t33 = icmp slt i64 %t32, %t31 - br i1 %t33, label %each.body4562, label %each.end4564 -each.body4562: + br i1 %t33, label %each.body4846, label %each.end4848 +each.body4846: %t34 = load ptr, ptr %t28 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 %t36 = load %S.ast.Node, ptr %t35 store %S.ast.Node %t36, ptr %a37 %t38 = load %S.ast.Node, ptr %a37 %t39 = call i1 @finch.gen.countBreaks(%S.ast.Node %t38) - br i1 %t39, label %then4565, label %endif4567 -then4565: + br i1 %t39, label %then4849, label %endif4851 +then4849: ret i1 true -endif4567: - br label %each.step4563 -each.step4563: +endif4851: + br label %each.step4847 +each.step4847: %t40 = load i64, ptr %a29 %t41 = add i64 %t40, 1 store i64 %t41, ptr %a29 - br label %each.cond4561 -each.end4564: + br label %each.cond4845 +each.end4848: ret i1 false } @@ -40153,29 +43959,29 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range4568, label %inrange4569 -range4568: - call void @finch_panic_index(ptr @.str.2873, i64 2103, i64 0, i64 %t7) + br i1 %t8, label %range4852, label %inrange4853 +range4852: + call void @finch_panic_index(ptr @.str.3086, i64 2228, i64 0, i64 %t7) unreachable -inrange4569: +inrange4853: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 %t12 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t11) - %t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }) + %t13 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3087, i64 3, i64 0 }) %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t15 = load { ptr, i64, i64 }, ptr %t14 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 0, %t16 - br i1 %t17, label %range4570, label %inrange4571 -range4570: - call void @finch_panic_index(ptr @.str.2875, i64 2103, i64 0, i64 %t16) + br i1 %t17, label %range4854, label %inrange4855 +range4854: + call void @finch_panic_index(ptr @.str.3088, i64 2228, i64 0, i64 %t16) unreachable -inrange4571: +inrange4855: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0 %t20 = load %S.ast.Node, ptr %t19 - %t21 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t12, %S.ast.Type %t13, %S.ast.Node %t20, { ptr, i64, i64 } { ptr @.str.2876, i64 20, i64 0 }) + %t21 = call %S.gen.Val @finch.gen.coerce(ptr %t3, %S.gen.Val %t12, %S.ast.Type %t13, %S.ast.Node %t20, { ptr, i64, i64 } { ptr @.str.3089, i64 20, i64 0 }) %t22 = extractvalue %S.gen.Val %t21, 0 store { ptr, i64, i64 } %t22, ptr %a23 call void @finch_str_copy(ptr %a24, ptr %a23) @@ -40187,29 +43993,29 @@ inrange4571: %t30 = load { ptr, i64, i64 }, ptr %t29 %t31 = extractvalue { ptr, i64, i64 } %t30, 1 %t32 = icmp uge i64 1, %t31 - br i1 %t32, label %range4572, label %inrange4573 -range4572: - call void @finch_panic_index(ptr @.str.2877, i64 2104, i64 1, i64 %t31) + br i1 %t32, label %range4856, label %inrange4857 +range4856: + call void @finch_panic_index(ptr @.str.3090, i64 2229, i64 1, i64 %t31) unreachable -inrange4573: +inrange4857: %t33 = extractvalue { ptr, i64, i64 } %t30, 0 %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 1 %t35 = load %S.ast.Node, ptr %t34 %t36 = call %S.gen.Val @finch.gen.expr(ptr %t28, %S.ast.Node %t35) - %t37 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2878, i64 3, i64 0 }) + %t37 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3091, i64 3, i64 0 }) %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t39 = load { ptr, i64, i64 }, ptr %t38 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 1, %t40 - br i1 %t41, label %range4574, label %inrange4575 -range4574: - call void @finch_panic_index(ptr @.str.2879, i64 2104, i64 1, i64 %t40) + br i1 %t41, label %range4858, label %inrange4859 +range4858: + call void @finch_panic_index(ptr @.str.3092, i64 2229, i64 1, i64 %t40) unreachable -inrange4575: +inrange4859: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 1 %t44 = load %S.ast.Node, ptr %t43 - %t45 = call %S.gen.Val @finch.gen.coerce(ptr %t27, %S.gen.Val %t36, %S.ast.Type %t37, %S.ast.Node %t44, { ptr, i64, i64 } { ptr @.str.2880, i64 18, i64 0 }) + %t45 = call %S.gen.Val @finch.gen.coerce(ptr %t27, %S.gen.Val %t36, %S.ast.Type %t37, %S.ast.Node %t44, { ptr, i64, i64 } { ptr @.str.3093, i64 18, i64 0 }) %t46 = extractvalue %S.gen.Val %t45, 0 store { ptr, i64, i64 } %t46, ptr %a47 call void @finch_str_copy(ptr %a48, ptr %a47) @@ -40221,21 +44027,21 @@ inrange4575: %t53 = load %S.ast.Node, ptr %a2 %t54 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t55 = load { ptr, i64, i64 }, ptr %t54 - %t56 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2881, i64 3, i64 0 }) + %t56 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3094, i64 3, i64 0 }) %t57 = load { ptr, i64, i64 }, ptr %a26 %t58 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t52, %S.ast.Node %t53, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t57, i1 true) store { ptr, i64, i64 } %t58, ptr %a59 %t60 = load ptr, ptr %a1 - %t61 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t60, { ptr, i64, i64 } { ptr @.str.2882, i64 8, i64 0 }) + %t61 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t60, { ptr, i64, i64 } { ptr @.str.3095, i64 8, i64 0 }) store { ptr, i64, i64 } %t61, ptr %a62 %t63 = load ptr, ptr %a1 - %t64 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t63, { ptr, i64, i64 } { ptr @.str.2883, i64 8, i64 0 }) + %t64 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t63, { ptr, i64, i64 } { ptr @.str.3096, i64 8, i64 0 }) store { ptr, i64, i64 } %t64, ptr %a65 %t66 = load ptr, ptr %a1 - %t67 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t66, { ptr, i64, i64 } { ptr @.str.2884, i64 8, i64 0 }) + %t67 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t66, { ptr, i64, i64 } { ptr @.str.3097, i64 8, i64 0 }) store { ptr, i64, i64 } %t67, ptr %a68 %t69 = load ptr, ptr %a1 - %t70 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t69, { ptr, i64, i64 } { ptr @.str.2885, i64 7, i64 0 }) + %t70 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t69, { ptr, i64, i64 } { ptr @.str.3098, i64 7, i64 0 }) store { ptr, i64, i64 } %t70, ptr %a71 %t72 = load ptr, ptr %a1 %t73 = load { ptr, i64, i64 }, ptr %a62 @@ -40245,16 +44051,16 @@ inrange4575: call void @finch.gen.label(ptr %t74, { ptr, i64, i64 } %t75) %t76 = load ptr, ptr %a1 %t77 = load { ptr, i64, i64 }, ptr %a59 - %t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t76, { ptr, i64, i64 } { ptr @.str.2886, i64 3, i64 0 }, { ptr, i64, i64 } %t77) + %t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t76, { ptr, i64, i64 } { ptr @.str.3099, i64 3, i64 0 }, { ptr, i64, i64 } %t77) store { ptr, i64, i64 } %t78, ptr %a79 %t80 = load ptr, ptr %a1 %t81 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.2887, i64 13, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.3100, i64 13, i64 0 }, ptr %a83 store { ptr, i64, i64 } %t81, ptr %a84 call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2888, i64 2, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.3101, i64 2, i64 0 }, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 %t90 = load { ptr, i64, i64 }, ptr %a50 @@ -40274,11 +44080,11 @@ inrange4575: call void @finch.gen.label(ptr %t101, { ptr, i64, i64 } %t102) %t103 = load ptr, ptr %a1 %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4576, label %ok4577 -panic4576: - call void @finch_panic(ptr @.str.2889, i64 2117, ptr @.str.2890) + br i1 %t104, label %panic4860, label %ok4861 +panic4860: + call void @finch_panic(ptr @.str.3102, i64 2242, ptr @.str.3103) unreachable -ok4577: +ok4861: %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 11 %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 %t107 = load { ptr, i64, i64 }, ptr %a68 @@ -40293,11 +44099,11 @@ ok4577: %t116 = insertvalue %S.gen.Loop %t111, { ptr, i64, i64 } %t115, 1 %t117 = load ptr, ptr %a1 %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic4578, label %ok4579 -panic4578: - call void @finch_panic(ptr @.str.2891, i64 2117, ptr @.str.2892) + br i1 %t118, label %panic4862, label %ok4863 +panic4862: + call void @finch_panic(ptr @.str.3104, i64 2242, ptr @.str.3105) unreachable -ok4579: +ok4863: %t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 10 %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 %t121 = load i64, ptr %t120 @@ -40314,31 +44120,31 @@ ok4579: %t129 = load { ptr, i64, i64 }, ptr %t128 %t130 = extractvalue { ptr, i64, i64 } %t129, 1 %t131 = icmp uge i64 2, %t130 - br i1 %t131, label %range4580, label %inrange4581 -range4580: - call void @finch_panic_index(ptr @.str.2893, i64 2118, i64 2, i64 %t130) + br i1 %t131, label %range4864, label %inrange4865 +range4864: + call void @finch_panic_index(ptr @.str.3106, i64 2243, i64 2, i64 %t130) unreachable -inrange4581: +inrange4865: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds %S.ast.Node, ptr %t132, i64 2 %t134 = load %S.ast.Node, ptr %t133 call void @finch.gen.block(ptr %t127, %S.ast.Node %t134, i1 true) %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic4582, label %ok4583 -panic4582: - call void @finch_panic(ptr @.str.2894, i64 2119, ptr @.str.2895) + br i1 %t136, label %panic4866, label %ok4867 +panic4866: + call void @finch_panic(ptr @.str.3107, i64 2244, ptr @.str.3108) unreachable -ok4583: +ok4867: %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 11 %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 %t139 = load i64, ptr %t138 %t140 = icmp eq i64 %t139, 0 - br i1 %t140, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2896, i64 2119, ptr @.str.2897) + br i1 %t140, label %panic4868, label %ok4869 +panic4868: + call void @finch_panic(ptr @.str.3109, i64 2244, ptr @.str.3110) unreachable -ok4585: +ok4869: %t141 = sub i64 %t139, 1 %t142 = load ptr, ptr %t137 %t143 = getelementptr inbounds %S.gen.Loop, ptr %t142, i64 %t141 @@ -40352,22 +44158,22 @@ ok4585: call void @finch.gen.label(ptr %t147, { ptr, i64, i64 } %t148) %t149 = load ptr, ptr %a1 %t150 = load { ptr, i64, i64 }, ptr %a59 - %t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.2898, i64 3, i64 0 }, { ptr, i64, i64 } %t150) + %t151 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.3111, i64 3, i64 0 }, { ptr, i64, i64 } %t150) store { ptr, i64, i64 } %t151, ptr %a152 %t153 = load ptr, ptr %a1 %t154 = load ptr, ptr %a1 %t155 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2900, i64 8, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.3113, i64 8, i64 0 }, ptr %a157 store { ptr, i64, i64 } %t155, ptr %a158 call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) %t159 = load { ptr, i64, i64 }, ptr %a156 store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.2901, i64 3, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.3114, i64 3, i64 0 }, ptr %a162 call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) %t163 = load { ptr, i64, i64 }, ptr %a160 %t164 = call { ptr, i64, i64 } @finch.gen.op(ptr %t154, { ptr, i64, i64 } %t163) %t165 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.store(ptr %t153, { ptr, i64, i64 } { ptr @.str.2899, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165) + call void @finch.gen.store(ptr %t153, { ptr, i64, i64 } { ptr @.str.3112, i64 3, i64 0 }, { ptr, i64, i64 } %t164, { ptr, i64, i64 } %t165) %t166 = load ptr, ptr %a1 %t167 = load { ptr, i64, i64 }, ptr %a62 call void @finch.gen.br(ptr %t166, { ptr, i64, i64 } %t167) @@ -40502,11 +44308,11 @@ entry: %t7 = load { ptr, i64, i64 }, ptr %t6 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 0, %t8 - br i1 %t9, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2902, i64 2131, i64 0, i64 %t8) + br i1 %t9, label %range4870, label %inrange4871 +range4870: + call void @finch_panic_index(ptr @.str.3115, i64 2256, i64 0, i64 %t8) unreachable -inrange4587: +inrange4871: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -40518,11 +44324,11 @@ inrange4587: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range4588, label %inrange4589 -range4588: - call void @finch_panic_index(ptr @.str.2903, i64 2132, i64 1, i64 %t19) + br i1 %t20, label %range4872, label %inrange4873 +range4872: + call void @finch_panic_index(ptr @.str.3116, i64 2257, i64 1, i64 %t19) unreachable -inrange4589: +inrange4873: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -40531,20 +44337,20 @@ inrange4589: %t26 = load %S.ast.Type, ptr %a25 store %S.ast.Type %t26, ptr %a27 %t28 = load i1, ptr %a5 - br label %logic.from4590 -logic.from4590: - br i1 %t28, label %logic.rhs4591, label %logic.end4592 -logic.rhs4591: + br label %logic.from4874 +logic.from4874: + br i1 %t28, label %logic.rhs4875, label %logic.end4876 +logic.rhs4875: %t29 = load ptr, ptr %a1 %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t31 = load { ptr, i64, i64 }, ptr %t30 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 0, %t32 - br i1 %t33, label %range4593, label %inrange4594 -range4593: - call void @finch_panic_index(ptr @.str.2904, i64 2133, i64 0, i64 %t32) + br i1 %t33, label %range4877, label %inrange4878 +range4877: + call void @finch_panic_index(ptr @.str.3117, i64 2258, i64 0, i64 %t32) unreachable -inrange4594: +inrange4878: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 0 %t36 = load %S.ast.Node, ptr %t35 @@ -40553,42 +44359,42 @@ inrange4594: %t39 = load { ptr, i64, i64 }, ptr %t38 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 1, %t40 - br i1 %t41, label %range4595, label %inrange4596 -range4595: - call void @finch_panic_index(ptr @.str.2905, i64 2133, i64 1, i64 %t40) + br i1 %t41, label %range4879, label %inrange4880 +range4879: + call void @finch_panic_index(ptr @.str.3118, i64 2258, i64 1, i64 %t40) unreachable -inrange4596: +inrange4880: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 1 %t44 = load %S.ast.Node, ptr %t43 %t45 = call i1 @finch.gen.mutates(ptr %t29, { ptr, i64, i64 } %t37, %S.ast.Node %t44) - br label %logic.rend4597 -logic.rend4597: - br label %logic.end4592 -logic.end4592: - %t46 = phi i1 [ false, %logic.from4590 ], [ %t45, %logic.rend4597 ] + br label %logic.rend4881 +logic.rend4881: + br label %logic.end4876 +logic.end4876: + %t46 = phi i1 [ false, %logic.from4874 ], [ %t45, %logic.rend4881 ] store i1 %t46, ptr %a47 %t48 = load ptr, ptr %a1 - %t49 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t48, { ptr, i64, i64 } { ptr @.str.2906, i64 3, i64 0 }) + %t49 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t48, { ptr, i64, i64 } { ptr @.str.3119, i64 3, i64 0 }) store { ptr, i64, i64 } %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.store(ptr %t51, { ptr, i64, i64 } { ptr @.str.2907, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.2908, i64 1, i64 0 }, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } { ptr @.str.2909, i64 0, i64 0 }, ptr %a53 + call void @finch.gen.store(ptr %t51, { ptr, i64, i64 } { ptr @.str.3120, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3121, i64 1, i64 0 }, { ptr, i64, i64 } %t52) + store { ptr, i64, i64 } { ptr @.str.3122, i64 0, i64 0 }, ptr %a53 %t54 = load i1, ptr %a5 - br i1 %t54, label %then4598, label %endif4600 -then4598: + br i1 %t54, label %then4882, label %endif4884 +then4882: %t55 = load ptr, ptr %a1 %t56 = load ptr, ptr %a1 %t57 = load ptr, ptr %a1 %t58 = load %S.ast.Type, ptr %a4 %t59 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t57, %S.ast.Type %t58) - store { ptr, i64, i64 } { ptr @.str.2911, i64 23, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.3124, i64 23, i64 0 }, ptr %a61 store { ptr, i64, i64 } %t59, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2912, i64 6, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.3125, i64 6, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 %t68 = load { ptr, i64, i64 }, ptr %a3 @@ -40597,28 +44403,28 @@ then4598: call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2913, i64 14, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.3126, i64 14, i64 0 }, ptr %a75 call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t56, { ptr, i64, i64 } %t76) - %t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.2910, i64 3, i64 0 }, { ptr, i64, i64 } %t77) + %t78 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.3123, i64 3, i64 0 }, { ptr, i64, i64 } %t77) store { ptr, i64, i64 } %t78, ptr %a53 - br label %endif4600 -endif4600: + br label %endif4884 +endif4884: %t79 = load ptr, ptr %a1 - %t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.2914, i64 8, i64 0 }) + %t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.3127, i64 8, i64 0 }) store { ptr, i64, i64 } %t80, ptr %a81 %t82 = load ptr, ptr %a1 - %t83 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t82, { ptr, i64, i64 } { ptr @.str.2915, i64 9, i64 0 }) + %t83 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t82, { ptr, i64, i64 } { ptr @.str.3128, i64 9, i64 0 }) store { ptr, i64, i64 } %t83, ptr %a84 %t85 = load ptr, ptr %a1 - %t86 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t85, { ptr, i64, i64 } { ptr @.str.2916, i64 8, i64 0 }) + %t86 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t85, { ptr, i64, i64 } { ptr @.str.3129, i64 8, i64 0 }) store { ptr, i64, i64 } %t86, ptr %a87 %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.2917, i64 8, i64 0 }) + %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3130, i64 8, i64 0 }) store { ptr, i64, i64 } %t89, ptr %a90 %t91 = load ptr, ptr %a1 - %t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.2918, i64 7, i64 0 }) + %t92 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t91, { ptr, i64, i64 } { ptr @.str.3131, i64 7, i64 0 }) store { ptr, i64, i64 } %t92, ptr %a93 %t94 = load ptr, ptr %a1 %t95 = load { ptr, i64, i64 }, ptr %a81 @@ -40627,35 +44433,35 @@ endif4600: %t97 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.label(ptr %t96, { ptr, i64, i64 } %t97) %t98 = load i1, ptr %a5 - br label %logic.from4601 -logic.from4601: - br i1 %t98, label %logic.rhs4602, label %logic.end4603 -logic.rhs4602: + br label %logic.from4885 +logic.from4885: + br i1 %t98, label %logic.rhs4886, label %logic.end4887 +logic.rhs4886: %t99 = load i1, ptr %a47 - br label %logic.rend4604 -logic.rend4604: - br label %logic.end4603 -logic.end4603: - %t100 = phi i1 [ false, %logic.from4601 ], [ %t99, %logic.rend4604 ] - br i1 %t100, label %then4605, label %endif4607 -then4605: + br label %logic.rend4888 +logic.rend4888: + br label %logic.end4887 +logic.end4887: + %t100 = phi i1 [ false, %logic.from4885 ], [ %t99, %logic.rend4888 ] + br i1 %t100, label %then4889, label %endif4891 +then4889: %t101 = load ptr, ptr %a1 - %t102 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t101, { ptr, i64, i64 } { ptr @.str.2919, i64 11, i64 0 }) + %t102 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t101, { ptr, i64, i64 } { ptr @.str.3132, i64 11, i64 0 }) store { ptr, i64, i64 } %t102, ptr %a103 %t104 = load ptr, ptr %a1 - %t105 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t104, { ptr, i64, i64 } { ptr @.str.2920, i64 8, i64 0 }) + %t105 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t104, { ptr, i64, i64 } { ptr @.str.3133, i64 8, i64 0 }) store { ptr, i64, i64 } %t105, ptr %a106 %t107 = load ptr, ptr %a1 %t108 = load ptr, ptr %a1 %t109 = load ptr, ptr %a1 %t110 = load %S.ast.Type, ptr %a4 %t111 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t109, %S.ast.Type %t110) - store { ptr, i64, i64 } { ptr @.str.2922, i64 23, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.3135, i64 23, i64 0 }, ptr %a113 store { ptr, i64, i64 } %t111, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2923, i64 6, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.3136, i64 6, i64 0 }, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 %t120 = load { ptr, i64, i64 }, ptr %a3 @@ -40664,21 +44470,21 @@ then4605: call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) %t124 = load { ptr, i64, i64 }, ptr %a121 store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.2924, i64 14, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.3137, i64 14, i64 0 }, ptr %a127 call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) %t128 = load { ptr, i64, i64 }, ptr %a125 %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t108, { ptr, i64, i64 } %t128) - %t130 = call { ptr, i64, i64 } @finch.gen.load(ptr %t107, { ptr, i64, i64 } { ptr @.str.2921, i64 3, i64 0 }, { ptr, i64, i64 } %t129) + %t130 = call { ptr, i64, i64 } @finch.gen.load(ptr %t107, { ptr, i64, i64 } { ptr @.str.3134, i64 3, i64 0 }, { ptr, i64, i64 } %t129) store { ptr, i64, i64 } %t130, ptr %a131 %t132 = load ptr, ptr %a1 %t133 = load ptr, ptr %a1 %t134 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.2925, i64 12, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.3138, i64 12, i64 0 }, ptr %a136 store { ptr, i64, i64 } %t134, ptr %a137 call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) %t138 = load { ptr, i64, i64 }, ptr %a135 store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.2926, i64 2, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.3139, i64 2, i64 0 }, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 %t143 = load { ptr, i64, i64 }, ptr %a53 @@ -40697,32 +44503,32 @@ then4605: %t154 = load ptr, ptr %a1 %t155 = load ptr, ptr %a1 %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4608, label %ok4609 -panic4608: - call void @finch_panic(ptr @.str.2928, i64 2154, ptr @.str.2929) + br i1 %t156, label %panic4892, label %ok4893 +panic4892: + call void @finch_panic(ptr @.str.3141, i64 2279, ptr @.str.3142) unreachable -ok4609: +ok4893: %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 1 %t158 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t159 = load i64, ptr %t158 %t160 = load { ptr, i64, i64 }, ptr %t157 %t161 = extractvalue { ptr, i64, i64 } %t160, 1 %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4610, label %inrange4611 -range4610: - call void @finch_panic_index(ptr @.str.2930, i64 2154, i64 %t159, i64 %t161) + br i1 %t162, label %range4894, label %inrange4895 +range4894: + call void @finch_panic_index(ptr @.str.3143, i64 2279, i64 %t159, i64 %t161) unreachable -inrange4611: +inrange4895: %t163 = extractvalue { ptr, i64, i64 } %t160, 0 %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t159 %t165 = load { ptr, i64, i64 }, ptr %t164 %t166 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t154, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } { ptr @.str.2927, i64 33, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.3140, i64 33, i64 0 }, ptr %a168 store { ptr, i64, i64 } %t166, ptr %a169 call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.2931, i64 6, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3144, i64 6, i64 0 }, ptr %a173 call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 %t175 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -40734,41 +44540,41 @@ inrange4611: call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) %t182 = load { ptr, i64, i64 }, ptr %a179 store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.2932, i64 1, i64 0 }, ptr %a185 + store { ptr, i64, i64 } { ptr @.str.3145, i64 1, i64 0 }, ptr %a185 call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) %t186 = load { ptr, i64, i64 }, ptr %a183 call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t186) %t187 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t187, { ptr, i64, i64 } { ptr @.str.2933, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t187, { ptr, i64, i64 } { ptr @.str.3146, i64 11, i64 0 }) %t188 = load ptr, ptr %a1 %t189 = icmp eq ptr %t188, null - br i1 %t189, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2934, i64 2156, ptr @.str.2935) + br i1 %t189, label %panic4896, label %ok4897 +panic4896: + call void @finch_panic(ptr @.str.3147, i64 2281, ptr @.str.3148) unreachable -ok4613: +ok4897: %t190 = getelementptr inbounds %S.gen.Gen, ptr %t188, i32 0, i32 9 store i1 true, ptr %t190 %t191 = load ptr, ptr %a1 %t192 = load { ptr, i64, i64 }, ptr %a106 call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192) - br label %endif4607 -endif4607: + br label %endif4891 +endif4891: %t193 = load ptr, ptr %a1 %t194 = load { ptr, i64, i64 }, ptr %a50 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t193, { ptr, i64, i64 } { ptr @.str.2936, i64 3, i64 0 }, { ptr, i64, i64 } %t194) + %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t193, { ptr, i64, i64 } { ptr @.str.3149, i64 3, i64 0 }, { ptr, i64, i64 } %t194) store { ptr, i64, i64 } %t195, ptr %a196 %t197 = load ptr, ptr %a1 %t198 = load ptr, ptr %a1 %t199 = load ptr, ptr %a1 %t200 = load %S.ast.Type, ptr %a4 %t201 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t200) - store { ptr, i64, i64 } { ptr @.str.2938, i64 23, i64 0 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.3151, i64 23, i64 0 }, ptr %a203 store { ptr, i64, i64 } %t201, ptr %a204 call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) %t205 = load { ptr, i64, i64 }, ptr %a202 store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.2939, i64 6, i64 0 }, ptr %a208 + store { ptr, i64, i64 } { ptr @.str.3152, i64 6, i64 0 }, ptr %a208 call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) %t209 = load { ptr, i64, i64 }, ptr %a206 %t210 = load { ptr, i64, i64 }, ptr %a3 @@ -40777,21 +44583,21 @@ endif4607: call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) %t214 = load { ptr, i64, i64 }, ptr %a211 store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.2940, i64 14, i64 0 }, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.3153, i64 14, i64 0 }, ptr %a217 call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) %t218 = load { ptr, i64, i64 }, ptr %a215 %t219 = call { ptr, i64, i64 } @finch.gen.op(ptr %t198, { ptr, i64, i64 } %t218) - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.2937, i64 3, i64 0 }, { ptr, i64, i64 } %t219) + %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3150, i64 3, i64 0 }, { ptr, i64, i64 } %t219) store { ptr, i64, i64 } %t220, ptr %a221 %t222 = load ptr, ptr %a1 %t223 = load ptr, ptr %a1 %t224 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2941, i64 13, i64 0 }, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.3154, i64 13, i64 0 }, ptr %a226 store { ptr, i64, i64 } %t224, ptr %a227 call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) %t228 = load { ptr, i64, i64 }, ptr %a225 store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.2942, i64 2, i64 0 }, ptr %a231 + store { ptr, i64, i64 } { ptr @.str.3155, i64 2, i64 0 }, ptr %a231 call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) %t232 = load { ptr, i64, i64 }, ptr %a229 %t233 = load { ptr, i64, i64 }, ptr %a221 @@ -40817,17 +44623,17 @@ endif4607: %t251 = load { ptr, i64, i64 }, ptr %a248 %t252 = load %S.ast.Type, ptr %a4 %t253 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252, i64 0) - %t254 = call { ptr, i64, i64 } @finch.gen.load(ptr %t249, { ptr, i64, i64 } { ptr @.str.2943, i64 3, i64 0 }, { ptr, i64, i64 } %t253) + %t254 = call { ptr, i64, i64 } @finch.gen.load(ptr %t249, { ptr, i64, i64 } { ptr @.str.3156, i64 3, i64 0 }, { ptr, i64, i64 } %t253) store { ptr, i64, i64 } %t254, ptr %a255 %t256 = load ptr, ptr %a1 %t257 = load ptr, ptr %a1 %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.2944, i64 12, i64 0 }, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.3157, i64 12, i64 0 }, ptr %a260 store { ptr, i64, i64 } %t258, ptr %a261 call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) %t262 = load { ptr, i64, i64 }, ptr %a259 store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2945, i64 3, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.3158, i64 3, i64 0 }, ptr %a265 call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 %t267 = call { ptr, i64, i64 } @finch.gen.op(ptr %t257, { ptr, i64, i64 } %t266) @@ -40839,11 +44645,11 @@ endif4607: call void @finch.gen.label(ptr %t270, { ptr, i64, i64 } %t271) %t272 = load ptr, ptr %a1 %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4614, label %ok4615 -panic4614: - call void @finch_panic(ptr @.str.2946, i64 2167, ptr @.str.2947) + br i1 %t273, label %panic4898, label %ok4899 +panic4898: + call void @finch_panic(ptr @.str.3159, i64 2292, ptr @.str.3160) unreachable -ok4615: +ok4899: %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 11 %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i32 0, i32 1 %t276 = load { ptr, i64, i64 }, ptr %a90 @@ -40858,11 +44664,11 @@ ok4615: %t285 = insertvalue %S.gen.Loop %t280, { ptr, i64, i64 } %t284, 1 %t286 = load ptr, ptr %a1 %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic4616, label %ok4617 -panic4616: - call void @finch_panic(ptr @.str.2948, i64 2167, ptr @.str.2949) + br i1 %t287, label %panic4900, label %ok4901 +panic4900: + call void @finch_panic(ptr @.str.3161, i64 2292, ptr @.str.3162) unreachable -ok4617: +ok4901: %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 10 %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 %t290 = load i64, ptr %t289 @@ -40887,15 +44693,15 @@ ok4617: %t305 = call { ptr, i64, i64 } @finch.gen.load(ptr %t297, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t304) store { ptr, i64, i64 } %t305, ptr %a306 %t307 = load i1, ptr %a47 - br i1 %t307, label %then4618, label %endif4620 -then4618: + br i1 %t307, label %then4902, label %endif4904 +then4902: %t308 = load ptr, ptr %a1 %t309 = load { ptr, i64, i64 }, ptr %a306 %t310 = load %S.ast.Type, ptr %a16 %t311 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310) store { ptr, i64, i64 } %t311, ptr %a306 - br label %endif4620 -endif4620: + br label %endif4904 +endif4904: %t312 = load ptr, ptr %a1 %t313 = load %S.ast.Node, ptr %a2 %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -40907,8 +44713,8 @@ endif4620: %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t319, i32 0, i32 1 %t321 = load i64, ptr %t320 %t322 = icmp sgt i64 %t321, 0 - br i1 %t322, label %then4621, label %endif4623 -then4621: + br i1 %t322, label %then4905, label %endif4907 +then4905: %t323 = load ptr, ptr %a1 %t324 = load ptr, ptr %a1 %t325 = load %S.ast.Type, ptr %a27 @@ -40920,15 +44726,15 @@ then4621: %t331 = call { ptr, i64, i64 } @finch.gen.load(ptr %t323, { ptr, i64, i64 } %t326, { ptr, i64, i64 } %t330) store { ptr, i64, i64 } %t331, ptr %a332 %t333 = load i1, ptr %a47 - br i1 %t333, label %then4624, label %endif4626 -then4624: + br i1 %t333, label %then4908, label %endif4910 +then4908: %t334 = load ptr, ptr %a1 %t335 = load { ptr, i64, i64 }, ptr %a332 %t336 = load %S.ast.Type, ptr %a27 %t337 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t334, { ptr, i64, i64 } %t335, %S.ast.Type %t336) store { ptr, i64, i64 } %t337, ptr %a332 - br label %endif4626 -endif4626: + br label %endif4910 +endif4910: %t338 = load ptr, ptr %a1 %t339 = load %S.ast.Node, ptr %a2 %t340 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 @@ -40936,18 +44742,18 @@ endif4626: %t342 = load %S.ast.Type, ptr %a27 %t343 = load { ptr, i64, i64 }, ptr %a332 %t344 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t338, %S.ast.Node %t339, { ptr, i64, i64 } %t341, %S.ast.Type %t342, { ptr, i64, i64 } %t343, i1 true) - br label %endif4623 -endif4623: + br label %endif4907 +endif4907: %t345 = load ptr, ptr %a1 %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t347 = load { ptr, i64, i64 }, ptr %t346 %t348 = extractvalue { ptr, i64, i64 } %t347, 1 %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range4627, label %inrange4628 -range4627: - call void @finch_panic_index(ptr @.str.2950, i64 2181, i64 1, i64 %t348) + br i1 %t349, label %range4911, label %inrange4912 +range4911: + call void @finch_panic_index(ptr @.str.3163, i64 2306, i64 1, i64 %t348) unreachable -inrange4628: +inrange4912: %t350 = extractvalue { ptr, i64, i64 } %t347, 0 %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 1 %t352 = load %S.ast.Node, ptr %t351 @@ -40956,20 +44762,20 @@ inrange4628: call void @finch.gen.popScope(ptr %t353) %t354 = load ptr, ptr %a1 %t355 = icmp eq ptr %t354, null - br i1 %t355, label %panic4629, label %ok4630 -panic4629: - call void @finch_panic(ptr @.str.2951, i64 2183, ptr @.str.2952) + br i1 %t355, label %panic4913, label %ok4914 +panic4913: + call void @finch_panic(ptr @.str.3164, i64 2308, ptr @.str.3165) unreachable -ok4630: +ok4914: %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 11 %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 %t358 = load i64, ptr %t357 %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic4631, label %ok4632 -panic4631: - call void @finch_panic(ptr @.str.2953, i64 2183, ptr @.str.2954) + br i1 %t359, label %panic4915, label %ok4916 +panic4915: + call void @finch_panic(ptr @.str.3166, i64 2308, ptr @.str.3167) unreachable -ok4632: +ok4916: %t360 = sub i64 %t358, 1 %t361 = load ptr, ptr %t356 %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 @@ -40983,22 +44789,22 @@ ok4632: call void @finch.gen.label(ptr %t366, { ptr, i64, i64 } %t367) %t368 = load ptr, ptr %a1 %t369 = load { ptr, i64, i64 }, ptr %a50 - %t370 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } { ptr @.str.2955, i64 3, i64 0 }, { ptr, i64, i64 } %t369) + %t370 = call { ptr, i64, i64 } @finch.gen.load(ptr %t368, { ptr, i64, i64 } { ptr @.str.3168, i64 3, i64 0 }, { ptr, i64, i64 } %t369) store { ptr, i64, i64 } %t370, ptr %a371 %t372 = load ptr, ptr %a1 %t373 = load ptr, ptr %a1 %t374 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2957, i64 8, i64 0 }, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.3170, i64 8, i64 0 }, ptr %a376 store { ptr, i64, i64 } %t374, ptr %a377 call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) %t378 = load { ptr, i64, i64 }, ptr %a375 store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.2958, i64 3, i64 0 }, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.3171, i64 3, i64 0 }, ptr %a381 call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) %t382 = load { ptr, i64, i64 }, ptr %a379 %t383 = call { ptr, i64, i64 } @finch.gen.op(ptr %t373, { ptr, i64, i64 } %t382) %t384 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } { ptr @.str.2956, i64 3, i64 0 }, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384) + call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } { ptr @.str.3169, i64 3, i64 0 }, { ptr, i64, i64 } %t383, { ptr, i64, i64 } %t384) %t385 = load ptr, ptr %a1 %t386 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.br(ptr %t385, { ptr, i64, i64 } %t386) @@ -41105,23 +44911,23 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range4633, label %inrange4634 -range4633: - call void @finch_panic_index(ptr @.str.2959, i64 2194, i64 0, i64 %t7) + br i1 %t8, label %range4917, label %inrange4918 +range4917: + call void @finch_panic_index(ptr @.str.3172, i64 2319, i64 0, i64 %t7) unreachable -inrange4634: +inrange4918: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 %t12 = call %S.gen.Ref @finch.gen.ref(ptr %t4, %S.ast.Node %t11, i1 false) store %S.gen.Ref %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2960, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2961, i64 4, i64 0 }) + store { ptr, i64, i64 } { ptr @.str.3173, i64 0, i64 0 }, ptr %a14 + %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3174, i64 4, i64 0 }) store %S.ast.Type %t15, ptr %a16 %t17 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 %t18 = load i1, ptr %t17 - br i1 %t18, label %then4635, label %else4636 -then4635: + br i1 %t18, label %then4919, label %else4920 +then4919: %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 %t21 = load { ptr, i64, i64 }, ptr %t20 @@ -41136,8 +44942,8 @@ then4635: call void @finch.copy.S_ast_Type(ptr %a29, ptr %a28) %t30 = load %S.ast.Type, ptr %a29 store %S.ast.Type %t30, ptr %a16 - br label %endif4637 -else4636: + br label %endif4921 +else4920: %t31 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 %t32 = getelementptr inbounds %S.gen.Val, ptr %t31, i32 0, i32 1 %t33 = load %S.ast.Type, ptr %t32 @@ -41150,16 +44956,16 @@ else4636: %t39 = load %S.gen.Val, ptr %t38 %t40 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t37, %S.gen.Val %t39) store { ptr, i64, i64 } %t40, ptr %a14 - br label %endif4637 -endif4637: + br label %endif4921 +endif4921: %t41 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 %t42 = load { ptr, i64, i64 }, ptr %t41 store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.2962, i64 3, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.3175, i64 3, i64 0 }, ptr %a44 %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) %t46 = icmp ne i32 %t45, 0 - br i1 %t46, label %then4638, label %endif4640 -then4638: + br i1 %t46, label %then4922, label %endif4924 +then4922: %t47 = load ptr, ptr %a1 %t48 = load %S.ast.Node, ptr %a2 %t49 = load { ptr, i64, i64 }, ptr %a14 @@ -41170,75 +44976,75 @@ then4638: %t53 = load ptr, ptr %a1 call void @finch.gen.popScope(ptr %t53) ret void -endif4640: +endif4924: %t54 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 %t55 = load { ptr, i64, i64 }, ptr %t54 store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.2963, i64 5, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3176, i64 5, i64 0 }, ptr %a57 %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) %t59 = icmp eq i32 %t58, 0 - br label %logic.from4641 -logic.from4641: - br i1 %t59, label %logic.rhs4642, label %logic.end4643 -logic.rhs4642: + br label %logic.from4925 +logic.from4925: + br i1 %t59, label %logic.rhs4926, label %logic.end4927 +logic.rhs4926: %t60 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 %t61 = load { ptr, i64, i64 }, ptr %t60 store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2964, i64 3, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.3177, i64 3, i64 0 }, ptr %a63 %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) %t65 = icmp eq i32 %t64, 0 - br label %logic.rend4644 -logic.rend4644: - br label %logic.end4643 -logic.end4643: - %t66 = phi i1 [ false, %logic.from4641 ], [ %t65, %logic.rend4644 ] - br i1 %t66, label %then4645, label %endif4647 -then4645: + br label %logic.rend4928 +logic.rend4928: + br label %logic.end4927 +logic.end4927: + %t66 = phi i1 [ false, %logic.from4925 ], [ %t65, %logic.rend4928 ] + br i1 %t66, label %then4929, label %endif4931 +then4929: %t67 = load ptr, ptr %a1 %t68 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t69 = load { ptr, i64, i64 }, ptr %t68 %t70 = extractvalue { ptr, i64, i64 } %t69, 1 %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range4648, label %inrange4649 -range4648: - call void @finch_panic_index(ptr @.str.2965, i64 2210, i64 0, i64 %t70) + br i1 %t71, label %range4932, label %inrange4933 +range4932: + call void @finch_panic_index(ptr @.str.3178, i64 2335, i64 0, i64 %t70) unreachable -inrange4649: +inrange4933: %t72 = extractvalue { ptr, i64, i64 } %t69, 0 %t73 = getelementptr inbounds %S.ast.Node, ptr %t72, i64 0 %t74 = load %S.ast.Node, ptr %t73 %t75 = load %S.ast.Type, ptr %a16 %t76 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t75) - store { ptr, i64, i64 } { ptr @.str.2966, i64 55, i64 0 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.3179, i64 55, i64 0 }, ptr %a78 store { ptr, i64, i64 } %t76, ptr %a79 call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) %t80 = load { ptr, i64, i64 }, ptr %a77 store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2967, i64 36, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.3180, i64 36, i64 0 }, ptr %a83 call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) %t84 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.fail(ptr %t67, %S.ast.Node %t74, { ptr, i64, i64 } %t84) - br label %endif4647 -endif4647: - %t85 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2968, i64 4, i64 0 }) + br label %endif4931 +endif4931: + %t85 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3181, i64 4, i64 0 }) store %S.ast.Type %t85, ptr %a86 %t87 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 %t88 = load { ptr, i64, i64 }, ptr %t87 store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2969, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.3182, i64 5, i64 0 }, ptr %a90 %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4650, label %endif4652 -then4650: + br i1 %t92, label %then4934, label %endif4936 +then4934: %t93 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 %t94 = load { ptr, i64, i64 }, ptr %t93 %t95 = extractvalue { ptr, i64, i64 } %t94, 1 %t96 = icmp uge i64 0, %t95 - br i1 %t96, label %range4653, label %inrange4654 -range4653: - call void @finch_panic_index(ptr @.str.2970, i64 2214, i64 0, i64 %t95) + br i1 %t96, label %range4937, label %inrange4938 +range4937: + call void @finch_panic_index(ptr @.str.3183, i64 2339, i64 0, i64 %t95) unreachable -inrange4654: +inrange4938: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 0 %t99 = load %S.ast.Type, ptr %t98 @@ -41246,36 +45052,36 @@ inrange4654: call void @finch.copy.S_ast_Type(ptr %a101, ptr %a100) %t102 = load %S.ast.Type, ptr %a101 store %S.ast.Type %t102, ptr %a86 - br label %endif4652 -endif4652: + br label %endif4936 +endif4936: %t103 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 %t104 = load i1, ptr %t103 - br label %logic.from4655 -logic.from4655: - br i1 %t104, label %logic.rhs4656, label %logic.end4657 -logic.rhs4656: + br label %logic.from4939 +logic.from4939: + br i1 %t104, label %logic.rhs4940, label %logic.end4941 +logic.rhs4940: %t105 = load ptr, ptr %a1 %t106 = load %S.ast.Type, ptr %a86 %t107 = call i1 @finch.gen.owning(ptr %t105, %S.ast.Type %t106) - br label %logic.rend4658 -logic.rend4658: - br label %logic.end4657 -logic.end4657: - %t108 = phi i1 [ false, %logic.from4655 ], [ %t107, %logic.rend4658 ] - br label %logic.from4659 -logic.from4659: - br i1 %t108, label %logic.rhs4660, label %logic.end4661 -logic.rhs4660: + br label %logic.rend4942 +logic.rend4942: + br label %logic.end4941 +logic.end4941: + %t108 = phi i1 [ false, %logic.from4939 ], [ %t107, %logic.rend4942 ] + br label %logic.from4943 +logic.from4943: + br i1 %t108, label %logic.rhs4944, label %logic.end4945 +logic.rhs4944: %t109 = load ptr, ptr %a1 %t110 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t111 = load { ptr, i64, i64 }, ptr %t110 %t112 = extractvalue { ptr, i64, i64 } %t111, 1 %t113 = icmp uge i64 0, %t112 - br i1 %t113, label %range4662, label %inrange4663 -range4662: - call void @finch_panic_index(ptr @.str.2971, i64 2216, i64 0, i64 %t112) + br i1 %t113, label %range4946, label %inrange4947 +range4946: + call void @finch_panic_index(ptr @.str.3184, i64 2341, i64 0, i64 %t112) unreachable -inrange4663: +inrange4947: %t114 = extractvalue { ptr, i64, i64 } %t111, 0 %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 0 %t116 = load %S.ast.Node, ptr %t115 @@ -41284,38 +45090,38 @@ inrange4663: %t119 = load { ptr, i64, i64 }, ptr %t118 %t120 = extractvalue { ptr, i64, i64 } %t119, 1 %t121 = icmp uge i64 1, %t120 - br i1 %t121, label %range4664, label %inrange4665 -range4664: - call void @finch_panic_index(ptr @.str.2972, i64 2216, i64 1, i64 %t120) + br i1 %t121, label %range4948, label %inrange4949 +range4948: + call void @finch_panic_index(ptr @.str.3185, i64 2341, i64 1, i64 %t120) unreachable -inrange4665: +inrange4949: %t122 = extractvalue { ptr, i64, i64 } %t119, 0 %t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 1 %t124 = load %S.ast.Node, ptr %t123 %t125 = call i1 @finch.gen.mutates(ptr %t109, { ptr, i64, i64 } %t117, %S.ast.Node %t124) - br label %logic.rend4666 -logic.rend4666: - br label %logic.end4661 -logic.end4661: - %t126 = phi i1 [ false, %logic.from4659 ], [ %t125, %logic.rend4666 ] + br label %logic.rend4950 +logic.rend4950: + br label %logic.end4945 +logic.end4945: + %t126 = phi i1 [ false, %logic.from4943 ], [ %t125, %logic.rend4950 ] store i1 %t126, ptr %a127 %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.2973, i64 3, i64 0 }) + %t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.3186, i64 3, i64 0 }) store { ptr, i64, i64 } %t129, ptr %a130 %t131 = load ptr, ptr %a1 %t132 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.2974, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.2975, i64 1, i64 0 }, { ptr, i64, i64 } %t132) + call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.3187, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3188, i64 1, i64 0 }, { ptr, i64, i64 } %t132) %t133 = load ptr, ptr %a1 - %t134 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t133, { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }) + %t134 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t133, { ptr, i64, i64 } { ptr @.str.3189, i64 9, i64 0 }) store { ptr, i64, i64 } %t134, ptr %a135 %t136 = load ptr, ptr %a1 - %t137 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t136, { ptr, i64, i64 } { ptr @.str.2977, i64 9, i64 0 }) + %t137 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t136, { ptr, i64, i64 } { ptr @.str.3190, i64 9, i64 0 }) store { ptr, i64, i64 } %t137, ptr %a138 %t139 = load ptr, ptr %a1 - %t140 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t139, { ptr, i64, i64 } { ptr @.str.2978, i64 9, i64 0 }) + %t140 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t139, { ptr, i64, i64 } { ptr @.str.3191, i64 9, i64 0 }) store { ptr, i64, i64 } %t140, ptr %a141 %t142 = load ptr, ptr %a1 - %t143 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t142, { ptr, i64, i64 } { ptr @.str.2979, i64 8, i64 0 }) + %t143 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t142, { ptr, i64, i64 } { ptr @.str.3192, i64 8, i64 0 }) store { ptr, i64, i64 } %t143, ptr %a144 %t145 = load ptr, ptr %a1 %t146 = load { ptr, i64, i64 }, ptr %a135 @@ -41326,29 +45132,29 @@ logic.end4661: %t149 = load ptr, ptr %a1 %t150 = load ptr, ptr %a1 %t151 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2981, i64 46, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.3194, i64 46, i64 0 }, ptr %a153 store { ptr, i64, i64 } %t151, ptr %a154 call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) %t155 = load { ptr, i64, i64 }, ptr %a152 store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.2982, i64 14, i64 0 }, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.3195, i64 14, i64 0 }, ptr %a158 call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) %t159 = load { ptr, i64, i64 }, ptr %a156 %t160 = call { ptr, i64, i64 } @finch.gen.op(ptr %t150, { ptr, i64, i64 } %t159) - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.2980, i64 3, i64 0 }, { ptr, i64, i64 } %t160) + %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t149, { ptr, i64, i64 } { ptr @.str.3193, i64 3, i64 0 }, { ptr, i64, i64 } %t160) store { ptr, i64, i64 } %t161, ptr %a162 %t163 = load ptr, ptr %a1 %t164 = load { ptr, i64, i64 }, ptr %a130 - %t165 = call { ptr, i64, i64 } @finch.gen.load(ptr %t163, { ptr, i64, i64 } { ptr @.str.2983, i64 3, i64 0 }, { ptr, i64, i64 } %t164) + %t165 = call { ptr, i64, i64 } @finch.gen.load(ptr %t163, { ptr, i64, i64 } { ptr @.str.3196, i64 3, i64 0 }, { ptr, i64, i64 } %t164) store { ptr, i64, i64 } %t165, ptr %a166 %t167 = load ptr, ptr %a1 %t168 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2984, i64 13, i64 0 }, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.3197, i64 13, i64 0 }, ptr %a170 store { ptr, i64, i64 } %t168, ptr %a171 call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) %t172 = load { ptr, i64, i64 }, ptr %a169 store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.2985, i64 2, i64 0 }, ptr %a175 + store { ptr, i64, i64 } { ptr @.str.3198, i64 2, i64 0 }, ptr %a175 call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) %t176 = load { ptr, i64, i64 }, ptr %a173 %t177 = load { ptr, i64, i64 }, ptr %a162 @@ -41368,18 +45174,18 @@ logic.end4661: call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) %t190 = load ptr, ptr %a1 %t191 = load { ptr, i64, i64 }, ptr %a14 - %t192 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.2986, i64 3, i64 0 }, { ptr, i64, i64 } %t191) + %t192 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.3199, i64 3, i64 0 }, { ptr, i64, i64 } %t191) store { ptr, i64, i64 } %t192, ptr %a193 %t194 = load ptr, ptr %a1 %t195 = load ptr, ptr %a1 %t196 = load %S.ast.Type, ptr %a86 %t197 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t195, %S.ast.Type %t196) - store { ptr, i64, i64 } { ptr @.str.2987, i64 23, i64 0 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.3200, i64 23, i64 0 }, ptr %a199 store { ptr, i64, i64 } %t197, ptr %a200 call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) %t201 = load { ptr, i64, i64 }, ptr %a198 store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2988, i64 6, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.3201, i64 6, i64 0 }, ptr %a204 call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) %t205 = load { ptr, i64, i64 }, ptr %a202 %t206 = load { ptr, i64, i64 }, ptr %a193 @@ -41388,7 +45194,7 @@ logic.end4661: call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) %t210 = load { ptr, i64, i64 }, ptr %a207 store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2989, i64 6, i64 0 }, ptr %a213 + store { ptr, i64, i64 } { ptr @.str.3202, i64 6, i64 0 }, ptr %a213 call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) %t214 = load { ptr, i64, i64 }, ptr %a211 %t215 = load { ptr, i64, i64 }, ptr %a166 @@ -41406,22 +45212,22 @@ logic.end4661: %t227 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } %t225, { ptr, i64, i64 } %t226) store { ptr, i64, i64 } %t227, ptr %a228 %t229 = load i1, ptr %a127 - br i1 %t229, label %then4667, label %endif4669 -then4667: + br i1 %t229, label %then4951, label %endif4953 +then4951: %t230 = load ptr, ptr %a1 %t231 = load { ptr, i64, i64 }, ptr %a228 %t232 = load %S.ast.Type, ptr %a86 %t233 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t230, { ptr, i64, i64 } %t231, %S.ast.Type %t232) store { ptr, i64, i64 } %t233, ptr %a228 - br label %endif4669 -endif4669: + br label %endif4953 +endif4953: %t234 = load ptr, ptr %a1 %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4670, label %ok4671 -panic4670: - call void @finch_panic(ptr @.str.2990, i64 2236, ptr @.str.2991) + br i1 %t235, label %panic4954, label %ok4955 +panic4954: + call void @finch_panic(ptr @.str.3203, i64 2361, ptr @.str.3204) unreachable -ok4671: +ok4955: %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 11 %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 %t238 = load { ptr, i64, i64 }, ptr %a141 @@ -41436,11 +45242,11 @@ ok4671: %t247 = insertvalue %S.gen.Loop %t242, { ptr, i64, i64 } %t246, 1 %t248 = load ptr, ptr %a1 %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic4672, label %ok4673 -panic4672: - call void @finch_panic(ptr @.str.2992, i64 2236, ptr @.str.2993) + br i1 %t249, label %panic4956, label %ok4957 +panic4956: + call void @finch_panic(ptr @.str.3205, i64 2361, ptr @.str.3206) unreachable -ok4673: +ok4957: %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 10 %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 %t252 = load i64, ptr %t251 @@ -41464,13 +45270,13 @@ ok4673: %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 %t267 = load i64, ptr %t266 %t268 = icmp sgt i64 %t267, 0 - br i1 %t268, label %then4674, label %endif4676 -then4674: + br i1 %t268, label %then4958, label %endif4960 +then4958: %t269 = load ptr, ptr %a1 %t270 = load %S.ast.Node, ptr %a2 %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t272 = load { ptr, i64, i64 }, ptr %t271 - %t273 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2994, i64 3, i64 0 }) + %t273 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3207, i64 3, i64 0 }) %t274 = load { ptr, i64, i64 }, ptr %a166 %t275 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t269, %S.ast.Node %t270, { ptr, i64, i64 } %t272, %S.ast.Type %t273, { ptr, i64, i64 } %t274, i1 true) %t276 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 @@ -41479,8 +45285,8 @@ then4674: call void @finch_str_copy(ptr %a279, ptr %a278) %t280 = load { ptr, i64, i64 }, ptr %a279 store { ptr, i64, i64 } %t280, ptr %a264 - br label %endif4676 -endif4676: + br label %endif4960 +endif4960: %t281 = load ptr, ptr %a1 %t282 = load %S.ast.Node, ptr %a2 %t283 = load { ptr, i64, i64 }, ptr %a264 @@ -41492,11 +45298,11 @@ endif4676: %t289 = load { ptr, i64, i64 }, ptr %t288 %t290 = extractvalue { ptr, i64, i64 } %t289, 1 %t291 = icmp uge i64 1, %t290 - br i1 %t291, label %range4677, label %inrange4678 -range4677: - call void @finch_panic_index(ptr @.str.2995, i64 2244, i64 1, i64 %t290) + br i1 %t291, label %range4961, label %inrange4962 +range4961: + call void @finch_panic_index(ptr @.str.3208, i64 2369, i64 1, i64 %t290) unreachable -inrange4678: +inrange4962: %t292 = extractvalue { ptr, i64, i64 } %t289, 0 %t293 = getelementptr inbounds %S.ast.Node, ptr %t292, i64 1 %t294 = load %S.ast.Node, ptr %t293 @@ -41505,20 +45311,20 @@ inrange4678: call void @finch.gen.popScope(ptr %t295) %t296 = load ptr, ptr %a1 %t297 = icmp eq ptr %t296, null - br i1 %t297, label %panic4679, label %ok4680 -panic4679: - call void @finch_panic(ptr @.str.2996, i64 2246, ptr @.str.2997) + br i1 %t297, label %panic4963, label %ok4964 +panic4963: + call void @finch_panic(ptr @.str.3209, i64 2371, ptr @.str.3210) unreachable -ok4680: +ok4964: %t298 = getelementptr inbounds %S.gen.Gen, ptr %t296, i32 0, i32 11 %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 %t300 = load i64, ptr %t299 %t301 = icmp eq i64 %t300, 0 - br i1 %t301, label %panic4681, label %ok4682 -panic4681: - call void @finch_panic(ptr @.str.2998, i64 2246, ptr @.str.2999) + br i1 %t301, label %panic4965, label %ok4966 +panic4965: + call void @finch_panic(ptr @.str.3211, i64 2371, ptr @.str.3212) unreachable -ok4682: +ok4966: %t302 = sub i64 %t300, 1 %t303 = load ptr, ptr %t298 %t304 = getelementptr inbounds %S.gen.Loop, ptr %t303, i64 %t302 @@ -41532,22 +45338,22 @@ ok4682: call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) %t310 = load ptr, ptr %a1 %t311 = load { ptr, i64, i64 }, ptr %a130 - %t312 = call { ptr, i64, i64 } @finch.gen.load(ptr %t310, { ptr, i64, i64 } { ptr @.str.3000, i64 3, i64 0 }, { ptr, i64, i64 } %t311) + %t312 = call { ptr, i64, i64 } @finch.gen.load(ptr %t310, { ptr, i64, i64 } { ptr @.str.3213, i64 3, i64 0 }, { ptr, i64, i64 } %t311) store { ptr, i64, i64 } %t312, ptr %a313 %t314 = load ptr, ptr %a1 %t315 = load ptr, ptr %a1 %t316 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } { ptr @.str.3002, i64 8, i64 0 }, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.3215, i64 8, i64 0 }, ptr %a318 store { ptr, i64, i64 } %t316, ptr %a319 call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) %t320 = load { ptr, i64, i64 }, ptr %a317 store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.3003, i64 3, i64 0 }, ptr %a323 + store { ptr, i64, i64 } { ptr @.str.3216, i64 3, i64 0 }, ptr %a323 call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) %t324 = load { ptr, i64, i64 }, ptr %a321 %t325 = call { ptr, i64, i64 } @finch.gen.op(ptr %t315, { ptr, i64, i64 } %t324) %t326 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.store(ptr %t314, { ptr, i64, i64 } { ptr @.str.3001, i64 3, i64 0 }, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326) + call void @finch.gen.store(ptr %t314, { ptr, i64, i64 } { ptr @.str.3214, i64 3, i64 0 }, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326) %t327 = load ptr, ptr %a1 %t328 = load { ptr, i64, i64 }, ptr %a135 call void @finch.gen.br(ptr %t327, { ptr, i64, i64 } %t328) @@ -41696,88 +45502,88 @@ entry: store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.3004, i64 2257, ptr @.str.3005) + br i1 %t4, label %panic4967, label %ok4968 +panic4967: + call void @finch_panic(ptr @.str.3217, i64 2382, ptr @.str.3218) unreachable -ok4684: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 42 +ok4968: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then4685, label %endif4687 -then4685: + br i1 %t7, label %then4969, label %endif4971 +then4969: %t8 = load ptr, ptr %a1 %t9 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3006, i64 33, i64 0 }) - br label %endif4687 -endif4687: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3219, i64 33, i64 0 }) + br label %endif4971 +endif4971: %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 %t12 = load i64, ptr %t11 %t13 = icmp sgt i64 %t12, 0 - br label %logic.from4688 -logic.from4688: - br i1 %t13, label %logic.rhs4689, label %logic.end4690 -logic.rhs4689: + br label %logic.from4972 +logic.from4972: + br i1 %t13, label %logic.rhs4973, label %logic.end4974 +logic.rhs4973: %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t15 = load { ptr, i64, i64 }, ptr %t14 %t16 = extractvalue { ptr, i64, i64 } %t15, 1 %t17 = icmp uge i64 0, %t16 - br i1 %t17, label %range4691, label %inrange4692 -range4691: - call void @finch_panic_index(ptr @.str.3007, i64 2261, i64 0, i64 %t16) + br i1 %t17, label %range4975, label %inrange4976 +range4975: + call void @finch_panic_index(ptr @.str.3220, i64 2386, i64 0, i64 %t16) unreachable -inrange4692: +inrange4976: %t18 = extractvalue { ptr, i64, i64 } %t15, 0 %t19 = getelementptr inbounds %S.ast.Node, ptr %t18, i64 0 %t20 = getelementptr inbounds %S.ast.Node, ptr %t19, i32 0, i32 0 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.3008, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3221, i64 4, i64 0 }, ptr %a23 %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) %t25 = icmp ne i32 %t24, 0 - br label %logic.rend4693 -logic.rend4693: - br label %logic.end4690 -logic.end4690: - %t26 = phi i1 [ false, %logic.from4688 ], [ %t25, %logic.rend4693 ] - br label %logic.from4694 -logic.from4694: - br i1 %t26, label %logic.rhs4695, label %logic.end4696 -logic.rhs4695: + br label %logic.rend4977 +logic.rend4977: + br label %logic.end4974 +logic.end4974: + %t26 = phi i1 [ false, %logic.from4972 ], [ %t25, %logic.rend4977 ] + br label %logic.from4978 +logic.from4978: + br i1 %t26, label %logic.rhs4979, label %logic.end4980 +logic.rhs4979: %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t28 = load { ptr, i64, i64 }, ptr %t27 %t29 = extractvalue { ptr, i64, i64 } %t28, 1 %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range4697, label %inrange4698 -range4697: - call void @finch_panic_index(ptr @.str.3009, i64 2261, i64 0, i64 %t29) + br i1 %t30, label %range4981, label %inrange4982 +range4981: + call void @finch_panic_index(ptr @.str.3222, i64 2386, i64 0, i64 %t29) unreachable -inrange4698: +inrange4982: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 0 %t33 = getelementptr inbounds %S.ast.Node, ptr %t32, i32 0, i32 1 %t34 = load { ptr, i64, i64 }, ptr %t33 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.3010, i64 5, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.3223, i64 5, i64 0 }, ptr %a36 %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) %t38 = icmp ne i32 %t37, 0 - br label %logic.rend4699 -logic.rend4699: - br label %logic.end4696 -logic.end4696: - %t39 = phi i1 [ false, %logic.from4694 ], [ %t38, %logic.rend4699 ] - br i1 %t39, label %then4700, label %endif4702 -then4700: + br label %logic.rend4983 +logic.rend4983: + br label %logic.end4980 +logic.end4980: + %t39 = phi i1 [ false, %logic.from4978 ], [ %t38, %logic.rend4983 ] + br i1 %t39, label %then4984, label %endif4986 +then4984: %t40 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t41 = load { ptr, i64, i64 }, ptr %t40 %t42 = extractvalue { ptr, i64, i64 } %t41, 1 %t43 = icmp uge i64 0, %t42 - br i1 %t43, label %range4703, label %inrange4704 -range4703: - call void @finch_panic_index(ptr @.str.3011, i64 2262, i64 0, i64 %t42) + br i1 %t43, label %range4987, label %inrange4988 +range4987: + call void @finch_panic_index(ptr @.str.3224, i64 2387, i64 0, i64 %t42) unreachable -inrange4704: +inrange4988: %t44 = extractvalue { ptr, i64, i64 } %t41, 0 %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 0 %t46 = load %S.ast.Node, ptr %t45 @@ -41787,71 +45593,71 @@ inrange4704: store %S.ast.Node %t49, ptr %a50 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic4705, label %ok4706 -panic4705: - call void @finch_panic(ptr @.str.3012, i64 2263, ptr @.str.3013) + br i1 %t52, label %panic4989, label %ok4990 +panic4989: + call void @finch_panic(ptr @.str.3225, i64 2388, ptr @.str.3226) unreachable -ok4706: +ok4990: %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 12 %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 %t55 = load i1, ptr %t54 %t56 = xor i1 %t55, true - br i1 %t56, label %then4707, label %endif4709 -then4707: - store { ptr, i64, i64 } { ptr @.str.3014, i64 1, i64 0 }, ptr %a57 + br i1 %t56, label %then4991, label %endif4993 +then4991: + store { ptr, i64, i64 } { ptr @.str.3227, i64 1, i64 0 }, ptr %a57 %t58 = load ptr, ptr %a1 %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.3015, i64 2265, ptr @.str.3016) + br i1 %t59, label %panic4994, label %ok4995 +panic4994: + call void @finch_panic(ptr @.str.3228, i64 2390, ptr @.str.3229) unreachable -ok4711: +ok4995: %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 12 %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 %t63 = load { ptr, i64, i64 }, ptr %t62 store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3017, i64 4, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.3230, i64 4, i64 0 }, ptr %a65 %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) %t67 = icmp eq i32 %t66, 0 - br i1 %t67, label %then4712, label %endif4714 -then4712: + br i1 %t67, label %then4996, label %endif4998 +then4996: %t68 = load ptr, ptr %a1 %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic4715, label %ok4716 -panic4715: - call void @finch_panic(ptr @.str.3018, i64 2266, ptr @.str.3019) + br i1 %t69, label %panic4999, label %ok5000 +panic4999: + call void @finch_panic(ptr @.str.3231, i64 2391, ptr @.str.3232) unreachable -ok4716: +ok5000: %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 12 %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 %t72 = load %S.ast.Type, ptr %t71 %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3020, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.3233, i64 1, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a57 - br label %endif4714 -endif4714: + br label %endif4998 +endif4998: %t78 = load ptr, ptr %a1 %t79 = load %S.ast.Node, ptr %a50 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic4717, label %ok4718 -panic4717: - call void @finch_panic(ptr @.str.3022, i64 2268, ptr @.str.3023) + br i1 %t81, label %panic5001, label %ok5002 +panic5001: + call void @finch_panic(ptr @.str.3235, i64 2393, ptr @.str.3236) unreachable -ok4718: +ok5002: %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 12 %t83 = getelementptr inbounds %S.gen.FnSig, ptr %t82, i32 0, i32 1 %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.3234, i64 1, i64 0 }, ptr %a86 store { ptr, i64, i64 } %t84, ptr %a87 call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.3024, i64 64, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.3237, i64 64, i64 0 }, ptr %a91 call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) %t92 = load { ptr, i64, i64 }, ptr %a89 %t93 = load { ptr, i64, i64 }, ptr %a57 @@ -41860,44 +45666,44 @@ ok4718: call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3025, i64 1, i64 0 }, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.3238, i64 1, i64 0 }, ptr %a100 call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) %t101 = load { ptr, i64, i64 }, ptr %a98 call void @finch.gen.fail(ptr %t78, %S.ast.Node %t79, { ptr, i64, i64 } %t101) - br label %endif4709 -endif4709: + br label %endif4993 +endif4993: %t102 = load ptr, ptr %a1 %t103 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t102, %S.ast.Node %t103, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3026, i64 5, i64 0 }) + call void @finch.gen.checkArgs(ptr %t102, %S.ast.Node %t103, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3239, i64 5, i64 0 }) %t104 = load ptr, ptr %a1 %t105 = load ptr, ptr %a1 %t106 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 %t107 = load { ptr, i64, i64 }, ptr %t106 %t108 = extractvalue { ptr, i64, i64 } %t107, 1 %t109 = icmp uge i64 0, %t108 - br i1 %t109, label %range4719, label %inrange4720 -range4719: - call void @finch_panic_index(ptr @.str.3027, i64 2271, i64 0, i64 %t108) + br i1 %t109, label %range5003, label %inrange5004 +range5003: + call void @finch_panic_index(ptr @.str.3240, i64 2396, i64 0, i64 %t108) unreachable -inrange4720: +inrange5004: %t110 = extractvalue { ptr, i64, i64 } %t107, 0 %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 0 %t112 = load %S.ast.Node, ptr %t111 %t113 = call %S.gen.Val @finch.gen.expr(ptr %t105, %S.ast.Node %t112) - %t114 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3028, i64 3, i64 0 }) + %t114 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3241, i64 3, i64 0 }) %t115 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 %t116 = load { ptr, i64, i64 }, ptr %t115 %t117 = extractvalue { ptr, i64, i64 } %t116, 1 %t118 = icmp uge i64 0, %t117 - br i1 %t118, label %range4721, label %inrange4722 -range4721: - call void @finch_panic_index(ptr @.str.3029, i64 2271, i64 0, i64 %t117) + br i1 %t118, label %range5005, label %inrange5006 +range5005: + call void @finch_panic_index(ptr @.str.3242, i64 2396, i64 0, i64 %t117) unreachable -inrange4722: +inrange5006: %t119 = extractvalue { ptr, i64, i64 } %t116, 0 %t120 = getelementptr inbounds %S.ast.Node, ptr %t119, i64 0 %t121 = load %S.ast.Node, ptr %t120 - %t122 = call %S.gen.Val @finch.gen.coerce(ptr %t104, %S.gen.Val %t113, %S.ast.Type %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3030, i64 17, i64 0 }) + %t122 = call %S.gen.Val @finch.gen.coerce(ptr %t104, %S.gen.Val %t113, %S.ast.Type %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3243, i64 17, i64 0 }) store %S.gen.Val %t122, ptr %a123 %t124 = load ptr, ptr %a1 %t125 = load %S.gen.Val, ptr %a123 @@ -41909,40 +45715,40 @@ inrange4722: %t130 = load ptr, ptr %a1 %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4723, label %ok4724 -panic4723: - call void @finch_panic(ptr @.str.3032, i64 2274, ptr @.str.3033) + br i1 %t132, label %panic5007, label %ok5008 +panic5007: + call void @finch_panic(ptr @.str.3245, i64 2399, ptr @.str.3246) unreachable -ok4724: +ok5008: %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 12 %t134 = load %S.gen.FnSig, ptr %t133 %t135 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t130, %S.gen.FnSig %t134) - store { ptr, i64, i64 } { ptr @.str.3031, i64 4, i64 0 }, ptr %a137 + store { ptr, i64, i64 } { ptr @.str.3244, i64 4, i64 0 }, ptr %a137 store { ptr, i64, i64 } %t135, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3034, i64 1, i64 0 }, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.3247, i64 1, i64 0 }, ptr %a142 call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) %t143 = load { ptr, i64, i64 }, ptr %a140 %t144 = load ptr, ptr %a1 %t145 = load ptr, ptr %a1 %t146 = load ptr, ptr %a1 %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic4725, label %ok4726 -panic4725: - call void @finch_panic(ptr @.str.3036, i64 2274, ptr @.str.3037) + br i1 %t147, label %panic5009, label %ok5010 +panic5009: + call void @finch_panic(ptr @.str.3249, i64 2399, ptr @.str.3250) unreachable -ok4726: +ok5010: %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 12 %t149 = load %S.gen.FnSig, ptr %t148 %t150 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t145, %S.gen.FnSig %t149) - store { ptr, i64, i64 } { ptr @.str.3035, i64 12, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3248, i64 12, i64 0 }, ptr %a152 store { ptr, i64, i64 } %t150, ptr %a153 call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) %t154 = load { ptr, i64, i64 }, ptr %a151 store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3038, i64 36, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.3251, i64 36, i64 0 }, ptr %a157 call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) %t158 = load { ptr, i64, i64 }, ptr %a155 %t159 = load { ptr, i64, i64 }, ptr %a127 @@ -41951,7 +45757,7 @@ ok4726: call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) %t163 = load { ptr, i64, i64 }, ptr %a160 store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.3039, i64 3, i64 0 }, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.3252, i64 3, i64 0 }, ptr %a166 call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) %t167 = load { ptr, i64, i64 }, ptr %a164 %t168 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t167) @@ -41962,157 +45768,157 @@ ok4726: call void @finch.gen.emit(ptr %t129, { ptr, i64, i64 } %t172) %t173 = load ptr, ptr %a1 %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4727, label %ok4728 -panic4727: - call void @finch_panic(ptr @.str.3040, i64 2275, ptr @.str.3041) + br i1 %t174, label %panic5011, label %ok5012 +panic5011: + call void @finch_panic(ptr @.str.3253, i64 2400, ptr @.str.3254) unreachable -ok4728: +ok5012: %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 9 store i1 true, ptr %t175 ret void -endif4702: +endif4986: %t176 = load ptr, ptr %a1 %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.3042, i64 2278, ptr @.str.3043) + br i1 %t177, label %panic5013, label %ok5014 +panic5013: + call void @finch_panic(ptr @.str.3255, i64 2403, ptr @.str.3256) unreachable -ok4730: +ok5014: %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 12 %t179 = getelementptr inbounds %S.gen.FnSig, ptr %t178, i32 0, i32 12 %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 %t181 = load { ptr, i64, i64 }, ptr %t180 store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.3044, i64 4, i64 0 }, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.3257, i64 4, i64 0 }, ptr %a183 %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) %t185 = icmp ne i32 %t184, 0 - br i1 %t185, label %then4731, label %endif4733 -then4731: + br i1 %t185, label %then5015, label %endif5017 +then5015: %t186 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1 %t188 = load i64, ptr %t187 %t189 = icmp sgt i64 %t188, 0 - br i1 %t189, label %then4734, label %endif4736 -then4734: + br i1 %t189, label %then5018, label %endif5020 +then5018: %t190 = load ptr, ptr %a1 %t191 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t192 = load { ptr, i64, i64 }, ptr %t191 %t193 = extractvalue { ptr, i64, i64 } %t192, 1 %t194 = icmp uge i64 0, %t193 - br i1 %t194, label %range4737, label %inrange4738 -range4737: - call void @finch_panic_index(ptr @.str.3045, i64 2280, i64 0, i64 %t193) + br i1 %t194, label %range5021, label %inrange5022 +range5021: + call void @finch_panic_index(ptr @.str.3258, i64 2405, i64 0, i64 %t193) unreachable -inrange4738: +inrange5022: %t195 = extractvalue { ptr, i64, i64 } %t192, 0 %t196 = getelementptr inbounds %S.ast.Node, ptr %t195, i64 0 %t197 = load %S.ast.Node, ptr %t196 %t198 = load ptr, ptr %a1 %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.3047, i64 2280, ptr @.str.3048) + br i1 %t199, label %panic5023, label %ok5024 +panic5023: + call void @finch_panic(ptr @.str.3260, i64 2405, ptr @.str.3261) unreachable -ok4740: +ok5024: %t200 = getelementptr inbounds %S.gen.Gen, ptr %t198, i32 0, i32 12 %t201 = getelementptr inbounds %S.gen.FnSig, ptr %t200, i32 0, i32 1 %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } { ptr @.str.3046, i64 1, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.3259, i64 1, i64 0 }, ptr %a204 store { ptr, i64, i64 } %t202, ptr %a205 call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3049, i64 46, i64 0 }, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.3262, i64 46, i64 0 }, ptr %a209 call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) %t210 = load { ptr, i64, i64 }, ptr %a207 call void @finch.gen.fail(ptr %t190, %S.ast.Node %t197, { ptr, i64, i64 } %t210) - br label %endif4736 -endif4736: + br label %endif5020 +endif5020: %t211 = load ptr, ptr %a1 call void @finch.gen.unwind(ptr %t211, i64 0) %t212 = load ptr, ptr %a1 %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic4741, label %ok4742 -panic4741: - call void @finch_panic(ptr @.str.3050, i64 2283, ptr @.str.3051) + br i1 %t213, label %panic5025, label %ok5026 +panic5025: + call void @finch_panic(ptr @.str.3263, i64 2408, ptr @.str.3264) unreachable -ok4742: +ok5026: %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 12 %t215 = getelementptr inbounds %S.gen.FnSig, ptr %t214, i32 0, i32 9 %t216 = load i1, ptr %t215 - br i1 %t216, label %then4743, label %else4744 -then4743: + br i1 %t216, label %then5027, label %else5028 +then5027: %t217 = load ptr, ptr %a1 %t218 = load ptr, ptr %a1 %t219 = load ptr, ptr %a1 %t220 = icmp eq ptr %t219, null - br i1 %t220, label %panic4746, label %ok4747 -panic4746: - call void @finch_panic(ptr @.str.3053, i64 2284, ptr @.str.3054) + br i1 %t220, label %panic5030, label %ok5031 +panic5030: + call void @finch_panic(ptr @.str.3266, i64 2409, ptr @.str.3267) unreachable -ok4747: +ok5031: %t221 = getelementptr inbounds %S.gen.Gen, ptr %t219, i32 0, i32 12 %t222 = load %S.gen.FnSig, ptr %t221 %t223 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t218, %S.gen.FnSig %t222) - store { ptr, i64, i64 } { ptr @.str.3052, i64 4, i64 0 }, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.3265, i64 4, i64 0 }, ptr %a225 store { ptr, i64, i64 } %t223, ptr %a226 call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) %t227 = load { ptr, i64, i64 }, ptr %a224 store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.3055, i64 53, i64 0 }, ptr %a230 + store { ptr, i64, i64 } { ptr @.str.3268, i64 53, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 call void @finch.gen.emit(ptr %t217, { ptr, i64, i64 } %t231) - br label %endif4745 -else4744: + br label %endif5029 +else5028: %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3056, i64 8, i64 0 }) - br label %endif4745 -endif4745: + call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.3269, i64 8, i64 0 }) + br label %endif5029 +endif5029: %t233 = load ptr, ptr %a1 %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic4748, label %ok4749 -panic4748: - call void @finch_panic(ptr @.str.3057, i64 2288, ptr @.str.3058) + br i1 %t234, label %panic5032, label %ok5033 +panic5032: + call void @finch_panic(ptr @.str.3270, i64 2413, ptr @.str.3271) unreachable -ok4749: +ok5033: %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 9 store i1 true, ptr %t235 ret void -endif4733: +endif5017: %t236 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 %t238 = load i64, ptr %t237 %t239 = icmp eq i64 %t238, 0 - br i1 %t239, label %then4750, label %endif4752 -then4750: + br i1 %t239, label %then5034, label %endif5036 +then5034: %t240 = load ptr, ptr %a1 %t241 = load %S.ast.Node, ptr %a2 %t242 = load ptr, ptr %a1 %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4753, label %ok4754 -panic4753: - call void @finch_panic(ptr @.str.3060, i64 2292, ptr @.str.3061) + br i1 %t243, label %panic5037, label %ok5038 +panic5037: + call void @finch_panic(ptr @.str.3273, i64 2417, ptr @.str.3274) unreachable -ok4754: +ok5038: %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 12 %t245 = getelementptr inbounds %S.gen.FnSig, ptr %t244, i32 0, i32 1 %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.3059, i64 1, i64 0 }, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.3272, i64 1, i64 0 }, ptr %a248 store { ptr, i64, i64 } %t246, ptr %a249 call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) %t250 = load { ptr, i64, i64 }, ptr %a247 store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3062, i64 14, i64 0 }, ptr %a253 + store { ptr, i64, i64 } { ptr @.str.3275, i64 14, i64 0 }, ptr %a253 call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) %t254 = load { ptr, i64, i64 }, ptr %a251 %t255 = load ptr, ptr %a1 %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4755, label %ok4756 -panic4755: - call void @finch_panic(ptr @.str.3063, i64 2292, ptr @.str.3064) + br i1 %t256, label %panic5039, label %ok5040 +panic5039: + call void @finch_panic(ptr @.str.3276, i64 2417, ptr @.str.3277) unreachable -ok4756: +ok5040: %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 12 %t258 = getelementptr inbounds %S.gen.FnSig, ptr %t257, i32 0, i32 12 %t259 = load %S.ast.Type, ptr %t258 @@ -42122,40 +45928,40 @@ ok4756: call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) %t264 = load { ptr, i64, i64 }, ptr %a261 call void @finch.gen.fail(ptr %t240, %S.ast.Node %t241, { ptr, i64, i64 } %t264) - br label %endif4752 -endif4752: + br label %endif5036 +endif5036: %t265 = load ptr, ptr %a1 %t266 = load ptr, ptr %a1 %t267 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t268 = load { ptr, i64, i64 }, ptr %t267 %t269 = extractvalue { ptr, i64, i64 } %t268, 1 %t270 = icmp uge i64 0, %t269 - br i1 %t270, label %range4757, label %inrange4758 -range4757: - call void @finch_panic_index(ptr @.str.3065, i64 2294, i64 0, i64 %t269) + br i1 %t270, label %range5041, label %inrange5042 +range5041: + call void @finch_panic_index(ptr @.str.3278, i64 2419, i64 0, i64 %t269) unreachable -inrange4758: +inrange5042: %t271 = extractvalue { ptr, i64, i64 } %t268, 0 %t272 = getelementptr inbounds %S.ast.Node, ptr %t271, i64 0 %t273 = load %S.ast.Node, ptr %t272 %t274 = load ptr, ptr %a1 %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4759, label %ok4760 -panic4759: - call void @finch_panic(ptr @.str.3066, i64 2294, ptr @.str.3067) + br i1 %t275, label %panic5043, label %ok5044 +panic5043: + call void @finch_panic(ptr @.str.3279, i64 2419, ptr @.str.3280) unreachable -ok4760: +ok5044: %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 12 %t277 = getelementptr inbounds %S.gen.FnSig, ptr %t276, i32 0, i32 12 %t278 = load %S.ast.Type, ptr %t277 %t279 = call %S.gen.Val @finch.gen.exprWant(ptr %t266, %S.ast.Node %t273, %S.ast.Type %t278) %t280 = load ptr, ptr %a1 %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.3068, i64 2294, ptr @.str.3069) + br i1 %t281, label %panic5045, label %ok5046 +panic5045: + call void @finch_panic(ptr @.str.3281, i64 2419, ptr @.str.3282) unreachable -ok4762: +ok5046: %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 %t283 = getelementptr inbounds %S.gen.FnSig, ptr %t282, i32 0, i32 12 %t284 = load %S.ast.Type, ptr %t283 @@ -42163,15 +45969,15 @@ ok4762: %t286 = load { ptr, i64, i64 }, ptr %t285 %t287 = extractvalue { ptr, i64, i64 } %t286, 1 %t288 = icmp uge i64 0, %t287 - br i1 %t288, label %range4763, label %inrange4764 -range4763: - call void @finch_panic_index(ptr @.str.3070, i64 2294, i64 0, i64 %t287) + br i1 %t288, label %range5047, label %inrange5048 +range5047: + call void @finch_panic_index(ptr @.str.3283, i64 2419, i64 0, i64 %t287) unreachable -inrange4764: +inrange5048: %t289 = extractvalue { ptr, i64, i64 } %t286, 0 %t290 = getelementptr inbounds %S.ast.Node, ptr %t289, i64 0 %t291 = load %S.ast.Node, ptr %t290 - %t292 = call %S.gen.Val @finch.gen.coerce(ptr %t265, %S.gen.Val %t279, %S.ast.Type %t284, %S.ast.Node %t291, { ptr, i64, i64 } { ptr @.str.3071, i64 18, i64 0 }) + %t292 = call %S.gen.Val @finch.gen.coerce(ptr %t265, %S.gen.Val %t279, %S.ast.Type %t284, %S.ast.Node %t291, { ptr, i64, i64 } { ptr @.str.3284, i64 18, i64 0 }) store %S.gen.Val %t292, ptr %a293 %t294 = getelementptr inbounds %S.gen.Val, ptr %a293, i32 0, i32 0 %t295 = load { ptr, i64, i64 }, ptr %t294 @@ -42184,31 +45990,31 @@ inrange4764: %t302 = load { ptr, i64, i64 }, ptr %t301 %t303 = extractvalue { ptr, i64, i64 } %t302, 1 %t304 = icmp uge i64 0, %t303 - br i1 %t304, label %range4765, label %inrange4766 -range4765: - call void @finch_panic_index(ptr @.str.3072, i64 2298, i64 0, i64 %t303) + br i1 %t304, label %range5049, label %inrange5050 +range5049: + call void @finch_panic_index(ptr @.str.3285, i64 2423, i64 0, i64 %t303) unreachable -inrange4766: +inrange5050: %t305 = extractvalue { ptr, i64, i64 } %t302, 0 %t306 = getelementptr inbounds %S.ast.Node, ptr %t305, i64 0 %t307 = getelementptr inbounds %S.ast.Node, ptr %t306, i32 0, i32 0 %t308 = load { ptr, i64, i64 }, ptr %t307 store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3073, i64 3, i64 0 }, ptr %a310 + store { ptr, i64, i64 } { ptr @.str.3286, i64 3, i64 0 }, ptr %a310 %t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310) %t312 = icmp ne i32 %t311, 0 - br i1 %t312, label %then4767, label %endif4769 -then4767: + br i1 %t312, label %then5051, label %endif5053 +then5051: %t313 = load ptr, ptr %a1 %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t315 = load { ptr, i64, i64 }, ptr %t314 %t316 = extractvalue { ptr, i64, i64 } %t315, 1 %t317 = icmp uge i64 0, %t316 - br i1 %t317, label %range4770, label %inrange4771 -range4770: - call void @finch_panic_index(ptr @.str.3074, i64 2299, i64 0, i64 %t316) + br i1 %t317, label %range5054, label %inrange5055 +range5054: + call void @finch_panic_index(ptr @.str.3287, i64 2424, i64 0, i64 %t316) unreachable -inrange4771: +inrange5055: %t318 = extractvalue { ptr, i64, i64 } %t315, 0 %t319 = getelementptr inbounds %S.ast.Node, ptr %t318, i64 0 %t320 = getelementptr inbounds %S.ast.Node, ptr %t319, i32 0, i32 1 @@ -42217,63 +46023,63 @@ inrange4771: store i64 %t322, ptr %a323 %t324 = load i64, ptr %a323 %t325 = icmp sge i64 %t324, 0 - br label %logic.from4772 -logic.from4772: - br i1 %t325, label %logic.rhs4773, label %logic.end4774 -logic.rhs4773: + br label %logic.from5056 +logic.from5056: + br i1 %t325, label %logic.rhs5057, label %logic.end5058 +logic.rhs5057: %t326 = load i64, ptr %a323 %t327 = sdiv i64 %t326, 100000 %t328 = icmp sgt i64 %t327, 0 - br label %logic.rend4775 -logic.rend4775: - br label %logic.end4774 -logic.end4774: - %t329 = phi i1 [ false, %logic.from4772 ], [ %t328, %logic.rend4775 ] + br label %logic.rend5059 +logic.rend5059: + br label %logic.end5058 +logic.end5058: + %t329 = phi i1 [ false, %logic.from5056 ], [ %t328, %logic.rend5059 ] store i1 %t329, ptr %a300 - br label %endif4769 -endif4769: + br label %endif5053 +endif5053: %t330 = load i1, ptr %a300 %t331 = xor i1 %t330, true - br i1 %t331, label %then4776, label %endif4778 -then4776: + br i1 %t331, label %then5060, label %endif5062 +then5060: %t332 = load ptr, ptr %a1 %t333 = load %S.gen.Val, ptr %a293 %t334 = call { ptr, i64, i64 } @finch.gen.own(ptr %t332, %S.gen.Val %t333) store { ptr, i64, i64 } %t334, ptr %a299 - br label %endif4778 -endif4778: + br label %endif5062 +endif5062: %t335 = load ptr, ptr %a1 call void @finch.gen.unwind(ptr %t335, i64 0) %t336 = load ptr, ptr %a1 %t337 = icmp eq ptr %t336, null - br i1 %t337, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.3075, i64 2306, ptr @.str.3076) + br i1 %t337, label %panic5063, label %ok5064 +panic5063: + call void @finch_panic(ptr @.str.3288, i64 2431, ptr @.str.3289) unreachable -ok4780: +ok5064: %t338 = getelementptr inbounds %S.gen.Gen, ptr %t336, i32 0, i32 12 %t339 = getelementptr inbounds %S.gen.FnSig, ptr %t338, i32 0, i32 9 %t340 = load i1, ptr %t339 - br i1 %t340, label %then4781, label %else4782 -then4781: + br i1 %t340, label %then5065, label %else5066 +then5065: %t341 = load ptr, ptr %a1 %t342 = load ptr, ptr %a1 %t343 = load ptr, ptr %a1 %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4784, label %ok4785 -panic4784: - call void @finch_panic(ptr @.str.3078, i64 2307, ptr @.str.3079) + br i1 %t344, label %panic5068, label %ok5069 +panic5068: + call void @finch_panic(ptr @.str.3291, i64 2432, ptr @.str.3292) unreachable -ok4785: +ok5069: %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 12 %t346 = load %S.gen.FnSig, ptr %t345 %t347 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t342, %S.gen.FnSig %t346) - store { ptr, i64, i64 } { ptr @.str.3077, i64 12, i64 0 }, ptr %a349 + store { ptr, i64, i64 } { ptr @.str.3290, i64 12, i64 0 }, ptr %a349 store { ptr, i64, i64 } %t347, ptr %a350 call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) %t351 = load { ptr, i64, i64 }, ptr %a348 store { ptr, i64, i64 } %t351, ptr %a353 - store { ptr, i64, i64 } { ptr @.str.3080, i64 28, i64 0 }, ptr %a354 + store { ptr, i64, i64 } { ptr @.str.3293, i64 28, i64 0 }, ptr %a354 call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) %t355 = load { ptr, i64, i64 }, ptr %a352 %t356 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t355) @@ -42282,20 +46088,20 @@ ok4785: %t359 = load ptr, ptr %a1 %t360 = load ptr, ptr %a1 %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic4786, label %ok4787 -panic4786: - call void @finch_panic(ptr @.str.3082, i64 2308, ptr @.str.3083) + br i1 %t361, label %panic5070, label %ok5071 +panic5070: + call void @finch_panic(ptr @.str.3295, i64 2433, ptr @.str.3296) unreachable -ok4787: +ok5071: %t362 = getelementptr inbounds %S.gen.Gen, ptr %t360, i32 0, i32 12 %t363 = load %S.gen.FnSig, ptr %t362 %t364 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t359, %S.gen.FnSig %t363) - store { ptr, i64, i64 } { ptr @.str.3081, i64 12, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.3294, i64 12, i64 0 }, ptr %a366 store { ptr, i64, i64 } %t364, ptr %a367 call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) %t368 = load { ptr, i64, i64 }, ptr %a365 store { ptr, i64, i64 } %t368, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.3084, i64 1, i64 0 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.3297, i64 1, i64 0 }, ptr %a371 call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) %t372 = load { ptr, i64, i64 }, ptr %a369 %t373 = load { ptr, i64, i64 }, ptr %a357 @@ -42304,17 +46110,17 @@ ok4787: call void @finch_str_concat(ptr %a374, ptr %a375, ptr %a376) %t377 = load { ptr, i64, i64 }, ptr %a374 store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.3085, i64 2, i64 0 }, ptr %a380 + store { ptr, i64, i64 } { ptr @.str.3298, i64 2, i64 0 }, ptr %a380 call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) %t381 = load { ptr, i64, i64 }, ptr %a378 %t382 = load ptr, ptr %a1 %t383 = load ptr, ptr %a1 %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4788, label %ok4789 -panic4788: - call void @finch_panic(ptr @.str.3086, i64 2308, ptr @.str.3087) + br i1 %t384, label %panic5072, label %ok5073 +panic5072: + call void @finch_panic(ptr @.str.3299, i64 2433, ptr @.str.3300) unreachable -ok4789: +ok5073: %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 12 %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 12 %t387 = load %S.ast.Type, ptr %t386 @@ -42324,7 +46130,7 @@ ok4789: call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) %t392 = load { ptr, i64, i64 }, ptr %a389 store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.3088, i64 1, i64 0 }, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.3301, i64 1, i64 0 }, ptr %a395 call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) %t396 = load { ptr, i64, i64 }, ptr %a393 %t397 = load { ptr, i64, i64 }, ptr %a299 @@ -42333,7 +46139,7 @@ ok4789: call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) %t401 = load { ptr, i64, i64 }, ptr %a398 store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.3089, i64 3, i64 0 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.3302, i64 3, i64 0 }, ptr %a404 call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) %t405 = load { ptr, i64, i64 }, ptr %a402 %t406 = call { ptr, i64, i64 } @finch.gen.op(ptr %t358, { ptr, i64, i64 } %t405) @@ -42342,20 +46148,20 @@ ok4789: %t409 = load ptr, ptr %a1 %t410 = load ptr, ptr %a1 %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic4790, label %ok4791 -panic4790: - call void @finch_panic(ptr @.str.3091, i64 2309, ptr @.str.3092) + br i1 %t411, label %panic5074, label %ok5075 +panic5074: + call void @finch_panic(ptr @.str.3304, i64 2434, ptr @.str.3305) unreachable -ok4791: +ok5075: %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 12 %t413 = load %S.gen.FnSig, ptr %t412 %t414 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t409, %S.gen.FnSig %t413) - store { ptr, i64, i64 } { ptr @.str.3090, i64 4, i64 0 }, ptr %a416 + store { ptr, i64, i64 } { ptr @.str.3303, i64 4, i64 0 }, ptr %a416 store { ptr, i64, i64 } %t414, ptr %a417 call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) %t418 = load { ptr, i64, i64 }, ptr %a415 store { ptr, i64, i64 } %t418, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.3093, i64 1, i64 0 }, ptr %a421 + store { ptr, i64, i64 } { ptr @.str.3306, i64 1, i64 0 }, ptr %a421 call void @finch_str_concat(ptr %a419, ptr %a420, ptr %a421) %t422 = load { ptr, i64, i64 }, ptr %a419 %t423 = load { ptr, i64, i64 }, ptr %a407 @@ -42364,27 +46170,27 @@ ok4791: call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) %t427 = load { ptr, i64, i64 }, ptr %a424 call void @finch.gen.emit(ptr %t408, { ptr, i64, i64 } %t427) - br label %endif4783 -else4782: + br label %endif5067 +else5066: %t428 = load ptr, ptr %a1 %t429 = load ptr, ptr %a1 %t430 = load ptr, ptr %a1 %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4792, label %ok4793 -panic4792: - call void @finch_panic(ptr @.str.3095, i64 2311, ptr @.str.3096) + br i1 %t431, label %panic5076, label %ok5077 +panic5076: + call void @finch_panic(ptr @.str.3308, i64 2436, ptr @.str.3309) unreachable -ok4793: +ok5077: %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 12 %t433 = getelementptr inbounds %S.gen.FnSig, ptr %t432, i32 0, i32 12 %t434 = load %S.ast.Type, ptr %t433 %t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t434) - store { ptr, i64, i64 } { ptr @.str.3094, i64 4, i64 0 }, ptr %a437 + store { ptr, i64, i64 } { ptr @.str.3307, i64 4, i64 0 }, ptr %a437 store { ptr, i64, i64 } %t435, ptr %a438 call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) %t439 = load { ptr, i64, i64 }, ptr %a436 store { ptr, i64, i64 } %t439, ptr %a441 - store { ptr, i64, i64 } { ptr @.str.3097, i64 1, i64 0 }, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.3310, i64 1, i64 0 }, ptr %a442 call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) %t443 = load { ptr, i64, i64 }, ptr %a440 %t444 = load { ptr, i64, i64 }, ptr %a299 @@ -42393,15 +46199,15 @@ ok4793: call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) %t448 = load { ptr, i64, i64 }, ptr %a445 call void @finch.gen.emit(ptr %t428, { ptr, i64, i64 } %t448) - br label %endif4783 -endif4783: + br label %endif5067 +endif5067: %t449 = load ptr, ptr %a1 %t450 = icmp eq ptr %t449, null - br i1 %t450, label %panic4794, label %ok4795 -panic4794: - call void @finch_panic(ptr @.str.3098, i64 2313, ptr @.str.3099) + br i1 %t450, label %panic5078, label %ok5079 +panic5078: + call void @finch_panic(ptr @.str.3311, i64 2438, ptr @.str.3312) unreachable -ok4795: +ok5079: %t451 = getelementptr inbounds %S.gen.Gen, ptr %t449, i32 0, i32 9 store i1 true, ptr %t451 ret void @@ -42430,21 +46236,21 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %t4 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 0, %t6 - br i1 %t7, label %range4796, label %inrange4797 -range4796: - call void @finch_panic_index(ptr @.str.3101, i64 2325, i64 0, i64 %t6) + br i1 %t7, label %range5080, label %inrange5081 +range5080: + call void @finch_panic_index(ptr @.str.3314, i64 2450, i64 0, i64 %t6) unreachable -inrange4797: +inrange5081: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Type, ptr %t8, i64 0 %t10 = load %S.ast.Type, ptr %t9 %t11 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t10) - store { ptr, i64, i64 } { ptr @.str.3100, i64 7, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3313, i64 7, i64 0 }, ptr %a13 store { ptr, i64, i64 } %t11, ptr %a14 call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3102, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3315, i64 2, i64 0 }, ptr %a18 call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) %t19 = load { ptr, i64, i64 }, ptr %a16 %t20 = load ptr, ptr %a1 @@ -42452,11 +46258,11 @@ inrange4797: %t22 = load { ptr, i64, i64 }, ptr %t21 %t23 = extractvalue { ptr, i64, i64 } %t22, 1 %t24 = icmp uge i64 1, %t23 - br i1 %t24, label %range4798, label %inrange4799 -range4798: - call void @finch_panic_index(ptr @.str.3103, i64 2325, i64 1, i64 %t23) + br i1 %t24, label %range5082, label %inrange5083 +range5082: + call void @finch_panic_index(ptr @.str.3316, i64 2450, i64 1, i64 %t23) unreachable -inrange4799: +inrange5083: %t25 = extractvalue { ptr, i64, i64 } %t22, 0 %t26 = getelementptr inbounds %S.ast.Type, ptr %t25, i64 1 %t27 = load %S.ast.Type, ptr %t26 @@ -42466,7 +46272,7 @@ inrange4799: call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3104, i64 2, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3317, i64 2, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 ret { ptr, i64, i64 } %t36 @@ -42487,12 +46293,12 @@ entry: %t3 = load ptr, ptr %a1 %t4 = load %S.ast.Type, ptr %a2 %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3105, i64 29, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3318, i64 29, i64 0 }, ptr %a7 store { ptr, i64, i64 } %t5, ptr %a8 call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) %t9 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.3106, i64 26, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3319, i64 26, i64 0 }, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 ret { ptr, i64, i64 } %t13 @@ -42541,12 +46347,12 @@ entry: %t7 = load ptr, ptr %a1 %t8 = load %S.ast.Type, ptr %a3 %t9 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t7, %S.ast.Type %t8) - store { ptr, i64, i64 } { ptr @.str.3108, i64 23, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3321, i64 23, i64 0 }, ptr %a11 store { ptr, i64, i64 } %t9, ptr %a12 call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3109, i64 6, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3322, i64 6, i64 0 }, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 %t18 = load { ptr, i64, i64 }, ptr %a2 @@ -42555,22 +46361,22 @@ entry: call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.3110, i64 14, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3323, i64 14, i64 0 }, ptr %a25 call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) %t26 = load { ptr, i64, i64 }, ptr %a23 %t27 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t26) - %t28 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3107, i64 3, i64 0 }, { ptr, i64, i64 } %t27) + %t28 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3320, i64 3, i64 0 }, { ptr, i64, i64 } %t27) store { ptr, i64, i64 } %t28, ptr %a29 %t30 = load ptr, ptr %a1 %t31 = load ptr, ptr %a1 %t32 = load %S.ast.Type, ptr %a3 %t33 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t31, %S.ast.Type %t32) - store { ptr, i64, i64 } { ptr @.str.3111, i64 23, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3324, i64 23, i64 0 }, ptr %a35 store { ptr, i64, i64 } %t33, ptr %a36 call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3112, i64 6, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.3325, i64 6, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = load { ptr, i64, i64 }, ptr %a29 @@ -42579,7 +46385,7 @@ entry: call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.3113, i64 6, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3326, i64 6, i64 0 }, ptr %a49 call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) %t50 = load { ptr, i64, i64 }, ptr %a47 %t51 = load { ptr, i64, i64 }, ptr %a4 @@ -42621,12 +46427,12 @@ entry: %t6 = load ptr, ptr %a1 %t7 = load %S.ast.Type, ptr %a3 %t8 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t6, %S.ast.Type %t7) - store { ptr, i64, i64 } { ptr @.str.3114, i64 23, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.3327, i64 23, i64 0 }, ptr %a10 store { ptr, i64, i64 } %t8, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3115, i64 6, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3328, i64 6, i64 0 }, ptr %a15 call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) %t16 = load { ptr, i64, i64 }, ptr %a13 %t17 = load { ptr, i64, i64 }, ptr %a2 @@ -42635,7 +46441,7 @@ entry: call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3116, i64 13, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3329, i64 13, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 %t26 = load i64, ptr %a4 @@ -42689,36 +46495,36 @@ entry: store { ptr, i64, i64 } %p1, ptr %a2 store { ptr, i64, i64 } %p2, ptr %a3 store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3117, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.3330, i64 1, i64 0 }, ptr %a5 %t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 %t7 = load { ptr, i64, i64 }, ptr %t6 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 0, %t8 - br i1 %t9, label %range4800, label %inrange4801 -range4800: - call void @finch_panic_index(ptr @.str.3118, i64 2345, i64 0, i64 %t8) + br i1 %t9, label %range5084, label %inrange5085 +range5084: + call void @finch_panic_index(ptr @.str.3331, i64 2470, i64 0, i64 %t8) unreachable -inrange4801: +inrange5085: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = getelementptr inbounds %S.ast.Type, ptr %t11, i32 0, i32 0 %t13 = load { ptr, i64, i64 }, ptr %t12 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3119, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3332, i64 3, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp ne i32 %t16, 0 - br i1 %t17, label %then4802, label %endif4804 -then4802: - store { ptr, i64, i64 } { ptr @.str.3120, i64 1, i64 0 }, ptr %a5 - br label %endif4804 -endif4804: + br i1 %t17, label %then5086, label %endif5088 +then5086: + store { ptr, i64, i64 } { ptr @.str.3333, i64 1, i64 0 }, ptr %a5 + br label %endif5088 +endif5088: %t18 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3121, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.3334, i64 4, i64 0 }, ptr %a20 store { ptr, i64, i64 } %t18, ptr %a21 call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) %t22 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.3122, i64 6, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3335, i64 6, i64 0 }, ptr %a25 call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) %t26 = load { ptr, i64, i64 }, ptr %a23 %t27 = load { ptr, i64, i64 }, ptr %a3 @@ -42727,7 +46533,7 @@ endif4804: call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t31, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.3123, i64 6, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.3336, i64 6, i64 0 }, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 %t36 = load ptr, ptr %a1 @@ -42738,7 +46544,7 @@ endif4804: call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.3124, i64 6, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.3337, i64 6, i64 0 }, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 %t47 = load ptr, ptr %a1 @@ -42746,11 +46552,11 @@ endif4804: %t49 = load { ptr, i64, i64 }, ptr %t48 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 0, %t50 - br i1 %t51, label %range4805, label %inrange4806 -range4805: - call void @finch_panic_index(ptr @.str.3125, i64 2348, i64 0, i64 %t50) + br i1 %t51, label %range5089, label %inrange5090 +range5089: + call void @finch_panic_index(ptr @.str.3338, i64 2473, i64 0, i64 %t50) unreachable -inrange4806: +inrange5090: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds %S.ast.Type, ptr %t52, i64 0 %t54 = load %S.ast.Type, ptr %t53 @@ -42760,7 +46566,7 @@ inrange4806: call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.3126, i64 6, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.3339, i64 6, i64 0 }, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 %t64 = load { ptr, i64, i64 }, ptr %a5 @@ -42793,12 +46599,12 @@ entry: %t8 = load { ptr, i64, i64 }, ptr %a3 %t9 = load %S.ast.Type, ptr %a4 %t10 = call { ptr, i64, i64 } @finch.gen.mapArgs(ptr %t6, { ptr, i64, i64 } %t7, { ptr, i64, i64 } %t8, %S.ast.Type %t9) - store { ptr, i64, i64 } { ptr @.str.3127, i64 25, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3340, i64 25, i64 0 }, ptr %a12 store { ptr, i64, i64 } %t10, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3128, i64 1, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 %t19 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t18) @@ -42822,23 +46628,23 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3129, i64 6, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3342, i64 6, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br label %logic.from4807 -logic.from4807: - br i1 %t9, label %logic.rhs4808, label %logic.end4809 -logic.rhs4808: + br label %logic.from5091 +logic.from5091: + br i1 %t9, label %logic.rhs5092, label %logic.end5093 +logic.rhs5092: %t10 = load ptr, ptr %a1 %t11 = load %S.ast.Type, ptr %a2 %t12 = call i1 @finch.gen.hasDefaults(ptr %t10, %S.ast.Type %t11) - br label %logic.rend4810 -logic.rend4810: - br label %logic.end4809 -logic.end4809: - %t13 = phi i1 [ false, %logic.from4807 ], [ %t12, %logic.rend4810 ] - br i1 %t13, label %then4811, label %endif4813 -then4811: + br label %logic.rend5094 +logic.rend5094: + br label %logic.end5093 +logic.end5093: + %t13 = phi i1 [ false, %logic.from5091 ], [ %t12, %logic.rend5094 ] + br i1 %t13, label %then5095, label %endif5097 +then5095: store { ptr, i64, i64 } zeroinitializer, ptr %a14 store { ptr, i64, i64 } zeroinitializer, ptr %a15 %t16 = load ptr, ptr %a1 @@ -42857,7 +46663,7 @@ then4811: call void @finch_str_copy(ptr %a29, ptr %a28) %t30 = load { ptr, i64, i64 }, ptr %a29 ret { ptr, i64, i64 } %t30 -endif4813: +endif5097: %t31 = load %S.ast.Type, ptr %a2 %t32 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t31) ret { ptr, i64, i64 } %t32 @@ -42910,23 +46716,23 @@ entry: %t9 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t7, %S.gen.Val %t8) store { ptr, i64, i64 } %t9, ptr %a10 %t11 = load ptr, ptr %a1 - %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3130, i64 3, i64 0 }) + %t12 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t11, { ptr, i64, i64 } { ptr @.str.3343, i64 3, i64 0 }) store { ptr, i64, i64 } %t12, ptr %a13 %t14 = load ptr, ptr %a1 %t15 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.store(ptr %t14, { ptr, i64, i64 } { ptr @.str.3131, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, { ptr, i64, i64 } %t15) + call void @finch.gen.store(ptr %t14, { ptr, i64, i64 } { ptr @.str.3344, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3345, i64 1, i64 0 }, { ptr, i64, i64 } %t15) %t16 = load ptr, ptr %a1 %t17 = load ptr, ptr %a1 %t18 = load { ptr, i64, i64 }, ptr %a2 %t19 = load { ptr, i64, i64 }, ptr %a10 %t20 = load %S.ast.Type, ptr %a3 %t21 = call { ptr, i64, i64 } @finch.gen.mapArgs(ptr %t17, { ptr, i64, i64 } %t18, { ptr, i64, i64 } %t19, %S.ast.Type %t20) - store { ptr, i64, i64 } { ptr @.str.3133, i64 25, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3346, i64 25, i64 0 }, ptr %a23 store { ptr, i64, i64 } %t21, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3134, i64 6, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3347, i64 6, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 %t30 = load { ptr, i64, i64 }, ptr %a13 @@ -42935,7 +46741,7 @@ entry: call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.3135, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.3348, i64 1, i64 0 }, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t38) @@ -42947,22 +46753,22 @@ entry: %t45 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t41, { ptr, i64, i64 } %t42, %S.ast.Type %t43, { ptr, i64, i64 } %t44) store { ptr, i64, i64 } %t45, ptr %a46 %t47 = load ptr, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t47, { ptr, i64, i64 } { ptr @.str.3136, i64 7, i64 0 }) + %t48 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t47, { ptr, i64, i64 } { ptr @.str.3349, i64 7, i64 0 }) store { ptr, i64, i64 } %t48, ptr %a49 %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t50, { ptr, i64, i64 } { ptr @.str.3137, i64 8, i64 0 }) + %t51 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t50, { ptr, i64, i64 } { ptr @.str.3350, i64 8, i64 0 }) store { ptr, i64, i64 } %t51, ptr %a52 %t53 = load ptr, ptr %a1 %t54 = load ptr, ptr %a1 %t55 = load ptr, ptr %a1 %t56 = load { ptr, i64, i64 }, ptr %a13 - %t57 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.3139, i64 3, i64 0 }, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } { ptr @.str.3138, i64 12, i64 0 }, ptr %a59 + %t57 = call { ptr, i64, i64 } @finch.gen.load(ptr %t55, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t56) + store { ptr, i64, i64 } { ptr @.str.3351, i64 12, i64 0 }, ptr %a59 store { ptr, i64, i64 } %t57, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3140, i64 3, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.3353, i64 3, i64 0 }, ptr %a64 call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) %t65 = load { ptr, i64, i64 }, ptr %a62 %t66 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } %t65) @@ -42982,29 +46788,29 @@ entry: %t78 = load { ptr, i64, i64 }, ptr %t77 %t79 = extractvalue { ptr, i64, i64 } %t78, 1 %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range4814, label %inrange4815 -range4814: - call void @finch_panic_index(ptr @.str.3141, i64 2376, i64 0, i64 %t79) + br i1 %t80, label %range5098, label %inrange5099 +range5098: + call void @finch_panic_index(ptr @.str.3354, i64 2501, i64 0, i64 %t79) unreachable -inrange4815: +inrange5099: %t81 = extractvalue { ptr, i64, i64 } %t78, 0 %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 %t83 = load %S.ast.Type, ptr %t82 call void @finch.gen.copyAt(ptr %t71, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76, %S.ast.Type %t83) %t84 = load i1, ptr %a5 - br i1 %t84, label %then4816, label %endif4818 -then4816: + br i1 %t84, label %then5100, label %endif5102 +then5100: %t85 = load ptr, ptr %a1 %t86 = load ptr, ptr %a1 %t87 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t88 = load { ptr, i64, i64 }, ptr %t87 %t89 = extractvalue { ptr, i64, i64 } %t88, 1 %t90 = icmp uge i64 1, %t89 - br i1 %t90, label %range4819, label %inrange4820 -range4819: - call void @finch_panic_index(ptr @.str.3142, i64 2378, i64 1, i64 %t89) + br i1 %t90, label %range5103, label %inrange5104 +range5103: + call void @finch_panic_index(ptr @.str.3355, i64 2503, i64 1, i64 %t89) unreachable -inrange4820: +inrange5104: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds %S.ast.Type, ptr %t91, i64 1 %t93 = load %S.ast.Type, ptr %t92 @@ -43015,11 +46821,11 @@ inrange4820: %t98 = load { ptr, i64, i64 }, ptr %t97 %t99 = extractvalue { ptr, i64, i64 } %t98, 1 %t100 = icmp uge i64 1, %t99 - br i1 %t100, label %range4821, label %inrange4822 -range4821: - call void @finch_panic_index(ptr @.str.3143, i64 2378, i64 1, i64 %t99) + br i1 %t100, label %range5105, label %inrange5106 +range5105: + call void @finch_panic_index(ptr @.str.3356, i64 2503, i64 1, i64 %t99) unreachable -inrange4822: +inrange5106: %t101 = extractvalue { ptr, i64, i64 } %t98, 0 %t102 = getelementptr inbounds %S.ast.Type, ptr %t101, i64 1 %t103 = load %S.ast.Type, ptr %t102 @@ -43030,11 +46836,11 @@ inrange4822: %t108 = load { ptr, i64, i64 }, ptr %t107 %t109 = extractvalue { ptr, i64, i64 } %t108, 1 %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range4823, label %inrange4824 -range4823: - call void @finch_panic_index(ptr @.str.3144, i64 2378, i64 1, i64 %t109) + br i1 %t110, label %range5107, label %inrange5108 +range5107: + call void @finch_panic_index(ptr @.str.3357, i64 2503, i64 1, i64 %t109) unreachable -inrange4824: +inrange5108: %t111 = extractvalue { ptr, i64, i64 } %t108, 0 %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 %t113 = load %S.ast.Type, ptr %t112 @@ -43049,8 +46855,8 @@ inrange4824: %t122 = load %S.ast.Type, ptr %a3 %t123 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t120, { ptr, i64, i64 } %t121, %S.ast.Type %t122, i64 2) call void @finch.gen.store(ptr %t85, { ptr, i64, i64 } %t94, { ptr, i64, i64 } %t119, { ptr, i64, i64 } %t123) - br label %endif4818 -endif4818: + br label %endif5102 +endif5102: %t124 = load ptr, ptr %a1 %t125 = load { ptr, i64, i64 }, ptr %a52 call void @finch.gen.br(ptr %t124, { ptr, i64, i64 } %t125) @@ -43138,11 +46944,11 @@ entry: %t7 = load { ptr, i64, i64 }, ptr %t6 %t8 = extractvalue { ptr, i64, i64 } %t7, 1 %t9 = icmp uge i64 0, %t8 - br i1 %t9, label %range4825, label %inrange4826 -range4825: - call void @finch_panic_index(ptr @.str.3145, i64 2387, i64 0, i64 %t8) + br i1 %t9, label %range5109, label %inrange5110 +range5109: + call void @finch_panic_index(ptr @.str.3358, i64 2512, i64 0, i64 %t8) unreachable -inrange4826: +inrange5110: %t10 = extractvalue { ptr, i64, i64 } %t7, 0 %t11 = getelementptr inbounds %S.ast.Type, ptr %t10, i64 0 %t12 = load %S.ast.Type, ptr %t11 @@ -43154,11 +46960,11 @@ inrange4826: %t18 = load { ptr, i64, i64 }, ptr %t17 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 1, %t19 - br i1 %t20, label %range4827, label %inrange4828 -range4827: - call void @finch_panic_index(ptr @.str.3146, i64 2388, i64 1, i64 %t19) + br i1 %t20, label %range5111, label %inrange5112 +range5111: + call void @finch_panic_index(ptr @.str.3359, i64 2513, i64 1, i64 %t19) unreachable -inrange4828: +inrange5112: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.ast.Type, ptr %t21, i64 1 %t23 = load %S.ast.Type, ptr %t22 @@ -43172,11 +46978,11 @@ inrange4828: %t31 = load { ptr, i64, i64 }, ptr %t30 %t32 = extractvalue { ptr, i64, i64 } %t31, 1 %t33 = icmp uge i64 1, %t32 - br i1 %t33, label %range4829, label %inrange4830 -range4829: - call void @finch_panic_index(ptr @.str.3147, i64 2389, i64 1, i64 %t32) + br i1 %t33, label %range5113, label %inrange5114 +range5113: + call void @finch_panic_index(ptr @.str.3360, i64 2514, i64 1, i64 %t32) unreachable -inrange4830: +inrange5114: %t34 = extractvalue { ptr, i64, i64 } %t31, 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 1 %t36 = load %S.ast.Node, ptr %t35 @@ -43187,29 +46993,29 @@ inrange4830: %t41 = load { ptr, i64, i64 }, ptr %t40 %t42 = extractvalue { ptr, i64, i64 } %t41, 1 %t43 = icmp uge i64 1, %t42 - br i1 %t43, label %range4831, label %inrange4832 -range4831: - call void @finch_panic_index(ptr @.str.3148, i64 2389, i64 1, i64 %t42) + br i1 %t43, label %range5115, label %inrange5116 +range5115: + call void @finch_panic_index(ptr @.str.3361, i64 2514, i64 1, i64 %t42) unreachable -inrange4832: +inrange5116: %t44 = extractvalue { ptr, i64, i64 } %t41, 0 %t45 = getelementptr inbounds %S.ast.Node, ptr %t44, i64 1 %t46 = load %S.ast.Node, ptr %t45 - %t47 = call %S.gen.Val @finch.gen.coerce(ptr %t28, %S.gen.Val %t38, %S.ast.Type %t39, %S.ast.Node %t46, { ptr, i64, i64 } { ptr @.str.3149, i64 7, i64 0 }) + %t47 = call %S.gen.Val @finch.gen.coerce(ptr %t28, %S.gen.Val %t38, %S.ast.Type %t39, %S.ast.Node %t46, { ptr, i64, i64 } { ptr @.str.3362, i64 7, i64 0 }) store %S.gen.Val %t47, ptr %a48 %t49 = load i1, ptr %a5 - br i1 %t49, label %then4833, label %endif4835 -then4833: + br i1 %t49, label %then5117, label %endif5119 +then5117: %t50 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 %t51 = load i1, ptr %t50 %t52 = xor i1 %t51, true - br i1 %t52, label %then4836, label %endif4838 -then4836: + br i1 %t52, label %then5120, label %endif5122 +then5120: %t53 = load ptr, ptr %a1 %t54 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } { ptr @.str.3150, i64 44, i64 0 }) - br label %endif4838 -endif4838: + call void @finch.gen.fail(ptr %t53, %S.ast.Node %t54, { ptr, i64, i64 } { ptr @.str.3363, i64 44, i64 0 }) + br label %endif5122 +endif5122: %t55 = load ptr, ptr %a1 %t56 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 %t57 = getelementptr inbounds %S.gen.Place, ptr %t56, i32 0, i32 0 @@ -43232,12 +47038,12 @@ endif4838: %t74 = insertvalue %S.gen.Place %t69, %S.ast.Type %t73, 1 %t75 = insertvalue %S.gen.Ref %t64, %S.gen.Place %t74, 1 ret %S.gen.Ref %t75 -endif4835: - store { ptr, i64, i64 } { ptr @.str.3151, i64 0, i64 0 }, ptr %a76 +endif5119: + store { ptr, i64, i64 } { ptr @.str.3364, i64 0, i64 0 }, ptr %a76 %t77 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 %t78 = load i1, ptr %t77 - br i1 %t78, label %then4839, label %else4840 -then4839: + br i1 %t78, label %then5123, label %else5124 +then5123: %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 %t80 = getelementptr inbounds %S.gen.Place, ptr %t79, i32 0, i32 0 %t81 = load { ptr, i64, i64 }, ptr %t80 @@ -43245,15 +47051,15 @@ then4839: call void @finch_str_copy(ptr %a83, ptr %a82) %t84 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t84, ptr %a76 - br label %endif4841 -else4840: + br label %endif5125 +else5124: %t85 = load ptr, ptr %a1 %t86 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 %t87 = load %S.gen.Val, ptr %t86 %t88 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t87) store { ptr, i64, i64 } %t88, ptr %a76 - br label %endif4841 -endif4841: + br label %endif5125 +endif5125: %t89 = load ptr, ptr %a1 %t90 = load %S.gen.Val, ptr %a48 %t91 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t89, %S.gen.Val %t90) @@ -43265,20 +47071,20 @@ endif4841: %t97 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t93, { ptr, i64, i64 } %t94, { ptr, i64, i64 } %t95, %S.ast.Type %t96) store { ptr, i64, i64 } %t97, ptr %a98 %t99 = load ptr, ptr %a1 - %t100 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t99, { ptr, i64, i64 } { ptr @.str.3152, i64 11, i64 0 }) + %t100 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t99, { ptr, i64, i64 } { ptr @.str.3365, i64 11, i64 0 }) store { ptr, i64, i64 } %t100, ptr %a101 %t102 = load ptr, ptr %a1 - %t103 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t102, { ptr, i64, i64 } { ptr @.str.3153, i64 9, i64 0 }) + %t103 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t102, { ptr, i64, i64 } { ptr @.str.3366, i64 9, i64 0 }) store { ptr, i64, i64 } %t103, ptr %a104 %t105 = load ptr, ptr %a1 %t106 = load ptr, ptr %a1 %t107 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.3154, i64 13, i64 0 }, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.3367, i64 13, i64 0 }, ptr %a109 store { ptr, i64, i64 } %t107, ptr %a110 call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.3155, i64 3, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.3368, i64 3, i64 0 }, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 %t116 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t115) @@ -43289,11 +47095,11 @@ endif4841: %t120 = load { ptr, i64, i64 }, ptr %a101 call void @finch.gen.label(ptr %t119, { ptr, i64, i64 } %t120) %t121 = load ptr, ptr %a1 - %t122 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t121, { ptr, i64, i64 } { ptr @.str.3156, i64 17, i64 0 }) + %t122 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t121, { ptr, i64, i64 } { ptr @.str.3369, i64 17, i64 0 }) store { ptr, i64, i64 } %t122, ptr %a123 %t124 = load ptr, ptr %a1 %t125 = load { ptr, i64, i64 }, ptr %a123 - call void @finch.gen.store(ptr %t124, { ptr, i64, i64 } { ptr @.str.3157, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3158, i64 15, i64 0 }, { ptr, i64, i64 } %t125) + call void @finch.gen.store(ptr %t124, { ptr, i64, i64 } { ptr @.str.3370, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3371, i64 15, i64 0 }, { ptr, i64, i64 } %t125) %t126 = load ptr, ptr %a1 %t127 = load { ptr, i64, i64 }, ptr %a123 %t128 = getelementptr inbounds %S.gen.Val, ptr %a48, i32 0, i32 0 @@ -43304,32 +47110,32 @@ endif4841: %t132 = load ptr, ptr %a1 %t133 = load ptr, ptr %a1 %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3160, i64 2412, ptr @.str.3161) + br i1 %t134, label %panic5126, label %ok5127 +panic5126: + call void @finch_panic(ptr @.str.3373, i64 2537, ptr @.str.3374) unreachable -ok4843: +ok5127: %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 1 %t136 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t137 = load i64, ptr %t136 %t138 = load { ptr, i64, i64 }, ptr %t135 %t139 = extractvalue { ptr, i64, i64 } %t138, 1 %t140 = icmp uge i64 %t137, %t139 - br i1 %t140, label %range4844, label %inrange4845 -range4844: - call void @finch_panic_index(ptr @.str.3162, i64 2412, i64 %t137, i64 %t139) + br i1 %t140, label %range5128, label %inrange5129 +range5128: + call void @finch_panic_index(ptr @.str.3375, i64 2537, i64 %t137, i64 %t139) unreachable -inrange4845: +inrange5129: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t137 %t143 = load { ptr, i64, i64 }, ptr %t142 %t144 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t132, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } { ptr @.str.3159, i64 33, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.3372, i64 33, i64 0 }, ptr %a146 store { ptr, i64, i64 } %t144, ptr %a147 call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) %t148 = load { ptr, i64, i64 }, ptr %a145 store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.3163, i64 6, i64 0 }, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.3376, i64 6, i64 0 }, ptr %a151 call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) %t152 = load { ptr, i64, i64 }, ptr %a149 %t153 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -43341,7 +47147,7 @@ inrange4845: call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) %t160 = load { ptr, i64, i64 }, ptr %a157 store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.3164, i64 6, i64 0 }, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.3377, i64 6, i64 0 }, ptr %a163 call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) %t164 = load { ptr, i64, i64 }, ptr %a161 %t165 = load { ptr, i64, i64 }, ptr %a123 @@ -43350,19 +47156,19 @@ inrange4845: call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) %t169 = load { ptr, i64, i64 }, ptr %a166 store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.3165, i64 1, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.3378, i64 1, i64 0 }, ptr %a172 call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) %t173 = load { ptr, i64, i64 }, ptr %a170 call void @finch.gen.emit(ptr %t131, { ptr, i64, i64 } %t173) %t174 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } { ptr @.str.3166, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } { ptr @.str.3379, i64 11, i64 0 }) %t175 = load ptr, ptr %a1 %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3167, i64 2414, ptr @.str.3168) + br i1 %t176, label %panic5130, label %ok5131 +panic5130: + call void @finch_panic(ptr @.str.3380, i64 2539, ptr @.str.3381) unreachable -ok4847: +ok5131: %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 9 store i1 true, ptr %t177 %t178 = load ptr, ptr %a1 @@ -43379,8 +47185,8 @@ ok4847: store { ptr, i64, i64 } %t187, ptr %a188 %t189 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 %t190 = load i1, ptr %t189 - br i1 %t190, label %then4848, label %endif4850 -then4848: + br i1 %t190, label %then5132, label %endif5134 +then5132: %t191 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 %t192 = load { ptr, i64, i64 }, ptr %a188 store { ptr, i64, i64 } %t192, ptr %a193 @@ -43394,7 +47200,7 @@ then4848: %t201 = insertvalue %S.gen.Place %t196, %S.ast.Type %t200, 1 %t202 = insertvalue %S.gen.Ref %t191, %S.gen.Place %t201, 1 ret %S.gen.Ref %t202 -endif4850: +endif5134: %t203 = load ptr, ptr %a1 %t204 = load ptr, ptr %a1 %t205 = load %S.ast.Type, ptr %a27 @@ -43416,20 +47222,20 @@ endif4850: %t221 = load ptr, ptr %a1 %t222 = load %S.ast.Type, ptr %a27 %t223 = call i1 @finch.gen.owning(ptr %t221, %S.ast.Type %t222) - br label %logic.from4851 -logic.from4851: - br i1 %t223, label %logic.rhs4852, label %logic.end4853 -logic.rhs4852: + br label %logic.from5135 +logic.from5135: + br i1 %t223, label %logic.rhs5136, label %logic.end5137 +logic.rhs5136: %t224 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 %t225 = getelementptr inbounds %S.gen.Val, ptr %t224, i32 0, i32 2 %t226 = load i1, ptr %t225 - br label %logic.rend4854 -logic.rend4854: - br label %logic.end4853 -logic.end4853: - %t227 = phi i1 [ false, %logic.from4851 ], [ %t226, %logic.rend4854 ] - br i1 %t227, label %then4855, label %endif4857 -then4855: + br label %logic.rend5138 +logic.rend5138: + br label %logic.end5137 +logic.end5137: + %t227 = phi i1 [ false, %logic.from5135 ], [ %t226, %logic.rend5138 ] + br i1 %t227, label %then5139, label %endif5141 +then5139: %t228 = load ptr, ptr %a1 %t229 = load { ptr, i64, i64 }, ptr %a209 %t230 = load %S.ast.Type, ptr %a27 @@ -43442,8 +47248,8 @@ then4855: %t237 = insertvalue %S.gen.Val %t232, %S.ast.Type %t236, 1 %t238 = insertvalue %S.gen.Val %t237, i1 true, 2 store %S.gen.Val %t238, ptr %a220 - br label %endif4857 -endif4857: + br label %endif5141 +endif5141: %t239 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t240 = load %S.gen.Val, ptr %a220 store %S.gen.Val %t240, ptr %a241 @@ -43519,22 +47325,22 @@ entry: %t12 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t13 = load { ptr, i64, i64 }, ptr %t12 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3169, i64 3, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.3382, i64 3, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp eq i32 %t16, 0 - br i1 %t17, label %then4858, label %endif4860 -then4858: + br i1 %t17, label %then5142, label %endif5144 +then5142: %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i32 0, i32 1 %t20 = load i64, ptr %t19 %t21 = icmp eq i64 %t20, 0 - br i1 %t21, label %then4861, label %endif4863 -then4861: + br i1 %t21, label %then5145, label %endif5147 +then5145: %t22 = load ptr, ptr %a1 %t23 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3170, i64 52, i64 0 }) - br label %endif4863 -endif4863: + call void @finch.gen.fail(ptr %t22, %S.ast.Node %t23, { ptr, i64, i64 } { ptr @.str.3383, i64 52, i64 0 }) + br label %endif5147 +endif5147: store i1 true, ptr %a24 store i1 false, ptr %a25 %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 @@ -43542,12 +47348,12 @@ endif4863: %t28 = load i64, ptr %t27 %t29 = sdiv i64 %t28, 2 store i64 0, ptr %a30 - br label %for.cond4864 -for.cond4864: + br label %for.cond5148 +for.cond5148: %t31 = load i64, ptr %a30 %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body4865, label %for.end4867 -for.body4865: + br i1 %t32, label %for.body5149, label %for.end5151 +for.body5149: %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t34 = load i64, ptr %a30 %t35 = mul i64 2, %t34 @@ -43555,11 +47361,11 @@ for.body4865: %t37 = load { ptr, i64, i64 }, ptr %t33 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range4868, label %inrange4869 -range4868: - call void @finch_panic_index(ptr @.str.3171, i64 2442, i64 %t36, i64 %t38) + br i1 %t39, label %range5152, label %inrange5153 +range5152: + call void @finch_panic_index(ptr @.str.3384, i64 2567, i64 %t36, i64 %t38) unreachable -inrange4869: +inrange5153: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -43570,35 +47376,35 @@ inrange4869: %t47 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 %t48 = load { ptr, i64, i64 }, ptr %t47 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3172, i64 5, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3385, i64 5, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br label %logic.from4870 -logic.from4870: - br i1 %t52, label %logic.rhs4871, label %logic.end4872 -logic.rhs4871: + br label %logic.from5154 +logic.from5154: + br i1 %t52, label %logic.rhs5155, label %logic.end5156 +logic.rhs5155: %t53 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 1 %t54 = load { ptr, i64, i64 }, ptr %t53 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.3173, i64 1, i64 0 }, ptr %a56 + store { ptr, i64, i64 } { ptr @.str.3386, i64 1, i64 0 }, ptr %a56 %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) %t58 = icmp ne i32 %t57, 0 - br label %logic.rend4873 -logic.rend4873: - br label %logic.end4872 -logic.end4872: - %t59 = phi i1 [ false, %logic.from4870 ], [ %t58, %logic.rend4873 ] - br i1 %t59, label %then4874, label %endif4876 -then4874: + br label %logic.rend5157 +logic.rend5157: + br label %logic.end5156 +logic.end5156: + %t59 = phi i1 [ false, %logic.from5154 ], [ %t58, %logic.rend5157 ] + br i1 %t59, label %then5158, label %endif5160 +then5158: %t60 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 9 %t61 = load { ptr, i64, i64 }, ptr %t60 %t62 = extractvalue { ptr, i64, i64 } %t61, 1 %t63 = icmp uge i64 0, %t62 - br i1 %t63, label %range4877, label %inrange4878 -range4877: - call void @finch_panic_index(ptr @.str.3174, i64 2444, i64 0, i64 %t62) + br i1 %t63, label %range5161, label %inrange5162 +range5161: + call void @finch_panic_index(ptr @.str.3387, i64 2569, i64 0, i64 %t62) unreachable -inrange4878: +inrange5162: %t64 = extractvalue { ptr, i64, i64 } %t61, 0 %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 %t66 = load %S.ast.Node, ptr %t65 @@ -43606,49 +47412,49 @@ inrange4878: call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) %t69 = load %S.ast.Node, ptr %a68 store %S.ast.Node %t69, ptr %a46 - br label %endif4876 -endif4876: + br label %endif5160 +endif5160: %t70 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 %t71 = load { ptr, i64, i64 }, ptr %t70 store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.3175, i64 5, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.3388, i64 5, i64 0 }, ptr %a73 %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) %t75 = icmp ne i32 %t74, 0 - br i1 %t75, label %then4879, label %else4880 -then4879: + br i1 %t75, label %then5163, label %else5164 +then5163: store i1 true, ptr %a25 - br label %endif4881 -else4880: + br label %endif5165 +else5164: %t76 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 %t77 = load { ptr, i64, i64 }, ptr %t76 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3176, i64 3, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.3389, i64 3, i64 0 }, ptr %a79 %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) %t81 = icmp eq i32 %t80, 0 - br i1 %t81, label %then4882, label %endif4884 -then4882: + br i1 %t81, label %then5166, label %endif5168 +then5166: store i1 false, ptr %a24 - br label %endif4884 -endif4884: - br label %endif4881 -endif4881: - br label %for.step4866 -for.step4866: + br label %endif5168 +endif5168: + br label %endif5165 +endif5165: + br label %for.step5150 +for.step5150: %t82 = load i64, ptr %a30 %t83 = add i64 %t82, 1 store i64 %t83, ptr %a30 - br label %for.cond4864 -for.end4867: + br label %for.cond5148 +for.end5151: %t84 = load ptr, ptr %a1 %t85 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t86 = load { ptr, i64, i64 }, ptr %t85 %t87 = extractvalue { ptr, i64, i64 } %t86, 1 %t88 = icmp uge i64 0, %t87 - br i1 %t88, label %range4885, label %inrange4886 -range4885: - call void @finch_panic_index(ptr @.str.3177, i64 2452, i64 0, i64 %t87) + br i1 %t88, label %range5169, label %inrange5170 +range5169: + call void @finch_panic_index(ptr @.str.3390, i64 2577, i64 0, i64 %t87) unreachable -inrange4886: +inrange5170: %t89 = extractvalue { ptr, i64, i64 } %t86, 0 %t90 = getelementptr inbounds %S.ast.Node, ptr %t89, i64 0 %t91 = load %S.ast.Node, ptr %t90 @@ -43659,11 +47465,11 @@ inrange4886: %t95 = load { ptr, i64, i64 }, ptr %t94 %t96 = extractvalue { ptr, i64, i64 } %t95, 1 %t97 = icmp uge i64 1, %t96 - br i1 %t97, label %range4887, label %inrange4888 -range4887: - call void @finch_panic_index(ptr @.str.3178, i64 2453, i64 1, i64 %t96) + br i1 %t97, label %range5171, label %inrange5172 +range5171: + call void @finch_panic_index(ptr @.str.3391, i64 2578, i64 1, i64 %t96) unreachable -inrange4888: +inrange5172: %t98 = extractvalue { ptr, i64, i64 } %t95, 0 %t99 = getelementptr inbounds %S.ast.Node, ptr %t98, i64 1 %t100 = load %S.ast.Node, ptr %t99 @@ -43673,84 +47479,84 @@ inrange4888: %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i32 0, i32 0 %t104 = load { ptr, i64, i64 }, ptr %t103 store { ptr, i64, i64 } %t104, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3179, i64 4, i64 0 }, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.3392, i64 4, i64 0 }, ptr %a106 %t107 = call i32 @finch_str_eq(ptr %a105, ptr %a106) %t108 = icmp ne i32 %t107, 0 - br label %logic.from4889 -logic.from4889: - br i1 %t108, label %logic.end4891, label %logic.rhs4890 -logic.rhs4890: + br label %logic.from5173 +logic.from5173: + br i1 %t108, label %logic.end5175, label %logic.rhs5174 +logic.rhs5174: %t109 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t110 = getelementptr inbounds %S.ast.Type, ptr %t109, i32 0, i32 0 %t111 = load { ptr, i64, i64 }, ptr %t110 store { ptr, i64, i64 } %t111, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.3180, i64 4, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.3393, i64 4, i64 0 }, ptr %a113 %t114 = call i32 @finch_str_eq(ptr %a112, ptr %a113) %t115 = icmp ne i32 %t114, 0 - br label %logic.rend4892 -logic.rend4892: - br label %logic.end4891 -logic.end4891: - %t116 = phi i1 [ true, %logic.from4889 ], [ %t115, %logic.rend4892 ] - br i1 %t116, label %then4893, label %endif4895 -then4893: + br label %logic.rend5176 +logic.rend5176: + br label %logic.end5175 +logic.end5175: + %t116 = phi i1 [ true, %logic.from5173 ], [ %t115, %logic.rend5176 ] + br i1 %t116, label %then5177, label %endif5179 +then5177: %t117 = load ptr, ptr %a1 %t118 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t119 = load { ptr, i64, i64 }, ptr %t118 %t120 = extractvalue { ptr, i64, i64 } %t119, 1 %t121 = icmp uge i64 0, %t120 - br i1 %t121, label %range4896, label %inrange4897 -range4896: - call void @finch_panic_index(ptr @.str.3181, i64 2455, i64 0, i64 %t120) + br i1 %t121, label %range5180, label %inrange5181 +range5180: + call void @finch_panic_index(ptr @.str.3394, i64 2580, i64 0, i64 %t120) unreachable -inrange4897: +inrange5181: %t122 = extractvalue { ptr, i64, i64 } %t119, 0 %t123 = getelementptr inbounds %S.ast.Node, ptr %t122, i64 0 %t124 = load %S.ast.Node, ptr %t123 - call void @finch.gen.fail(ptr %t117, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3182, i64 35, i64 0 }) - br label %endif4895 -endif4895: + call void @finch.gen.fail(ptr %t117, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3395, i64 35, i64 0 }) + br label %endif5179 +endif5179: %t125 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i32 0, i32 0 %t127 = load { ptr, i64, i64 }, ptr %t126 store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.3183, i64 4, i64 0 }, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.3396, i64 4, i64 0 }, ptr %a129 %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) %t131 = icmp ne i32 %t130, 0 - br label %logic.from4898 -logic.from4898: - br i1 %t131, label %logic.end4900, label %logic.rhs4899 -logic.rhs4899: + br label %logic.from5182 +logic.from5182: + br i1 %t131, label %logic.end5184, label %logic.rhs5183 +logic.rhs5183: %t132 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i32 0, i32 0 %t134 = load { ptr, i64, i64 }, ptr %t133 store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3184, i64 4, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.3397, i64 4, i64 0 }, ptr %a136 %t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136) %t138 = icmp ne i32 %t137, 0 - br label %logic.rend4901 -logic.rend4901: - br label %logic.end4900 -logic.end4900: - %t139 = phi i1 [ true, %logic.from4898 ], [ %t138, %logic.rend4901 ] - br i1 %t139, label %then4902, label %endif4904 -then4902: + br label %logic.rend5185 +logic.rend5185: + br label %logic.end5184 +logic.end5184: + %t139 = phi i1 [ true, %logic.from5182 ], [ %t138, %logic.rend5185 ] + br i1 %t139, label %then5186, label %endif5188 +then5186: %t140 = load ptr, ptr %a1 %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t142 = load { ptr, i64, i64 }, ptr %t141 %t143 = extractvalue { ptr, i64, i64 } %t142, 1 %t144 = icmp uge i64 1, %t143 - br i1 %t144, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3185, i64 2458, i64 1, i64 %t143) + br i1 %t144, label %range5189, label %inrange5190 +range5189: + call void @finch_panic_index(ptr @.str.3398, i64 2583, i64 1, i64 %t143) unreachable -inrange4906: +inrange5190: %t145 = extractvalue { ptr, i64, i64 } %t142, 0 %t146 = getelementptr inbounds %S.ast.Node, ptr %t145, i64 1 %t147 = load %S.ast.Node, ptr %t146 - call void @finch.gen.fail(ptr %t140, %S.ast.Node %t147, { ptr, i64, i64 } { ptr @.str.3186, i64 37, i64 0 }) - br label %endif4904 -endif4904: + call void @finch.gen.fail(ptr %t140, %S.ast.Node %t147, { ptr, i64, i64 } { ptr @.str.3399, i64 37, i64 0 }) + br label %endif5188 +endif5188: %t148 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 %t149 = load %S.ast.Type, ptr %t148 store %S.ast.Type %t149, ptr %a150 @@ -43758,30 +47564,30 @@ endif4904: %t152 = load %S.ast.Type, ptr %a151 store %S.ast.Type %t152, ptr %a153 %t154 = load i1, ptr %a24 - br label %logic.from4907 -logic.from4907: - br i1 %t154, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: + br label %logic.from5191 +logic.from5191: + br i1 %t154, label %logic.rhs5192, label %logic.end5193 +logic.rhs5192: %t155 = load i1, ptr %a25 - br label %logic.rend4910 -logic.rend4910: - br label %logic.end4909 -logic.end4909: - %t156 = phi i1 [ false, %logic.from4907 ], [ %t155, %logic.rend4910 ] - br i1 %t156, label %then4911, label %endif4913 -then4911: - %t157 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3187, i64 5, i64 0 }) + br label %logic.rend5194 +logic.rend5194: + br label %logic.end5193 +logic.end5193: + %t156 = phi i1 [ false, %logic.from5191 ], [ %t155, %logic.rend5194 ] + br i1 %t156, label %then5195, label %endif5197 +then5195: + %t157 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3400, i64 5, i64 0 }) store %S.ast.Type %t157, ptr %a153 - br label %endif4913 -endif4913: + br label %endif5197 +endif5197: %t158 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t159 = load %S.ast.Type, ptr %t158 %t160 = load %S.ast.Type, ptr %a153 %t161 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t159, %S.ast.Type %t160) store %S.ast.Type %t161, ptr %a8 store i1 true, ptr %a9 - br label %endif4860 -endif4860: + br label %endif5144 +endif5144: %t162 = load ptr, ptr %a1 %t163 = load ptr, ptr %a1 %t164 = load %S.ast.Type, ptr %a8 @@ -43793,18 +47599,18 @@ endif4860: %t170 = load %S.ast.Type, ptr %a8 %t171 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t169, %S.ast.Type %t170) %t172 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.store(ptr %t168, { ptr, i64, i64 } %t171, { ptr, i64, i64 } { ptr @.str.3188, i64 15, i64 0 }, { ptr, i64, i64 } %t172) + call void @finch.gen.store(ptr %t168, { ptr, i64, i64 } %t171, { ptr, i64, i64 } { ptr @.str.3401, i64 15, i64 0 }, { ptr, i64, i64 } %t172) %t173 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 %t175 = load i64, ptr %t174 %t176 = sdiv i64 %t175, 2 store i64 0, ptr %a177 - br label %for.cond4914 -for.cond4914: + br label %for.cond5198 +for.cond5198: %t178 = load i64, ptr %a177 %t179 = icmp slt i64 %t178, %t176 - br i1 %t179, label %for.body4915, label %for.end4917 -for.body4915: + br i1 %t179, label %for.body5199, label %for.end5201 +for.body5199: %t180 = load %S.gen.Val, ptr %a10 store %S.gen.Val %t180, ptr %a181 call void @finch.copy.S_gen_Val(ptr %a182, ptr %a181) @@ -43817,19 +47623,19 @@ for.body4915: store %S.gen.Val %t188, ptr %a189 %t190 = load i64, ptr %a177 %t191 = icmp eq i64 %t190, 0 - br label %logic.from4918 -logic.from4918: - br i1 %t191, label %logic.rhs4919, label %logic.end4920 -logic.rhs4919: + br label %logic.from5202 +logic.from5202: + br i1 %t191, label %logic.rhs5203, label %logic.end5204 +logic.rhs5203: %t192 = load i1, ptr %a9 - br label %logic.rend4921 -logic.rend4921: - br label %logic.end4920 -logic.end4920: - %t193 = phi i1 [ false, %logic.from4918 ], [ %t192, %logic.rend4921 ] + br label %logic.rend5205 +logic.rend5205: + br label %logic.end5204 +logic.end5204: + %t193 = phi i1 [ false, %logic.from5202 ], [ %t192, %logic.rend5205 ] %t194 = xor i1 %t193, true - br i1 %t194, label %then4922, label %endif4924 -then4922: + br i1 %t194, label %then5206, label %endif5208 +then5206: %t195 = load ptr, ptr %a1 %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t197 = load i64, ptr %a177 @@ -43837,11 +47643,11 @@ then4922: %t199 = load { ptr, i64, i64 }, ptr %t196 %t200 = extractvalue { ptr, i64, i64 } %t199, 1 %t201 = icmp uge i64 %t198, %t200 - br i1 %t201, label %range4925, label %inrange4926 -range4925: - call void @finch_panic_index(ptr @.str.3189, i64 2473, i64 %t198, i64 %t200) + br i1 %t201, label %range5209, label %inrange5210 +range5209: + call void @finch_panic_index(ptr @.str.3402, i64 2598, i64 %t198, i64 %t200) unreachable -inrange4926: +inrange5210: %t202 = extractvalue { ptr, i64, i64 } %t199, 0 %t203 = getelementptr inbounds %S.ast.Node, ptr %t202, i64 %t198 %t204 = load %S.ast.Node, ptr %t203 @@ -43849,11 +47655,11 @@ inrange4926: %t206 = load { ptr, i64, i64 }, ptr %t205 %t207 = extractvalue { ptr, i64, i64 } %t206, 1 %t208 = icmp uge i64 0, %t207 - br i1 %t208, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3190, i64 2473, i64 0, i64 %t207) + br i1 %t208, label %range5211, label %inrange5212 +range5211: + call void @finch_panic_index(ptr @.str.3403, i64 2598, i64 0, i64 %t207) unreachable -inrange4928: +inrange5212: %t209 = extractvalue { ptr, i64, i64 } %t206, 0 %t210 = getelementptr inbounds %S.ast.Type, ptr %t209, i64 0 %t211 = load %S.ast.Type, ptr %t210 @@ -43867,11 +47673,11 @@ inrange4928: %t218 = load { ptr, i64, i64 }, ptr %t214 %t219 = extractvalue { ptr, i64, i64 } %t218, 1 %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4929, label %inrange4930 -range4929: - call void @finch_panic_index(ptr @.str.3191, i64 2474, i64 %t217, i64 %t219) + br i1 %t220, label %range5213, label %inrange5214 +range5213: + call void @finch_panic_index(ptr @.str.3404, i64 2599, i64 %t217, i64 %t219) unreachable -inrange4930: +inrange5214: %t221 = extractvalue { ptr, i64, i64 } %t218, 0 %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 %t223 = load %S.ast.Node, ptr %t222 @@ -43879,29 +47685,29 @@ inrange4930: %t225 = load { ptr, i64, i64 }, ptr %t224 %t226 = extractvalue { ptr, i64, i64 } %t225, 1 %t227 = icmp uge i64 1, %t226 - br i1 %t227, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3192, i64 2474, i64 1, i64 %t226) + br i1 %t227, label %range5215, label %inrange5216 +range5215: + call void @finch_panic_index(ptr @.str.3405, i64 2599, i64 1, i64 %t226) unreachable -inrange4932: +inrange5216: %t228 = extractvalue { ptr, i64, i64 } %t225, 0 %t229 = getelementptr inbounds %S.ast.Type, ptr %t228, i64 1 %t230 = load %S.ast.Type, ptr %t229 %t231 = call %S.gen.Val @finch.gen.exprWant(ptr %t213, %S.ast.Node %t223, %S.ast.Type %t230) store %S.gen.Val %t231, ptr %a189 - br label %endif4924 -endif4924: + br label %endif5208 +endif5208: %t232 = load ptr, ptr %a1 %t233 = load %S.gen.Val, ptr %a184 %t234 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 %t235 = load { ptr, i64, i64 }, ptr %t234 %t236 = extractvalue { ptr, i64, i64 } %t235, 1 %t237 = icmp uge i64 0, %t236 - br i1 %t237, label %range4933, label %inrange4934 -range4933: - call void @finch_panic_index(ptr @.str.3193, i64 2476, i64 0, i64 %t236) + br i1 %t237, label %range5217, label %inrange5218 +range5217: + call void @finch_panic_index(ptr @.str.3406, i64 2601, i64 0, i64 %t236) unreachable -inrange4934: +inrange5218: %t238 = extractvalue { ptr, i64, i64 } %t235, 0 %t239 = getelementptr inbounds %S.ast.Type, ptr %t238, i64 0 %t240 = load %S.ast.Type, ptr %t239 @@ -43911,15 +47717,15 @@ inrange4934: %t244 = load { ptr, i64, i64 }, ptr %t241 %t245 = extractvalue { ptr, i64, i64 } %t244, 1 %t246 = icmp uge i64 %t243, %t245 - br i1 %t246, label %range4935, label %inrange4936 -range4935: - call void @finch_panic_index(ptr @.str.3194, i64 2476, i64 %t243, i64 %t245) + br i1 %t246, label %range5219, label %inrange5220 +range5219: + call void @finch_panic_index(ptr @.str.3407, i64 2601, i64 %t243, i64 %t245) unreachable -inrange4936: +inrange5220: %t247 = extractvalue { ptr, i64, i64 } %t244, 0 %t248 = getelementptr inbounds %S.ast.Node, ptr %t247, i64 %t243 %t249 = load %S.ast.Node, ptr %t248 - %t250 = call %S.gen.Val @finch.gen.coerce(ptr %t232, %S.gen.Val %t233, %S.ast.Type %t240, %S.ast.Node %t249, { ptr, i64, i64 } { ptr @.str.3195, i64 21, i64 0 }) + %t250 = call %S.gen.Val @finch.gen.coerce(ptr %t232, %S.gen.Val %t233, %S.ast.Type %t240, %S.ast.Node %t249, { ptr, i64, i64 } { ptr @.str.3408, i64 21, i64 0 }) store %S.gen.Val %t250, ptr %a184 %t251 = load ptr, ptr %a1 %t252 = load %S.gen.Val, ptr %a189 @@ -43927,11 +47733,11 @@ inrange4936: %t254 = load { ptr, i64, i64 }, ptr %t253 %t255 = extractvalue { ptr, i64, i64 } %t254, 1 %t256 = icmp uge i64 1, %t255 - br i1 %t256, label %range4937, label %inrange4938 -range4937: - call void @finch_panic_index(ptr @.str.3196, i64 2477, i64 1, i64 %t255) + br i1 %t256, label %range5221, label %inrange5222 +range5221: + call void @finch_panic_index(ptr @.str.3409, i64 2602, i64 1, i64 %t255) unreachable -inrange4938: +inrange5222: %t257 = extractvalue { ptr, i64, i64 } %t254, 0 %t258 = getelementptr inbounds %S.ast.Type, ptr %t257, i64 1 %t259 = load %S.ast.Type, ptr %t258 @@ -43942,15 +47748,15 @@ inrange4938: %t264 = load { ptr, i64, i64 }, ptr %t260 %t265 = extractvalue { ptr, i64, i64 } %t264, 1 %t266 = icmp uge i64 %t263, %t265 - br i1 %t266, label %range4939, label %inrange4940 -range4939: - call void @finch_panic_index(ptr @.str.3197, i64 2477, i64 %t263, i64 %t265) + br i1 %t266, label %range5223, label %inrange5224 +range5223: + call void @finch_panic_index(ptr @.str.3410, i64 2602, i64 %t263, i64 %t265) unreachable -inrange4940: +inrange5224: %t267 = extractvalue { ptr, i64, i64 } %t264, 0 %t268 = getelementptr inbounds %S.ast.Node, ptr %t267, i64 %t263 %t269 = load %S.ast.Node, ptr %t268 - %t270 = call %S.gen.Val @finch.gen.coerce(ptr %t251, %S.gen.Val %t252, %S.ast.Type %t259, %S.ast.Node %t269, { ptr, i64, i64 } { ptr @.str.3198, i64 23, i64 0 }) + %t270 = call %S.gen.Val @finch.gen.coerce(ptr %t251, %S.gen.Val %t252, %S.ast.Type %t259, %S.ast.Node %t269, { ptr, i64, i64 } { ptr @.str.3411, i64 23, i64 0 }) store %S.gen.Val %t270, ptr %a189 %t271 = load ptr, ptr %a1 %t272 = load %S.gen.Val, ptr %a189 @@ -43969,11 +47775,11 @@ inrange4940: %t285 = load { ptr, i64, i64 }, ptr %t284 %t286 = extractvalue { ptr, i64, i64 } %t285, 1 %t287 = icmp uge i64 1, %t286 - br i1 %t287, label %range4941, label %inrange4942 -range4941: - call void @finch_panic_index(ptr @.str.3199, i64 2480, i64 1, i64 %t286) + br i1 %t287, label %range5225, label %inrange5226 +range5225: + call void @finch_panic_index(ptr @.str.3412, i64 2605, i64 1, i64 %t286) unreachable -inrange4942: +inrange5226: %t288 = extractvalue { ptr, i64, i64 } %t285, 0 %t289 = getelementptr inbounds %S.ast.Type, ptr %t288, i64 1 %t290 = load %S.ast.Type, ptr %t289 @@ -43984,13 +47790,13 @@ inrange4942: %t295 = load %S.ast.Type, ptr %a8 %t296 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t293, { ptr, i64, i64 } %t294, %S.ast.Type %t295, i64 2) call void @finch.gen.store(ptr %t282, { ptr, i64, i64 } %t291, { ptr, i64, i64 } %t292, { ptr, i64, i64 } %t296) - br label %for.step4916 -for.step4916: + br label %for.step5200 +for.step5200: %t297 = load i64, ptr %a177 %t298 = add i64 %t297, 1 store i64 %t298, ptr %a177 - br label %for.cond4914 -for.end4917: + br label %for.cond5198 +for.end5201: %t299 = load ptr, ptr %a1 %t300 = load ptr, ptr %a1 %t301 = load %S.ast.Type, ptr %a8 @@ -44228,11 +48034,11 @@ entry: %t12 = load { ptr, i64, i64 }, ptr %t11 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 0, %t13 - br i1 %t14, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3200, i64 2487, i64 0, i64 %t13) + br i1 %t14, label %range5227, label %inrange5228 +range5227: + call void @finch_panic_index(ptr @.str.3413, i64 2612, i64 0, i64 %t13) unreachable -inrange4944: +inrange5228: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 %t17 = load %S.ast.Type, ptr %t16 @@ -44244,11 +48050,11 @@ inrange4944: %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = extractvalue { ptr, i64, i64 } %t23, 1 %t25 = icmp uge i64 1, %t24 - br i1 %t25, label %range4945, label %inrange4946 -range4945: - call void @finch_panic_index(ptr @.str.3201, i64 2488, i64 1, i64 %t24) + br i1 %t25, label %range5229, label %inrange5230 +range5229: + call void @finch_panic_index(ptr @.str.3414, i64 2613, i64 1, i64 %t24) unreachable -inrange4946: +inrange5230: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds %S.ast.Type, ptr %t26, i64 1 %t28 = load %S.ast.Type, ptr %t27 @@ -44258,69 +48064,69 @@ inrange4946: store %S.ast.Type %t31, ptr %a32 %t33 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3202, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3415, i64 3, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br label %logic.from4947 -logic.from4947: - br i1 %t37, label %logic.end4949, label %logic.rhs4948 -logic.rhs4948: + br label %logic.from5231 +logic.from5231: + br i1 %t37, label %logic.end5233, label %logic.rhs5232 +logic.rhs5232: %t38 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3203, i64 3, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, ptr %a40 %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) %t42 = icmp ne i32 %t41, 0 - br label %logic.rend4950 -logic.rend4950: - br label %logic.end4949 -logic.end4949: - %t43 = phi i1 [ true, %logic.from4947 ], [ %t42, %logic.rend4950 ] - br label %logic.from4951 -logic.from4951: - br i1 %t43, label %logic.end4953, label %logic.rhs4952 -logic.rhs4952: + br label %logic.rend5234 +logic.rend5234: + br label %logic.end5233 +logic.end5233: + %t43 = phi i1 [ true, %logic.from5231 ], [ %t42, %logic.rend5234 ] + br label %logic.from5235 +logic.from5235: + br i1 %t43, label %logic.end5237, label %logic.rhs5236 +logic.rhs5236: %t44 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3204, i64 6, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.3417, i64 6, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br label %logic.rend4954 -logic.rend4954: - br label %logic.end4953 -logic.end4953: - %t49 = phi i1 [ true, %logic.from4951 ], [ %t48, %logic.rend4954 ] - br i1 %t49, label %then4955, label %endif4957 -then4955: + br label %logic.rend5238 +logic.rend5238: + br label %logic.end5237 +logic.end5237: + %t49 = phi i1 [ true, %logic.from5235 ], [ %t48, %logic.rend5238 ] + br i1 %t49, label %then5239, label %endif5241 +then5239: %t50 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3205, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.3418, i64 3, i64 0 }, ptr %a52 %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then4958, label %else4959 -then4958: + br i1 %t54, label %then5242, label %else5243 +then5242: %t55 = load ptr, ptr %a1 %t56 = load %S.ast.Node, ptr %a2 %t57 = load { ptr, i64, i64 }, ptr %a10 call void @finch.gen.checkArgs(ptr %t55, %S.ast.Node %t56, i64 1, i64 2, { ptr, i64, i64 } %t57) - br label %endif4960 -else4959: + br label %endif5244 +else5243: %t58 = load ptr, ptr %a1 %t59 = load %S.ast.Node, ptr %a2 %t60 = load { ptr, i64, i64 }, ptr %a10 call void @finch.gen.checkArgs(ptr %t58, %S.ast.Node %t59, i64 1, i64 1, { ptr, i64, i64 } %t60) - br label %endif4960 -endif4960: + br label %endif5244 +endif5244: %t61 = load ptr, ptr %a1 %t62 = load ptr, ptr %a1 %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t64 = load { ptr, i64, i64 }, ptr %t63 %t65 = extractvalue { ptr, i64, i64 } %t64, 1 %t66 = icmp uge i64 1, %t65 - br i1 %t66, label %range4961, label %inrange4962 -range4961: - call void @finch_panic_index(ptr @.str.3206, i64 2495, i64 1, i64 %t65) + br i1 %t66, label %range5245, label %inrange5246 +range5245: + call void @finch_panic_index(ptr @.str.3419, i64 2620, i64 1, i64 %t65) unreachable -inrange4962: +inrange5246: %t67 = extractvalue { ptr, i64, i64 } %t64, 0 %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 1 %t69 = load %S.ast.Node, ptr %t68 @@ -44331,15 +48137,15 @@ inrange4962: %t74 = load { ptr, i64, i64 }, ptr %t73 %t75 = extractvalue { ptr, i64, i64 } %t74, 1 %t76 = icmp uge i64 1, %t75 - br i1 %t76, label %range4963, label %inrange4964 -range4963: - call void @finch_panic_index(ptr @.str.3207, i64 2495, i64 1, i64 %t75) + br i1 %t76, label %range5247, label %inrange5248 +range5247: + call void @finch_panic_index(ptr @.str.3420, i64 2620, i64 1, i64 %t75) unreachable -inrange4964: +inrange5248: %t77 = extractvalue { ptr, i64, i64 } %t74, 0 %t78 = getelementptr inbounds %S.ast.Node, ptr %t77, i64 1 %t79 = load %S.ast.Node, ptr %t78 - %t80 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t71, %S.ast.Type %t72, %S.ast.Node %t79, { ptr, i64, i64 } { ptr @.str.3208, i64 7, i64 0 }) + %t80 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t71, %S.ast.Type %t72, %S.ast.Node %t79, { ptr, i64, i64 } { ptr @.str.3421, i64 7, i64 0 }) store %S.gen.Val %t80, ptr %a81 %t82 = load ptr, ptr %a1 %t83 = load { ptr, i64, i64 }, ptr %a3 @@ -44351,44 +48157,44 @@ inrange4964: store { ptr, i64, i64 } %t88, ptr %a89 %t90 = load ptr, ptr %a1 %t91 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3209, i64 13, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.3422, i64 13, i64 0 }, ptr %a93 store { ptr, i64, i64 } %t91, ptr %a94 call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) %t95 = load { ptr, i64, i64 }, ptr %a92 store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3210, i64 3, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3423, i64 3, i64 0 }, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 %t100 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t99) store { ptr, i64, i64 } %t100, ptr %a101 %t102 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3211, i64 3, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.3424, i64 3, i64 0 }, ptr %a104 %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) %t106 = icmp ne i32 %t105, 0 - br i1 %t106, label %then4965, label %endif4967 -then4965: + br i1 %t106, label %then5249, label %endif5251 +then5249: %t107 = load { ptr, i64, i64 }, ptr %a101 store { ptr, i64, i64 } %t107, ptr %a108 call void @finch_str_copy(ptr %a109, ptr %a108) %t110 = load { ptr, i64, i64 }, ptr %a109 %t111 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t110, 0 - %t112 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3212, i64 4, i64 0 }) + %t112 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3425, i64 4, i64 0 }) %t113 = insertvalue %S.gen.Val %t111, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif4967: +endif5251: %t114 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3213, i64 6, i64 0 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.3426, i64 6, i64 0 }, ptr %a116 %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then4968, label %endif4970 -then4968: + br i1 %t118, label %then5252, label %endif5254 +then5252: %t119 = load ptr, ptr %a1 - %t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3214, i64 10, i64 0 }) + %t120 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t119, { ptr, i64, i64 } { ptr @.str.3427, i64 10, i64 0 }) store { ptr, i64, i64 } %t120, ptr %a121 %t122 = load ptr, ptr %a1 - %t123 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t122, { ptr, i64, i64 } { ptr @.str.3215, i64 10, i64 0 }) + %t123 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t122, { ptr, i64, i64 } { ptr @.str.3428, i64 10, i64 0 }) store { ptr, i64, i64 } %t123, ptr %a124 %t125 = load ptr, ptr %a1 %t126 = load { ptr, i64, i64 }, ptr %a101 @@ -44400,12 +48206,12 @@ then4968: call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) %t131 = load ptr, ptr %a1 %t132 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3216, i64 35, i64 0 }, ptr %a134 + store { ptr, i64, i64 } { ptr @.str.3429, i64 35, i64 0 }, ptr %a134 store { ptr, i64, i64 } %t132, ptr %a135 call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) %t136 = load { ptr, i64, i64 }, ptr %a133 store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3217, i64 6, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.3430, i64 6, i64 0 }, ptr %a139 call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) %t140 = load { ptr, i64, i64 }, ptr %a137 %t141 = load { ptr, i64, i64 }, ptr %a89 @@ -44414,7 +48220,7 @@ then4968: call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) %t145 = load { ptr, i64, i64 }, ptr %a142 store { ptr, i64, i64 } %t145, ptr %a147 - store { ptr, i64, i64 } { ptr @.str.3218, i64 6, i64 0 }, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.3431, i64 6, i64 0 }, ptr %a148 call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) %t149 = load { ptr, i64, i64 }, ptr %a146 %t150 = load ptr, ptr %a1 @@ -44425,7 +48231,7 @@ then4968: call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) %t156 = load { ptr, i64, i64 }, ptr %a153 store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.3219, i64 1, i64 0 }, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.3432, i64 1, i64 0 }, ptr %a159 call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) %t160 = load { ptr, i64, i64 }, ptr %a157 call void @finch.gen.emit(ptr %t131, { ptr, i64, i64 } %t160) @@ -44440,24 +48246,24 @@ then4968: call void @finch_str_copy(ptr %a167, ptr %a166) %t168 = load { ptr, i64, i64 }, ptr %a167 %t169 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t168, 0 - %t170 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3220, i64 4, i64 0 }) + %t170 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3433, i64 4, i64 0 }) %t171 = insertvalue %S.gen.Val %t169, %S.ast.Type %t170, 1 ret %S.gen.Val %t171 -endif4970: +endif5254: %t172 = load ptr, ptr %a1 - %t173 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t172, { ptr, i64, i64 } { ptr @.str.3221, i64 9, i64 0 }) + %t173 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t172, { ptr, i64, i64 } { ptr @.str.3434, i64 9, i64 0 }) store { ptr, i64, i64 } %t173, ptr %a174 %t175 = load ptr, ptr %a1 - %t176 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t175, { ptr, i64, i64 } { ptr @.str.3222, i64 11, i64 0 }) + %t176 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t175, { ptr, i64, i64 } { ptr @.str.3435, i64 11, i64 0 }) store { ptr, i64, i64 } %t176, ptr %a177 %t178 = load ptr, ptr %a1 - %t179 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t178, { ptr, i64, i64 } { ptr @.str.3223, i64 8, i64 0 }) + %t179 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t178, { ptr, i64, i64 } { ptr @.str.3436, i64 8, i64 0 }) store { ptr, i64, i64 } %t179, ptr %a180 %t181 = load ptr, ptr %a1 - %t182 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t181, { ptr, i64, i64 } { ptr @.str.3224, i64 8, i64 0 }) + %t182 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t181, { ptr, i64, i64 } { ptr @.str.3437, i64 8, i64 0 }) store { ptr, i64, i64 } %t182, ptr %a183 %t184 = load ptr, ptr %a1 - %t185 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t184, { ptr, i64, i64 } { ptr @.str.3225, i64 7, i64 0 }) + %t185 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t184, { ptr, i64, i64 } { ptr @.str.3438, i64 7, i64 0 }) store { ptr, i64, i64 } %t185, ptr %a186 %t187 = load ptr, ptr %a1 %t188 = load { ptr, i64, i64 }, ptr %a101 @@ -44503,11 +48309,11 @@ endif4970: %t222 = load { ptr, i64, i64 }, ptr %t221 %t223 = extractvalue { ptr, i64, i64 } %t222, 1 %t224 = icmp uge i64 2, %t223 - br i1 %t224, label %range4971, label %inrange4972 -range4971: - call void @finch_panic_index(ptr @.str.3226, i64 2524, i64 2, i64 %t223) + br i1 %t224, label %range5255, label %inrange5256 +range5255: + call void @finch_panic_index(ptr @.str.3439, i64 2649, i64 2, i64 %t223) unreachable -inrange4972: +inrange5256: %t225 = extractvalue { ptr, i64, i64 } %t222, 0 %t226 = getelementptr inbounds %S.ast.Node, ptr %t225, i64 2 %t227 = load %S.ast.Node, ptr %t226 @@ -44518,15 +48324,15 @@ inrange4972: %t232 = load { ptr, i64, i64 }, ptr %t231 %t233 = extractvalue { ptr, i64, i64 } %t232, 1 %t234 = icmp uge i64 2, %t233 - br i1 %t234, label %range4973, label %inrange4974 -range4973: - call void @finch_panic_index(ptr @.str.3227, i64 2524, i64 2, i64 %t233) + br i1 %t234, label %range5257, label %inrange5258 +range5257: + call void @finch_panic_index(ptr @.str.3440, i64 2649, i64 2, i64 %t233) unreachable -inrange4974: +inrange5258: %t235 = extractvalue { ptr, i64, i64 } %t232, 0 %t236 = getelementptr inbounds %S.ast.Node, ptr %t235, i64 2 %t237 = load %S.ast.Node, ptr %t236 - %t238 = call %S.gen.Val @finch.gen.coerce(ptr %t219, %S.gen.Val %t229, %S.ast.Type %t230, %S.ast.Node %t237, { ptr, i64, i64 } { ptr @.str.3228, i64 11, i64 0 }) + %t238 = call %S.gen.Val @finch.gen.coerce(ptr %t219, %S.gen.Val %t229, %S.ast.Type %t230, %S.ast.Node %t237, { ptr, i64, i64 } { ptr @.str.3441, i64 11, i64 0 }) %t239 = call { ptr, i64, i64 } @finch.gen.own(ptr %t218, %S.gen.Val %t238) store { ptr, i64, i64 } %t239, ptr %a240 %t241 = load ptr, ptr %a1 @@ -44545,12 +48351,12 @@ inrange4974: %t250 = load ptr, ptr %a1 %t251 = load %S.ast.Type, ptr %a32 %t252 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t250, %S.ast.Type %t251) - store { ptr, i64, i64 } { ptr @.str.3229, i64 4, i64 0 }, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.3442, i64 4, i64 0 }, ptr %a254 store { ptr, i64, i64 } %t252, ptr %a255 call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.3230, i64 3, i64 0 }, ptr %a259 + store { ptr, i64, i64 } { ptr @.str.3443, i64 3, i64 0 }, ptr %a259 call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) %t260 = load { ptr, i64, i64 }, ptr %a257 %t261 = load { ptr, i64, i64 }, ptr %a209 @@ -44559,7 +48365,7 @@ inrange4974: call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) %t265 = load { ptr, i64, i64 }, ptr %a262 store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.3231, i64 3, i64 0 }, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }, ptr %a268 call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) %t269 = load { ptr, i64, i64 }, ptr %a266 %t270 = load { ptr, i64, i64 }, ptr %a180 @@ -44568,7 +48374,7 @@ inrange4974: call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) %t274 = load { ptr, i64, i64 }, ptr %a271 store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.3232, i64 6, i64 0 }, ptr %a277 + store { ptr, i64, i64 } { ptr @.str.3445, i64 6, i64 0 }, ptr %a277 call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) %t278 = load { ptr, i64, i64 }, ptr %a275 %t279 = load { ptr, i64, i64 }, ptr %a240 @@ -44577,7 +48383,7 @@ inrange4974: call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) %t283 = load { ptr, i64, i64 }, ptr %a280 store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.3233, i64 3, i64 0 }, ptr %a286 + store { ptr, i64, i64 } { ptr @.str.3446, i64 3, i64 0 }, ptr %a286 call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) %t287 = load { ptr, i64, i64 }, ptr %a284 %t288 = load { ptr, i64, i64 }, ptr %a183 @@ -44586,7 +48392,7 @@ inrange4974: call void @finch_str_concat(ptr %a289, ptr %a290, ptr %a291) %t292 = load { ptr, i64, i64 }, ptr %a289 store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.3234, i64 2, i64 0 }, ptr %a295 + store { ptr, i64, i64 } { ptr @.str.3447, i64 2, i64 0 }, ptr %a295 call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) %t296 = load { ptr, i64, i64 }, ptr %a293 %t297 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t296) @@ -44601,54 +48407,54 @@ inrange4974: %t306 = call i1 @finch.gen.owning(ptr %t304, %S.ast.Type %t305) %t307 = insertvalue %S.gen.Val %t303, i1 %t306, 2 ret %S.gen.Val %t307 -endif4957: +endif5241: %t308 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3235, i64 5, i64 0 }, ptr %a310 + store { ptr, i64, i64 } { ptr @.str.3448, i64 5, i64 0 }, ptr %a310 %t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310) %t312 = icmp ne i32 %t311, 0 - br i1 %t312, label %then4975, label %endif4977 -then4975: + br i1 %t312, label %then5259, label %endif5261 +then5259: %t313 = load ptr, ptr %a1 %t314 = load %S.ast.Node, ptr %a2 %t315 = load { ptr, i64, i64 }, ptr %a10 call void @finch.gen.checkArgs(ptr %t313, %S.ast.Node %t314, i64 1, i64 0, { ptr, i64, i64 } %t315) %t316 = load ptr, ptr %a1 %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3236, i64 31, i64 0 }, ptr %a319 + store { ptr, i64, i64 } { ptr @.str.3449, i64 31, i64 0 }, ptr %a319 store { ptr, i64, i64 } %t317, ptr %a320 call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) %t321 = load { ptr, i64, i64 }, ptr %a318 store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.3237, i64 1, i64 0 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a324 call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) %t325 = load { ptr, i64, i64 }, ptr %a322 call void @finch.gen.emit(ptr %t316, { ptr, i64, i64 } %t325) - %t326 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3238, i64 4, i64 0 }) + %t326 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3451, i64 4, i64 0 }) %t327 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t326, 1 ret %S.gen.Val %t327 -endif4977: +endif5261: %t328 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.3239, i64 4, i64 0 }, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.3452, i64 4, i64 0 }, ptr %a330 %t331 = call i32 @finch_str_eq(ptr %a329, ptr %a330) %t332 = icmp ne i32 %t331, 0 - br label %logic.from4978 -logic.from4978: - br i1 %t332, label %logic.end4980, label %logic.rhs4979 -logic.rhs4979: + br label %logic.from5262 +logic.from5262: + br i1 %t332, label %logic.end5264, label %logic.rhs5263 +logic.rhs5263: %t333 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t333, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.3240, i64 6, i64 0 }, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.3453, i64 6, i64 0 }, ptr %a335 %t336 = call i32 @finch_str_eq(ptr %a334, ptr %a335) %t337 = icmp ne i32 %t336, 0 - br label %logic.rend4981 -logic.rend4981: - br label %logic.end4980 -logic.end4980: - %t338 = phi i1 [ true, %logic.from4978 ], [ %t337, %logic.rend4981 ] - br i1 %t338, label %then4982, label %endif4984 -then4982: + br label %logic.rend5265 +logic.rend5265: + br label %logic.end5264 +logic.end5264: + %t338 = phi i1 [ true, %logic.from5262 ], [ %t337, %logic.rend5265 ] + br i1 %t338, label %then5266, label %endif5268 +then5266: %t339 = load ptr, ptr %a1 %t340 = load %S.ast.Node, ptr %a2 %t341 = load { ptr, i64, i64 }, ptr %a10 @@ -44661,39 +48467,39 @@ then4982: store %S.ast.Type %t346, ptr %a347 %t348 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.3241, i64 6, i64 0 }, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.3454, i64 6, i64 0 }, ptr %a350 %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) %t352 = icmp ne i32 %t351, 0 - br i1 %t352, label %then4985, label %endif4987 -then4985: + br i1 %t352, label %then5269, label %endif5271 +then5269: store i64 2, ptr %a342 %t353 = load %S.ast.Type, ptr %a32 store %S.ast.Type %t353, ptr %a354 call void @finch.copy.S_ast_Type(ptr %a355, ptr %a354) %t356 = load %S.ast.Type, ptr %a355 store %S.ast.Type %t356, ptr %a347 - br label %endif4987 -endif4987: + br label %endif5271 +endif5271: %t357 = load %S.ast.Type, ptr %a347 %t358 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t357) store %S.ast.Type %t358, ptr %a359 %t360 = load ptr, ptr %a1 - %t361 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t360, { ptr, i64, i64 } { ptr @.str.3242, i64 17, i64 0 }) + %t361 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t360, { ptr, i64, i64 } { ptr @.str.3455, i64 17, i64 0 }) store { ptr, i64, i64 } %t361, ptr %a362 %t363 = load ptr, ptr %a1 %t364 = load { ptr, i64, i64 }, ptr %a362 - call void @finch.gen.store(ptr %t363, { ptr, i64, i64 } { ptr @.str.3243, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3244, i64 15, i64 0 }, { ptr, i64, i64 } %t364) + call void @finch.gen.store(ptr %t363, { ptr, i64, i64 } { ptr @.str.3456, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3457, i64 15, i64 0 }, { ptr, i64, i64 } %t364) %t365 = load ptr, ptr %a1 %t366 = load ptr, ptr %a1 %t367 = load ptr, ptr %a1 %t368 = load %S.ast.Type, ptr %a4 %t369 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t367, %S.ast.Type %t368) - store { ptr, i64, i64 } { ptr @.str.3246, i64 23, i64 0 }, ptr %a371 + store { ptr, i64, i64 } { ptr @.str.3459, i64 23, i64 0 }, ptr %a371 store { ptr, i64, i64 } %t369, ptr %a372 call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) %t373 = load { ptr, i64, i64 }, ptr %a370 store { ptr, i64, i64 } %t373, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.3247, i64 6, i64 0 }, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.3460, i64 6, i64 0 }, ptr %a376 call void @finch_str_concat(ptr %a374, ptr %a375, ptr %a376) %t377 = load { ptr, i64, i64 }, ptr %a374 %t378 = load { ptr, i64, i64 }, ptr %a3 @@ -44702,20 +48508,20 @@ endif4987: call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) %t382 = load { ptr, i64, i64 }, ptr %a379 store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3248, i64 14, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.3461, i64 14, i64 0 }, ptr %a385 call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) %t386 = load { ptr, i64, i64 }, ptr %a383 %t387 = call { ptr, i64, i64 } @finch.gen.op(ptr %t366, { ptr, i64, i64 } %t386) - %t388 = call { ptr, i64, i64 } @finch.gen.load(ptr %t365, { ptr, i64, i64 } { ptr @.str.3245, i64 3, i64 0 }, { ptr, i64, i64 } %t387) + %t388 = call { ptr, i64, i64 } @finch.gen.load(ptr %t365, { ptr, i64, i64 } { ptr @.str.3458, i64 3, i64 0 }, { ptr, i64, i64 } %t387) store { ptr, i64, i64 } %t388, ptr %a389 %t390 = load ptr, ptr %a1 %t391 = load { ptr, i64, i64 }, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.3249, i64 30, i64 0 }, ptr %a393 + store { ptr, i64, i64 } { ptr @.str.3462, i64 30, i64 0 }, ptr %a393 store { ptr, i64, i64 } %t391, ptr %a394 call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) %t395 = load { ptr, i64, i64 }, ptr %a392 store { ptr, i64, i64 } %t395, ptr %a397 - store { ptr, i64, i64 } { ptr @.str.3250, i64 6, i64 0 }, ptr %a398 + store { ptr, i64, i64 } { ptr @.str.3463, i64 6, i64 0 }, ptr %a398 call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) %t399 = load { ptr, i64, i64 }, ptr %a396 %t400 = load { ptr, i64, i64 }, ptr %a389 @@ -44724,7 +48530,7 @@ endif4987: call void @finch_str_concat(ptr %a401, ptr %a402, ptr %a403) %t404 = load { ptr, i64, i64 }, ptr %a401 store { ptr, i64, i64 } %t404, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.3251, i64 6, i64 0 }, ptr %a407 + store { ptr, i64, i64 } { ptr @.str.3464, i64 6, i64 0 }, ptr %a407 call void @finch_str_concat(ptr %a405, ptr %a406, ptr %a407) %t408 = load { ptr, i64, i64 }, ptr %a405 %t409 = load ptr, ptr %a1 @@ -44735,31 +48541,31 @@ endif4987: call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) %t415 = load { ptr, i64, i64 }, ptr %a412 store { ptr, i64, i64 } %t415, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.3252, i64 1, i64 0 }, ptr %a418 + store { ptr, i64, i64 } { ptr @.str.3465, i64 1, i64 0 }, ptr %a418 call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) %t419 = load { ptr, i64, i64 }, ptr %a416 call void @finch.gen.emit(ptr %t390, { ptr, i64, i64 } %t419) %t420 = load ptr, ptr %a1 %t421 = load { ptr, i64, i64 }, ptr %a362 - %t422 = call { ptr, i64, i64 } @finch.gen.load(ptr %t420, { ptr, i64, i64 } { ptr @.str.3253, i64 3, i64 0 }, { ptr, i64, i64 } %t421) + %t422 = call { ptr, i64, i64 } @finch.gen.load(ptr %t420, { ptr, i64, i64 } { ptr @.str.3466, i64 3, i64 0 }, { ptr, i64, i64 } %t421) store { ptr, i64, i64 } %t422, ptr %a423 %t424 = load ptr, ptr %a1 - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t424, { ptr, i64, i64 } { ptr @.str.3254, i64 3, i64 0 }) + %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t424, { ptr, i64, i64 } { ptr @.str.3467, i64 3, i64 0 }) store { ptr, i64, i64 } %t425, ptr %a426 %t427 = load ptr, ptr %a1 %t428 = load { ptr, i64, i64 }, ptr %a426 - call void @finch.gen.store(ptr %t427, { ptr, i64, i64 } { ptr @.str.3255, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3256, i64 1, i64 0 }, { ptr, i64, i64 } %t428) + call void @finch.gen.store(ptr %t427, { ptr, i64, i64 } { ptr @.str.3468, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3469, i64 1, i64 0 }, { ptr, i64, i64 } %t428) %t429 = load ptr, ptr %a1 %t430 = load ptr, ptr %a1 %t431 = load ptr, ptr %a1 %t432 = load %S.ast.Type, ptr %a4 %t433 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t431, %S.ast.Type %t432) - store { ptr, i64, i64 } { ptr @.str.3258, i64 23, i64 0 }, ptr %a435 + store { ptr, i64, i64 } { ptr @.str.3471, i64 23, i64 0 }, ptr %a435 store { ptr, i64, i64 } %t433, ptr %a436 call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) %t437 = load { ptr, i64, i64 }, ptr %a434 store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3259, i64 6, i64 0 }, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.3472, i64 6, i64 0 }, ptr %a440 call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) %t441 = load { ptr, i64, i64 }, ptr %a438 %t442 = load { ptr, i64, i64 }, ptr %a3 @@ -44768,11 +48574,11 @@ endif4987: call void @finch_str_concat(ptr %a443, ptr %a444, ptr %a445) %t446 = load { ptr, i64, i64 }, ptr %a443 store { ptr, i64, i64 } %t446, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.3260, i64 14, i64 0 }, ptr %a449 + store { ptr, i64, i64 } { ptr @.str.3473, i64 14, i64 0 }, ptr %a449 call void @finch_str_concat(ptr %a447, ptr %a448, ptr %a449) %t450 = load { ptr, i64, i64 }, ptr %a447 %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t430, { ptr, i64, i64 } %t450) - %t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t429, { ptr, i64, i64 } { ptr @.str.3257, i64 3, i64 0 }, { ptr, i64, i64 } %t451) + %t452 = call { ptr, i64, i64 } @finch.gen.load(ptr %t429, { ptr, i64, i64 } { ptr @.str.3470, i64 3, i64 0 }, { ptr, i64, i64 } %t451) store { ptr, i64, i64 } %t452, ptr %a453 %t454 = load ptr, ptr %a1 %t455 = load { ptr, i64, i64 }, ptr %a453 @@ -44784,21 +48590,21 @@ endif4987: %t461 = load { ptr, i64, i64 }, ptr %a457 %t462 = extractvalue { ptr, i64, i64 } %t461, 1 %t463 = icmp uge i64 3, %t462 - br i1 %t463, label %range4988, label %inrange4989 -range4988: - call void @finch_panic_index(ptr @.str.3261, i64 2554, i64 3, i64 %t462) + br i1 %t463, label %range5272, label %inrange5273 +range5272: + call void @finch_panic_index(ptr @.str.3474, i64 2679, i64 3, i64 %t462) unreachable -inrange4989: +inrange5273: %t464 = extractvalue { ptr, i64, i64 } %t461, 0 %t465 = getelementptr inbounds { ptr, i64, i64 }, ptr %t464, i64 3 %t466 = load { ptr, i64, i64 }, ptr %t465 %t467 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t458, { ptr, i64, i64 } %t459, %S.ast.Type %t460, { ptr, i64, i64 } %t466) store { ptr, i64, i64 } %t467, ptr %a468 %t469 = load ptr, ptr %a1 - %t470 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t469, { ptr, i64, i64 } { ptr @.str.3262, i64 10, i64 0 }) + %t470 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t469, { ptr, i64, i64 } { ptr @.str.3475, i64 10, i64 0 }) store { ptr, i64, i64 } %t470, ptr %a471 %t472 = load ptr, ptr %a1 - %t473 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t472, { ptr, i64, i64 } { ptr @.str.3263, i64 10, i64 0 }) + %t473 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t472, { ptr, i64, i64 } { ptr @.str.3476, i64 10, i64 0 }) store { ptr, i64, i64 } %t473, ptr %a474 %t475 = load ptr, ptr %a1 %t476 = load ptr, ptr %a1 @@ -44807,13 +48613,13 @@ inrange4989: %t479 = load { ptr, i64, i64 }, ptr %a468 %t480 = load %S.ast.Type, ptr %a4 %t481 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t478, { ptr, i64, i64 } %t479, %S.ast.Type %t480, i64 0) - %t482 = call { ptr, i64, i64 } @finch.gen.load(ptr %t477, { ptr, i64, i64 } { ptr @.str.3265, i64 3, i64 0 }, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } { ptr @.str.3264, i64 12, i64 0 }, ptr %a484 + %t482 = call { ptr, i64, i64 } @finch.gen.load(ptr %t477, { ptr, i64, i64 } { ptr @.str.3478, i64 3, i64 0 }, { ptr, i64, i64 } %t481) + store { ptr, i64, i64 } { ptr @.str.3477, i64 12, i64 0 }, ptr %a484 store { ptr, i64, i64 } %t482, ptr %a485 call void @finch_str_concat(ptr %a483, ptr %a484, ptr %a485) %t486 = load { ptr, i64, i64 }, ptr %a483 store { ptr, i64, i64 } %t486, ptr %a488 - store { ptr, i64, i64 } { ptr @.str.3266, i64 3, i64 0 }, ptr %a489 + store { ptr, i64, i64 } { ptr @.str.3479, i64 3, i64 0 }, ptr %a489 call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) %t490 = load { ptr, i64, i64 }, ptr %a487 %t491 = call { ptr, i64, i64 } @finch.gen.op(ptr %t476, { ptr, i64, i64 } %t490) @@ -44825,19 +48631,19 @@ inrange4989: call void @finch.gen.label(ptr %t494, { ptr, i64, i64 } %t495) %t496 = load ptr, ptr %a1 %t497 = load { ptr, i64, i64 }, ptr %a426 - %t498 = call { ptr, i64, i64 } @finch.gen.load(ptr %t496, { ptr, i64, i64 } { ptr @.str.3267, i64 3, i64 0 }, { ptr, i64, i64 } %t497) + %t498 = call { ptr, i64, i64 } @finch.gen.load(ptr %t496, { ptr, i64, i64 } { ptr @.str.3480, i64 3, i64 0 }, { ptr, i64, i64 } %t497) store { ptr, i64, i64 } %t498, ptr %a499 %t500 = load ptr, ptr %a1 %t501 = load ptr, ptr %a1 %t502 = load ptr, ptr %a1 %t503 = load %S.ast.Type, ptr %a347 %t504 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t502, %S.ast.Type %t503) - store { ptr, i64, i64 } { ptr @.str.3268, i64 23, i64 0 }, ptr %a506 + store { ptr, i64, i64 } { ptr @.str.3481, i64 23, i64 0 }, ptr %a506 store { ptr, i64, i64 } %t504, ptr %a507 call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507) %t508 = load { ptr, i64, i64 }, ptr %a505 store { ptr, i64, i64 } %t508, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.3269, i64 6, i64 0 }, ptr %a511 + store { ptr, i64, i64 } { ptr @.str.3482, i64 6, i64 0 }, ptr %a511 call void @finch_str_concat(ptr %a509, ptr %a510, ptr %a511) %t512 = load { ptr, i64, i64 }, ptr %a509 %t513 = load { ptr, i64, i64 }, ptr %a423 @@ -44846,7 +48652,7 @@ inrange4989: call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) %t517 = load { ptr, i64, i64 }, ptr %a514 store { ptr, i64, i64 } %t517, ptr %a519 - store { ptr, i64, i64 } { ptr @.str.3270, i64 6, i64 0 }, ptr %a520 + store { ptr, i64, i64 } { ptr @.str.3483, i64 6, i64 0 }, ptr %a520 call void @finch_str_concat(ptr %a518, ptr %a519, ptr %a520) %t521 = load { ptr, i64, i64 }, ptr %a518 %t522 = load { ptr, i64, i64 }, ptr %a499 @@ -44865,17 +48671,17 @@ inrange4989: %t534 = load ptr, ptr %a1 %t535 = load ptr, ptr %a1 %t536 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } { ptr @.str.3272, i64 8, i64 0 }, ptr %a538 + store { ptr, i64, i64 } { ptr @.str.3485, i64 8, i64 0 }, ptr %a538 store { ptr, i64, i64 } %t536, ptr %a539 call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) %t540 = load { ptr, i64, i64 }, ptr %a537 store { ptr, i64, i64 } %t540, ptr %a542 - store { ptr, i64, i64 } { ptr @.str.3273, i64 3, i64 0 }, ptr %a543 + store { ptr, i64, i64 } { ptr @.str.3486, i64 3, i64 0 }, ptr %a543 call void @finch_str_concat(ptr %a541, ptr %a542, ptr %a543) %t544 = load { ptr, i64, i64 }, ptr %a541 %t545 = call { ptr, i64, i64 } @finch.gen.op(ptr %t535, { ptr, i64, i64 } %t544) %t546 = load { ptr, i64, i64 }, ptr %a426 - call void @finch.gen.store(ptr %t534, { ptr, i64, i64 } { ptr @.str.3271, i64 3, i64 0 }, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t546) + call void @finch.gen.store(ptr %t534, { ptr, i64, i64 } { ptr @.str.3484, i64 3, i64 0 }, { ptr, i64, i64 } %t545, { ptr, i64, i64 } %t546) %t547 = load ptr, ptr %a1 %t548 = load { ptr, i64, i64 }, ptr %a474 call void @finch.gen.br(ptr %t547, { ptr, i64, i64 } %t548) @@ -44887,7 +48693,7 @@ inrange4989: call void @finch.gen.loopEnd(ptr %t551, { ptr, i64, i64 } %t552) %t553 = load ptr, ptr %a1 %t554 = load { ptr, i64, i64 }, ptr %a362 - %t555 = call { ptr, i64, i64 } @finch.gen.load(ptr %t553, { ptr, i64, i64 } { ptr @.str.3274, i64 17, i64 0 }, { ptr, i64, i64 } %t554) + %t555 = call { ptr, i64, i64 } @finch.gen.load(ptr %t553, { ptr, i64, i64 } { ptr @.str.3487, i64 17, i64 0 }, { ptr, i64, i64 } %t554) %t556 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t555, 0 %t557 = load %S.ast.Type, ptr %a359 store %S.ast.Type %t557, ptr %a558 @@ -44896,16 +48702,16 @@ inrange4989: %t561 = insertvalue %S.gen.Val %t556, %S.ast.Type %t560, 1 %t562 = insertvalue %S.gen.Val %t561, i1 true, 2 ret %S.gen.Val %t562 -endif4984: +endif5268: %t563 = load ptr, ptr %a1 %t564 = load %S.ast.Node, ptr %a2 %t565 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3275, i64 21, i64 0 }, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.3488, i64 21, i64 0 }, ptr %a567 store { ptr, i64, i64 } %t565, ptr %a568 call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) %t569 = load { ptr, i64, i64 }, ptr %a566 store { ptr, i64, i64 } %t569, ptr %a571 - store { ptr, i64, i64 } { ptr @.str.3276, i64 49, i64 0 }, ptr %a572 + store { ptr, i64, i64 } { ptr @.str.3489, i64 49, i64 0 }, ptr %a572 call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) %t573 = load { ptr, i64, i64 }, ptr %a570 call void @finch.gen.fail(ptr %t563, %S.ast.Node %t564, { ptr, i64, i64 } %t573) @@ -44958,47 +48764,47 @@ entry: %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3277, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3490, i64 4, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br label %logic.from4990 -logic.from4990: - br i1 %t9, label %logic.rhs4991, label %logic.end4992 -logic.rhs4991: + br label %logic.from5274 +logic.from5274: + br i1 %t9, label %logic.rhs5275, label %logic.end5276 +logic.rhs5275: %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t11 = load { ptr, i64, i64 }, ptr %t10 store { ptr, i64, i64 } %t11, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3278, i64 3, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3491, i64 3, i64 0 }, ptr %a13 %t14 = call i32 @finch_str_eq(ptr %a12, ptr %a13) %t15 = icmp ne i32 %t14, 0 - br label %logic.rend4993 -logic.rend4993: - br label %logic.end4992 -logic.end4992: - %t16 = phi i1 [ false, %logic.from4990 ], [ %t15, %logic.rend4993 ] - br label %logic.from4994 -logic.from4994: - br i1 %t16, label %logic.rhs4995, label %logic.end4996 -logic.rhs4995: + br label %logic.rend5277 +logic.rend5277: + br label %logic.end5276 +logic.end5276: + %t16 = phi i1 [ false, %logic.from5274 ], [ %t15, %logic.rend5277 ] + br label %logic.from5278 +logic.from5278: + br i1 %t16, label %logic.rhs5279, label %logic.end5280 +logic.rhs5279: %t17 = load ptr, ptr %a1 %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t19 = load { ptr, i64, i64 }, ptr %t18 %t20 = call i64 @finch.gen.lookup(ptr %t17, { ptr, i64, i64 } %t19) %t21 = icmp slt i64 %t20, 0 - br label %logic.rend4997 -logic.rend4997: - br label %logic.end4996 -logic.end4996: - %t22 = phi i1 [ false, %logic.from4994 ], [ %t21, %logic.rend4997 ] - br i1 %t22, label %then4998, label %endif5000 -then4998: + br label %logic.rend5281 +logic.rend5281: + br label %logic.end5280 +logic.end5280: + %t22 = phi i1 [ false, %logic.from5278 ], [ %t21, %logic.rend5281 ] + br i1 %t22, label %then5282, label %endif5284 +then5282: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5001, label %ok5002 -panic5001: - call void @finch_panic(ptr @.str.3279, i64 2576, ptr @.str.3280) + br i1 %t24, label %panic5285, label %ok5286 +panic5285: + call void @finch_panic(ptr @.str.3492, i64 2701, ptr @.str.3493) unreachable -ok5002: +ok5286: %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 20 %t26 = load ptr, ptr %a1 %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 @@ -45009,11 +48815,11 @@ ok5002: %t32 = load { ptr, i64, i64 }, ptr %t25 %t33 = extractvalue { ptr, i64, i64 } %t32, 1 %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range5003, label %inrange5004 -range5003: - call void @finch_panic_index(ptr @.str.3281, i64 2576, i64 %t31, i64 %t33) + br i1 %t34, label %range5287, label %inrange5288 +range5287: + call void @finch_panic_index(ptr @.str.3494, i64 2701, i64 %t31, i64 %t33) unreachable -inrange5004: +inrange5288: %t35 = extractvalue { ptr, i64, i64 } %t32, 0 %t36 = getelementptr inbounds %S.gen.EnumDef, ptr %t35, i64 %t31 %t37 = load %S.gen.EnumDef, ptr %t36 @@ -45029,43 +48835,43 @@ inrange5004: %t47 = load i64, ptr %t43 %t48 = load ptr, ptr %t42 store i64 0, ptr %a49 - br label %find.cond5005 -find.cond5005: + br label %find.cond5289 +find.cond5289: %t50 = load i64, ptr %a49 %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5006, label %find.end5009 -find.body5006: + br i1 %t51, label %find.body5290, label %find.end5293 +find.body5290: %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i64 %t50 %t53 = load { ptr, i64, i64 }, ptr %t52 store { ptr, i64, i64 } %t53, ptr %a54 store { ptr, i64, i64 } %t45, ptr %a55 %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) %t57 = icmp ne i32 %t56, 0 - br i1 %t57, label %find.hit5007, label %find.next5008 -find.hit5007: + br i1 %t57, label %find.hit5291, label %find.next5292 +find.hit5291: store i64 %t50, ptr %a46 - br label %find.end5009 -find.next5008: + br label %find.end5293 +find.next5292: %t58 = add i64 %t50, 1 store i64 %t58, ptr %a49 - br label %find.cond5005 -find.end5009: + br label %find.cond5289 +find.end5293: %t59 = load i64, ptr %a46 store i64 %t59, ptr %a60 %t61 = load i64, ptr %a60 %t62 = icmp slt i64 %t61, 0 - br i1 %t62, label %then5010, label %endif5012 -then5010: + br i1 %t62, label %then5294, label %endif5296 +then5294: %t63 = load ptr, ptr %a1 %t64 = load %S.ast.Node, ptr %a2 %t65 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t66 = load { ptr, i64, i64 }, ptr %t65 - store { ptr, i64, i64 } { ptr @.str.3282, i64 1, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.3495, i64 1, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.3283, i64 22, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.3496, i64 22, i64 0 }, ptr %a73 call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 %t75 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 @@ -45075,12 +48881,12 @@ then5010: call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) %t80 = load { ptr, i64, i64 }, ptr %a77 store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3284, i64 10, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.3497, i64 10, i64 0 }, ptr %a83 call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) %t84 = load { ptr, i64, i64 }, ptr %a81 %t85 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3285, i64 2, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.3498, i64 2, i64 0 }, ptr %a87 call void @finch_str_join(ptr %a88, ptr %t85, ptr %a87) %t89 = load { ptr, i64, i64 }, ptr %a88 store { ptr, i64, i64 } %t84, ptr %a91 @@ -45088,22 +48894,22 @@ then5010: call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.3286, i64 1, i64 0 }, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.3499, i64 1, i64 0 }, ptr %a96 call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t97) - br label %endif5012 -endif5012: + br label %endif5296 +endif5296: %t98 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 %t99 = load i64, ptr %a60 %t100 = load { ptr, i64, i64 }, ptr %t98 %t101 = extractvalue { ptr, i64, i64 } %t100, 1 %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5013, label %inrange5014 -range5013: - call void @finch_panic_index(ptr @.str.3287, i64 2581, i64 %t99, i64 %t101) + br i1 %t102, label %range5297, label %inrange5298 +range5297: + call void @finch_panic_index(ptr @.str.3500, i64 2706, i64 %t99, i64 %t101) unreachable -inrange5014: +inrange5298: %t103 = extractvalue { ptr, i64, i64 } %t100, 0 %t104 = getelementptr inbounds i64, ptr %t103, i64 %t99 %t105 = load i64, ptr %t104 @@ -45116,7 +48922,7 @@ inrange5014: %t112 = load %S.ast.Type, ptr %a111 %t113 = insertvalue %S.gen.Val %t108, %S.ast.Type %t112, 1 ret %S.gen.Val %t113 -endif5000: +endif5284: %t114 = load ptr, ptr %a1 %t115 = load ptr, ptr %a1 %t116 = load %S.ast.Node, ptr %a2 @@ -45124,7 +48930,7 @@ endif5000: %t118 = call %S.gen.Val @finch.gen.exprWant(ptr %t115, %S.ast.Node %t116, %S.ast.Type %t117) %t119 = load %S.ast.Type, ptr %a3 %t120 = load %S.ast.Node, ptr %a2 - %t121 = call %S.gen.Val @finch.gen.coerce(ptr %t114, %S.gen.Val %t118, %S.ast.Type %t119, %S.ast.Node %t120, { ptr, i64, i64 } { ptr @.str.3288, i64 12, i64 0 }) + %t121 = call %S.gen.Val @finch.gen.coerce(ptr %t114, %S.gen.Val %t118, %S.ast.Type %t119, %S.ast.Node %t120, { ptr, i64, i64 } { ptr @.str.3501, i64 12, i64 0 }) ret %S.gen.Val %t121 } @@ -45237,11 +49043,11 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3289, i64 2589, i64 0, i64 %t7) + br i1 %t8, label %range5299, label %inrange5300 +range5299: + call void @finch_panic_index(ptr @.str.3502, i64 2714, i64 0, i64 %t7) unreachable -inrange5016: +inrange5300: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -45256,51 +49062,51 @@ inrange5016: %t20 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.3290, i64 4, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3503, i64 4, i64 0 }, ptr %a23 %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) %t25 = icmp ne i32 %t24, 0 - br label %logic.from5017 -logic.from5017: - br i1 %t25, label %logic.end5019, label %logic.rhs5018 -logic.rhs5018: + br label %logic.from5301 +logic.from5301: + br i1 %t25, label %logic.end5303, label %logic.rhs5302 +logic.rhs5302: %t26 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3291, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3504, i64 4, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br label %logic.rend5020 -logic.rend5020: - br label %logic.end5019 -logic.end5019: - %t32 = phi i1 [ true, %logic.from5017 ], [ %t31, %logic.rend5020 ] - br i1 %t32, label %then5021, label %endif5023 -then5021: + br label %logic.rend5304 +logic.rend5304: + br label %logic.end5303 +logic.end5303: + %t32 = phi i1 [ true, %logic.from5301 ], [ %t31, %logic.rend5304 ] + br i1 %t32, label %then5305, label %endif5307 +then5305: %t33 = load ptr, ptr %a1 %t34 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t35 = load { ptr, i64, i64 }, ptr %t34 %t36 = extractvalue { ptr, i64, i64 } %t35, 1 %t37 = icmp uge i64 0, %t36 - br i1 %t37, label %range5024, label %inrange5025 -range5024: - call void @finch_panic_index(ptr @.str.3292, i64 2592, i64 0, i64 %t36) + br i1 %t37, label %range5308, label %inrange5309 +range5308: + call void @finch_panic_index(ptr @.str.3505, i64 2717, i64 0, i64 %t36) unreachable -inrange5025: +inrange5309: %t38 = extractvalue { ptr, i64, i64 } %t35, 0 %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 0 %t40 = load %S.ast.Node, ptr %t39 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3293, i64 30, i64 0 }) - br label %endif5023 -endif5023: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.3506, i64 30, i64 0 }) + br label %endif5307 +endif5307: %t41 = load ptr, ptr %a1 - %t42 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t41, { ptr, i64, i64 } { ptr @.str.3294, i64 9, i64 0 }) + %t42 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t41, { ptr, i64, i64 } { ptr @.str.3507, i64 9, i64 0 }) store { ptr, i64, i64 } %t42, ptr %a43 store i1 false, ptr %a44 store i1 false, ptr %a45 store { ptr, i64, i64 } zeroinitializer, ptr %a46 store { ptr, i64, i64 } zeroinitializer, ptr %a47 store { ptr, i64, i64 } zeroinitializer, ptr %a48 - %t49 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3295, i64 4, i64 0 }) + %t49 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3508, i64 4, i64 0 }) store %S.ast.Type %t49, ptr %a50 %t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1 @@ -45309,23 +49115,23 @@ endif5023: store i64 %t54, ptr %a55 %t56 = load i64, ptr %a55 store i64 0, ptr %a57 - br label %for.cond5026 -for.cond5026: + br label %for.cond5310 +for.cond5310: %t58 = load i64, ptr %a57 %t59 = icmp slt i64 %t58, %t56 - br i1 %t59, label %for.body5027, label %for.end5029 -for.body5027: + br i1 %t59, label %for.body5311, label %for.end5313 +for.body5311: %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t61 = load i64, ptr %a57 %t62 = add i64 1, %t61 %t63 = load { ptr, i64, i64 }, ptr %t60 %t64 = extractvalue { ptr, i64, i64 } %t63, 1 %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range5030, label %inrange5031 -range5030: - call void @finch_panic_index(ptr @.str.3296, i64 2603, i64 %t62, i64 %t64) + br i1 %t65, label %range5314, label %inrange5315 +range5314: + call void @finch_panic_index(ptr @.str.3509, i64 2728, i64 %t62, i64 %t64) unreachable -inrange5031: +inrange5315: %t66 = extractvalue { ptr, i64, i64 } %t63, 0 %t67 = getelementptr inbounds %S.ast.Node, ptr %t66, i64 %t62 %t68 = load %S.ast.Node, ptr %t67 @@ -45334,38 +49140,38 @@ inrange5031: %t71 = load %S.ast.Node, ptr %a70 store %S.ast.Node %t71, ptr %a72 %t73 = load i1, ptr %a44 - br i1 %t73, label %then5032, label %endif5034 -then5032: + br i1 %t73, label %then5316, label %endif5318 +then5316: %t74 = load ptr, ptr %a1 %t75 = load %S.ast.Node, ptr %a72 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.3297, i64 72, i64 0 }) - br label %endif5034 -endif5034: + call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.3510, i64 72, i64 0 }) + br label %endif5318 +endif5318: %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3298, i64 9, i64 0 }) + %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3511, i64 9, i64 0 }) store { ptr, i64, i64 } %t77, ptr %a78 %t79 = load ptr, ptr %a1 - %t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.3299, i64 10, i64 0 }) + %t80 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t79, { ptr, i64, i64 } { ptr @.str.3512, i64 10, i64 0 }) store { ptr, i64, i64 } %t80, ptr %a81 %t82 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 6 %t83 = load i1, ptr %t82 - br i1 %t83, label %then5035, label %else5036 -then5035: + br i1 %t83, label %then5319, label %else5320 +then5319: store i1 true, ptr %a44 %t84 = load ptr, ptr %a1 %t85 = load { ptr, i64, i64 }, ptr %a78 call void @finch.gen.br(ptr %t84, { ptr, i64, i64 } %t85) - br label %endif5037 -else5036: + br label %endif5321 +else5320: %t86 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 9 %t87 = load { ptr, i64, i64 }, ptr %t86 %t88 = extractvalue { ptr, i64, i64 } %t87, 1 %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5038, label %inrange5039 -range5038: - call void @finch_panic_index(ptr @.str.3300, i64 2613, i64 0, i64 %t88) + br i1 %t89, label %range5322, label %inrange5323 +range5322: + call void @finch_panic_index(ptr @.str.3513, i64 2738, i64 0, i64 %t88) unreachable -inrange5039: +inrange5323: %t90 = extractvalue { ptr, i64, i64 } %t87, 0 %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i32 0, i32 9 @@ -45377,22 +49183,22 @@ inrange5039: %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1 %t99 = load i64, ptr %t98 store i64 0, ptr %a100 - br label %for.cond5040 -for.cond5040: + br label %for.cond5324 +for.cond5324: %t101 = load i64, ptr %a100 %t102 = icmp slt i64 %t101, %t99 - br i1 %t102, label %for.body5041, label %for.end5043 -for.body5041: + br i1 %t102, label %for.body5325, label %for.end5327 +for.body5325: %t103 = load ptr, ptr %a1 %t104 = load i64, ptr %a100 %t105 = load { ptr, i64, i64 }, ptr %a97 %t106 = extractvalue { ptr, i64, i64 } %t105, 1 %t107 = icmp uge i64 %t104, %t106 - br i1 %t107, label %range5044, label %inrange5045 -range5044: - call void @finch_panic_index(ptr @.str.3301, i64 2615, i64 %t104, i64 %t106) + br i1 %t107, label %range5328, label %inrange5329 +range5328: + call void @finch_panic_index(ptr @.str.3514, i64 2740, i64 %t104, i64 %t106) unreachable -inrange5045: +inrange5329: %t108 = extractvalue { ptr, i64, i64 } %t105, 0 %t109 = getelementptr inbounds %S.ast.Node, ptr %t108, i64 %t104 %t110 = load %S.ast.Node, ptr %t109 @@ -45406,62 +49212,62 @@ inrange5045: %t118 = load i64, ptr %t114 %t119 = load ptr, ptr %a46 store i64 0, ptr %a120 - br label %find.cond5046 -find.cond5046: + br label %find.cond5330 +find.cond5330: %t121 = load i64, ptr %a120 %t122 = icmp slt i64 %t121, %t118 - br i1 %t122, label %find.body5047, label %find.end5050 -find.body5047: + br i1 %t122, label %find.body5331, label %find.end5334 +find.body5331: %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i64 %t121 %t124 = load { ptr, i64, i64 }, ptr %t123 store { ptr, i64, i64 } %t124, ptr %a125 store { ptr, i64, i64 } %t116, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %find.hit5048, label %find.next5049 -find.hit5048: + br i1 %t128, label %find.hit5332, label %find.next5333 +find.hit5332: store i64 %t121, ptr %a117 - br label %find.end5050 -find.next5049: + br label %find.end5334 +find.next5333: %t129 = add i64 %t121, 1 store i64 %t129, ptr %a120 - br label %find.cond5046 -find.end5050: + br label %find.cond5330 +find.end5334: %t130 = load i64, ptr %a117 %t131 = icmp sge i64 %t130, 0 - br label %logic.from5051 -logic.from5051: - br i1 %t131, label %logic.rhs5052, label %logic.end5053 -logic.rhs5052: + br label %logic.from5335 +logic.from5335: + br i1 %t131, label %logic.rhs5336, label %logic.end5337 +logic.rhs5336: %t132 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t133 = load { ptr, i64, i64 }, ptr %t132 store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3302, i64 4, i64 0 }, ptr %a135 + store { ptr, i64, i64 } { ptr @.str.3515, i64 4, i64 0 }, ptr %a135 %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) %t137 = icmp ne i32 %t136, 0 - br label %logic.rend5054 -logic.rend5054: - br label %logic.end5053 -logic.end5053: - %t138 = phi i1 [ false, %logic.from5051 ], [ %t137, %logic.rend5054 ] - br i1 %t138, label %then5055, label %endif5057 -then5055: + br label %logic.rend5338 +logic.rend5338: + br label %logic.end5337 +logic.end5337: + %t138 = phi i1 [ false, %logic.from5335 ], [ %t137, %logic.rend5338 ] + br i1 %t138, label %then5339, label %endif5341 +then5339: %t139 = load ptr, ptr %a1 %t140 = load i64, ptr %a100 %t141 = load { ptr, i64, i64 }, ptr %a97 %t142 = extractvalue { ptr, i64, i64 } %t141, 1 %t143 = icmp uge i64 %t140, %t142 - br i1 %t143, label %range5058, label %inrange5059 -range5058: - call void @finch_panic_index(ptr @.str.3303, i64 2617, i64 %t140, i64 %t142) + br i1 %t143, label %range5342, label %inrange5343 +range5342: + call void @finch_panic_index(ptr @.str.3516, i64 2742, i64 %t140, i64 %t142) unreachable -inrange5059: +inrange5343: %t144 = extractvalue { ptr, i64, i64 } %t141, 0 %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 %t140 %t146 = load %S.ast.Node, ptr %t145 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t146, { ptr, i64, i64 } { ptr @.str.3304, i64 49, i64 0 }) - br label %endif5057 -endif5057: + call void @finch.gen.fail(ptr %t139, %S.ast.Node %t146, { ptr, i64, i64 } { ptr @.str.3517, i64 49, i64 0 }) + br label %endif5341 +endif5341: %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1 %t148 = getelementptr inbounds %S.gen.Val, ptr %a113, i32 0, i32 0 %t149 = load { ptr, i64, i64 }, ptr %t148 @@ -45482,33 +49288,33 @@ endif5057: %t161 = load { ptr, i64, i64 }, ptr %a97 %t162 = extractvalue { ptr, i64, i64 } %t161, 1 %t163 = icmp uge i64 %t160, %t162 - br i1 %t163, label %range5060, label %inrange5061 -range5060: - call void @finch_panic_index(ptr @.str.3306, i64 2620, i64 %t160, i64 %t162) + br i1 %t163, label %range5344, label %inrange5345 +range5344: + call void @finch_panic_index(ptr @.str.3519, i64 2745, i64 %t160, i64 %t162) unreachable -inrange5061: +inrange5345: %t164 = extractvalue { ptr, i64, i64 } %t161, 0 %t165 = getelementptr inbounds %S.ast.Node, ptr %t164, i64 %t160 %t166 = load %S.ast.Node, ptr %t165 - %t167 = call %S.gen.Val @finch.gen.compare(ptr %t157, { ptr, i64, i64 } { ptr @.str.3305, i64 2, i64 0 }, %S.gen.Val %t158, %S.gen.Val %t159, %S.ast.Node %t166) + %t167 = call %S.gen.Val @finch.gen.compare(ptr %t157, { ptr, i64, i64 } { ptr @.str.3518, i64 2, i64 0 }, %S.gen.Val %t158, %S.gen.Val %t159, %S.ast.Node %t166) store %S.gen.Val %t167, ptr %a168 %t169 = load i64, ptr %a100 %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1 %t171 = load i64, ptr %t170 %t172 = sub i64 %t171, 1 %t173 = icmp eq i64 %t169, %t172 - br i1 %t173, label %then5062, label %else5063 -then5062: + br i1 %t173, label %then5346, label %else5347 +then5346: %t174 = load ptr, ptr %a1 %t175 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0 %t176 = load { ptr, i64, i64 }, ptr %t175 %t177 = load { ptr, i64, i64 }, ptr %a78 %t178 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.condBr(ptr %t174, { ptr, i64, i64 } %t176, { ptr, i64, i64 } %t177, { ptr, i64, i64 } %t178) - br label %endif5064 -else5063: + br label %endif5348 +else5347: %t179 = load ptr, ptr %a1 - %t180 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t179, { ptr, i64, i64 } { ptr @.str.3307, i64 8, i64 0 }) + %t180 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t179, { ptr, i64, i64 } { ptr @.str.3520, i64 8, i64 0 }) store { ptr, i64, i64 } %t180, ptr %a181 %t182 = load ptr, ptr %a1 %t183 = getelementptr inbounds %S.gen.Val, ptr %a168, i32 0, i32 0 @@ -45519,17 +49325,17 @@ else5063: %t187 = load ptr, ptr %a1 %t188 = load { ptr, i64, i64 }, ptr %a181 call void @finch.gen.label(ptr %t187, { ptr, i64, i64 } %t188) - br label %endif5064 -endif5064: - br label %for.step5042 -for.step5042: + br label %endif5348 +endif5348: + br label %for.step5326 +for.step5326: %t189 = load i64, ptr %a100 %t190 = add i64 %t189, 1 store i64 %t190, ptr %a100 - br label %for.cond5040 -for.end5043: - br label %endif5037 -endif5037: + br label %for.cond5324 +for.end5327: + br label %endif5321 +endif5321: %t191 = load ptr, ptr %a1 %t192 = load { ptr, i64, i64 }, ptr %a78 call void @finch.gen.label(ptr %t191, { ptr, i64, i64 } %t192) @@ -45537,11 +49343,11 @@ endif5037: %t194 = load { ptr, i64, i64 }, ptr %t193 %t195 = extractvalue { ptr, i64, i64 } %t194, 1 %t196 = icmp uge i64 1, %t195 - br i1 %t196, label %range5065, label %inrange5066 -range5065: - call void @finch_panic_index(ptr @.str.3308, i64 2631, i64 1, i64 %t195) + br i1 %t196, label %range5349, label %inrange5350 +range5349: + call void @finch_panic_index(ptr @.str.3521, i64 2756, i64 1, i64 %t195) unreachable -inrange5066: +inrange5350: %t197 = extractvalue { ptr, i64, i64 } %t194, 0 %t198 = getelementptr inbounds %S.ast.Node, ptr %t197, i64 1 %t199 = load %S.ast.Node, ptr %t198 @@ -45550,81 +49356,81 @@ inrange5066: %t202 = load %S.ast.Node, ptr %a201 store %S.ast.Node %t202, ptr %a203 %t204 = load i1, ptr %a3 - br i1 %t204, label %then5067, label %else5068 -then5067: + br i1 %t204, label %then5351, label %else5352 +then5351: %t205 = load ptr, ptr %a1 %t206 = load %S.ast.Node, ptr %a203 %t207 = call %S.gen.Val @finch.gen.expr(ptr %t205, %S.ast.Node %t206) store %S.gen.Val %t207, ptr %a208 %t209 = load i64, ptr %a57 %t210 = icmp eq i64 %t209, 0 - br label %logic.from5070 -logic.from5070: - br i1 %t210, label %logic.end5072, label %logic.rhs5071 -logic.rhs5071: + br label %logic.from5354 +logic.from5354: + br i1 %t210, label %logic.end5356, label %logic.rhs5355 +logic.rhs5355: %t211 = getelementptr inbounds %S.ast.Type, ptr %a50, i32 0, i32 0 %t212 = load { ptr, i64, i64 }, ptr %t211 store { ptr, i64, i64 } %t212, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.3309, i64 4, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.3522, i64 4, i64 0 }, ptr %a214 %t215 = call i32 @finch_str_eq(ptr %a213, ptr %a214) %t216 = icmp ne i32 %t215, 0 - br label %logic.rend5073 -logic.rend5073: - br label %logic.end5072 -logic.end5072: - %t217 = phi i1 [ true, %logic.from5070 ], [ %t216, %logic.rend5073 ] - br i1 %t217, label %then5074, label %endif5076 -then5074: + br label %logic.rend5357 +logic.rend5357: + br label %logic.end5356 +logic.end5356: + %t217 = phi i1 [ true, %logic.from5354 ], [ %t216, %logic.rend5357 ] + br i1 %t217, label %then5358, label %endif5360 +then5358: %t218 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1 %t219 = getelementptr inbounds %S.ast.Type, ptr %t218, i32 0, i32 0 %t220 = load { ptr, i64, i64 }, ptr %t219 store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3310, i64 4, i64 0 }, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.3523, i64 4, i64 0 }, ptr %a222 %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) %t224 = icmp ne i32 %t223, 0 - br label %logic.from5077 -logic.from5077: - br i1 %t224, label %logic.end5079, label %logic.rhs5078 -logic.rhs5078: + br label %logic.from5361 +logic.from5361: + br i1 %t224, label %logic.end5363, label %logic.rhs5362 +logic.rhs5362: %t225 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1 %t226 = getelementptr inbounds %S.ast.Type, ptr %t225, i32 0, i32 0 %t227 = load { ptr, i64, i64 }, ptr %t226 store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3311, i64 4, i64 0 }, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.3524, i64 4, i64 0 }, ptr %a229 %t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229) %t231 = icmp ne i32 %t230, 0 - br label %logic.rend5080 -logic.rend5080: - br label %logic.end5079 -logic.end5079: - %t232 = phi i1 [ true, %logic.from5077 ], [ %t231, %logic.rend5080 ] - br i1 %t232, label %then5081, label %endif5083 -then5081: + br label %logic.rend5364 +logic.rend5364: + br label %logic.end5363 +logic.end5363: + %t232 = phi i1 [ true, %logic.from5361 ], [ %t231, %logic.rend5364 ] + br i1 %t232, label %then5365, label %endif5367 +then5365: %t233 = load ptr, ptr %a1 %t234 = load %S.ast.Node, ptr %a203 - call void @finch.gen.fail(ptr %t233, %S.ast.Node %t234, { ptr, i64, i64 } { ptr @.str.3312, i64 52, i64 0 }) - br label %endif5083 -endif5083: + call void @finch.gen.fail(ptr %t233, %S.ast.Node %t234, { ptr, i64, i64 } { ptr @.str.3525, i64 52, i64 0 }) + br label %endif5367 +endif5367: %t235 = getelementptr inbounds %S.gen.Val, ptr %a208, i32 0, i32 1 %t236 = load %S.ast.Type, ptr %t235 store %S.ast.Type %t236, ptr %a237 call void @finch.copy.S_ast_Type(ptr %a238, ptr %a237) %t239 = load %S.ast.Type, ptr %a238 store %S.ast.Type %t239, ptr %a50 - br label %endif5076 -endif5076: + br label %endif5360 +endif5360: %t240 = load ptr, ptr %a1 %t241 = load %S.gen.Val, ptr %a208 %t242 = load %S.ast.Type, ptr %a50 %t243 = load %S.ast.Node, ptr %a203 - %t244 = call %S.gen.Val @finch.gen.coerce(ptr %t240, %S.gen.Val %t241, %S.ast.Type %t242, %S.ast.Node %t243, { ptr, i64, i64 } { ptr @.str.3313, i64 57, i64 0 }) + %t244 = call %S.gen.Val @finch.gen.coerce(ptr %t240, %S.gen.Val %t241, %S.ast.Type %t242, %S.ast.Node %t243, { ptr, i64, i64 } { ptr @.str.3526, i64 57, i64 0 }) store %S.gen.Val %t244, ptr %a208 %t245 = load ptr, ptr %a1 %t246 = load %S.gen.Val, ptr %a208 %t247 = call { ptr, i64, i64 } @finch.gen.own(ptr %t245, %S.gen.Val %t246) store { ptr, i64, i64 } %t247, ptr %a248 %t249 = load ptr, ptr %a1 - %t250 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t249, { ptr, i64, i64 } { ptr @.str.3314, i64 10, i64 0 }) + %t250 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t249, { ptr, i64, i64 } { ptr @.str.3527, i64 10, i64 0 }) store { ptr, i64, i64 } %t250, ptr %a251 %t252 = load ptr, ptr %a1 %t253 = load { ptr, i64, i64 }, ptr %a251 @@ -45660,82 +49466,82 @@ endif5076: %t275 = load { ptr, i64, i64 }, ptr %a43 call void @finch.gen.br(ptr %t274, { ptr, i64, i64 } %t275) store i1 true, ptr %a45 - br label %endif5069 -else5068: + br label %endif5353 +else5352: %t276 = getelementptr inbounds %S.ast.Node, ptr %a203, i32 0, i32 0 %t277 = load { ptr, i64, i64 }, ptr %t276 store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3315, i64 5, i64 0 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.3528, i64 5, i64 0 }, ptr %a279 %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) %t281 = icmp ne i32 %t280, 0 - br i1 %t281, label %then5084, label %else5085 -then5084: + br i1 %t281, label %then5368, label %else5369 +then5368: %t282 = load ptr, ptr %a1 %t283 = load %S.ast.Node, ptr %a203 call void @finch.gen.block(ptr %t282, %S.ast.Node %t283, i1 true) - br label %endif5086 -else5085: + br label %endif5370 +else5369: %t284 = load ptr, ptr %a1 %t285 = load %S.ast.Node, ptr %a203 call void @finch.gen.stmt(ptr %t284, %S.ast.Node %t285) - br label %endif5086 -endif5086: + br label %endif5370 +endif5370: %t286 = load ptr, ptr %a1 %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic5087, label %ok5088 -panic5087: - call void @finch_panic(ptr @.str.3316, i64 2655, ptr @.str.3317) + br i1 %t287, label %panic5371, label %ok5372 +panic5371: + call void @finch_panic(ptr @.str.3529, i64 2780, ptr @.str.3530) unreachable -ok5088: +ok5372: %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 9 %t289 = load i1, ptr %t288 %t290 = xor i1 %t289, true - br i1 %t290, label %then5089, label %endif5091 -then5089: + br i1 %t290, label %then5373, label %endif5375 +then5373: store i1 true, ptr %a45 - br label %endif5091 -endif5091: + br label %endif5375 +endif5375: %t291 = load ptr, ptr %a1 %t292 = load { ptr, i64, i64 }, ptr %a43 call void @finch.gen.br(ptr %t291, { ptr, i64, i64 } %t292) - br label %endif5069 -endif5069: + br label %endif5353 +endif5353: %t293 = getelementptr inbounds %S.ast.Node, ptr %a72, i32 0, i32 6 %t294 = load i1, ptr %t293 %t295 = xor i1 %t294, true - br i1 %t295, label %then5092, label %endif5094 -then5092: + br i1 %t295, label %then5376, label %endif5378 +then5376: %t296 = load ptr, ptr %a1 %t297 = load { ptr, i64, i64 }, ptr %a81 call void @finch.gen.label(ptr %t296, { ptr, i64, i64 } %t297) - br label %endif5094 -endif5094: - br label %for.step5028 -for.step5028: + br label %endif5378 +endif5378: + br label %for.step5312 +for.step5312: %t298 = load i64, ptr %a57 %t299 = add i64 %t298, 1 store i64 %t299, ptr %a57 - br label %for.cond5026 -for.end5029: + br label %for.cond5310 +for.end5313: %t300 = load i1, ptr %a44 %t301 = xor i1 %t300, true - br i1 %t301, label %then5095, label %endif5097 -then5095: + br i1 %t301, label %then5379, label %endif5381 +then5379: %t302 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 %t303 = load { ptr, i64, i64 }, ptr %t302 store { ptr, i64, i64 } %t303, ptr %a304 - store { ptr, i64, i64 } { ptr @.str.3318, i64 4, i64 0 }, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.3531, i64 4, i64 0 }, ptr %a305 %t306 = call i32 @finch_str_eq(ptr %a304, ptr %a305) %t307 = icmp ne i32 %t306, 0 - br i1 %t307, label %then5098, label %else5099 -then5098: + br i1 %t307, label %then5382, label %else5383 +then5382: %t308 = load ptr, ptr %a1 %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic5101, label %ok5102 -panic5101: - call void @finch_panic(ptr @.str.3319, i64 2666, ptr @.str.3320) + br i1 %t309, label %panic5385, label %ok5386 +panic5385: + call void @finch_panic(ptr @.str.3532, i64 2791, ptr @.str.3533) unreachable -ok5102: +ok5386: %t310 = getelementptr inbounds %S.gen.Gen, ptr %t308, i32 0, i32 20 %t311 = load ptr, ptr %a1 %t312 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 @@ -45746,11 +49552,11 @@ ok5102: %t317 = load { ptr, i64, i64 }, ptr %t310 %t318 = extractvalue { ptr, i64, i64 } %t317, 1 %t319 = icmp uge i64 %t316, %t318 - br i1 %t319, label %range5103, label %inrange5104 -range5103: - call void @finch_panic_index(ptr @.str.3321, i64 2666, i64 %t316, i64 %t318) + br i1 %t319, label %range5387, label %inrange5388 +range5387: + call void @finch_panic_index(ptr @.str.3534, i64 2791, i64 %t316, i64 %t318) unreachable -inrange5104: +inrange5388: %t320 = extractvalue { ptr, i64, i64 } %t317, 0 %t321 = getelementptr inbounds %S.gen.EnumDef, ptr %t320, i64 %t316 %t322 = load %S.gen.EnumDef, ptr %t321 @@ -45763,23 +49569,23 @@ inrange5104: %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i32 0, i32 1 %t330 = load i64, ptr %t329 store i64 0, ptr %a331 - br label %for.cond5105 -for.cond5105: + br label %for.cond5389 +for.cond5389: %t332 = load i64, ptr %a331 %t333 = icmp slt i64 %t332, %t330 - br i1 %t333, label %for.body5106, label %for.end5108 -for.body5106: + br i1 %t333, label %for.body5390, label %for.end5392 +for.body5390: %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %a46, i32 0, i32 1 %t335 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 3 %t336 = load i64, ptr %a331 %t337 = load { ptr, i64, i64 }, ptr %t335 %t338 = extractvalue { ptr, i64, i64 } %t337, 1 %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range5109, label %inrange5110 -range5109: - call void @finch_panic_index(ptr @.str.3322, i64 2669, i64 %t336, i64 %t338) + br i1 %t339, label %range5393, label %inrange5394 +range5393: + call void @finch_panic_index(ptr @.str.3535, i64 2794, i64 %t336, i64 %t338) unreachable -inrange5110: +inrange5394: %t340 = extractvalue { ptr, i64, i64 } %t337, 0 %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 %t342 = load i64, ptr %t341 @@ -45789,43 +49595,43 @@ inrange5110: %t346 = load i64, ptr %t334 %t347 = load ptr, ptr %a46 store i64 0, ptr %a348 - br label %find.cond5111 -find.cond5111: + br label %find.cond5395 +find.cond5395: %t349 = load i64, ptr %a348 %t350 = icmp slt i64 %t349, %t346 - br i1 %t350, label %find.body5112, label %find.end5115 -find.body5112: + br i1 %t350, label %find.body5396, label %find.end5399 +find.body5396: %t351 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i64 %t349 %t352 = load { ptr, i64, i64 }, ptr %t351 store { ptr, i64, i64 } %t352, ptr %a353 store { ptr, i64, i64 } %t344, ptr %a354 %t355 = call i32 @finch_str_eq(ptr %a353, ptr %a354) %t356 = icmp ne i32 %t355, 0 - br i1 %t356, label %find.hit5113, label %find.next5114 -find.hit5113: + br i1 %t356, label %find.hit5397, label %find.next5398 +find.hit5397: store i64 %t349, ptr %a345 - br label %find.end5115 -find.next5114: + br label %find.end5399 +find.next5398: %t357 = add i64 %t349, 1 store i64 %t357, ptr %a348 - br label %find.cond5111 -find.end5115: + br label %find.cond5395 +find.end5399: %t358 = load i64, ptr %a345 %t359 = icmp sge i64 %t358, 0 %t360 = xor i1 %t359, true - br i1 %t360, label %then5116, label %endif5118 -then5116: + br i1 %t360, label %then5400, label %endif5402 +then5400: %t361 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 %t362 = getelementptr inbounds %S.gen.EnumDef, ptr %a326, i32 0, i32 2 %t363 = load i64, ptr %a331 %t364 = load { ptr, i64, i64 }, ptr %t362 %t365 = extractvalue { ptr, i64, i64 } %t364, 1 %t366 = icmp uge i64 %t363, %t365 - br i1 %t366, label %range5119, label %inrange5120 -range5119: - call void @finch_panic_index(ptr @.str.3323, i64 2670, i64 %t363, i64 %t365) + br i1 %t366, label %range5403, label %inrange5404 +range5403: + call void @finch_panic_index(ptr @.str.3536, i64 2795, i64 %t363, i64 %t365) unreachable -inrange5120: +inrange5404: %t367 = extractvalue { ptr, i64, i64 } %t364, 0 %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t363 %t369 = load { ptr, i64, i64 }, ptr %t368 @@ -45839,105 +49645,105 @@ inrange5120: %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 store { ptr, i64, i64 } %t372, ptr %t376 store i64 %t374, ptr %t361 - br label %endif5118 -endif5118: - br label %for.step5107 -for.step5107: + br label %endif5402 +endif5402: + br label %for.step5391 +for.step5391: %t377 = load i64, ptr %a331 %t378 = add i64 %t377, 1 store i64 %t378, ptr %a331 - br label %for.cond5105 -for.end5108: + br label %for.cond5389 +for.end5392: %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 %t380 = load i64, ptr %t379 %t381 = icmp sgt i64 %t380, 0 - br i1 %t381, label %then5121, label %endif5123 -then5121: + br i1 %t381, label %then5405, label %endif5407 +then5405: %t382 = load ptr, ptr %a1 %t383 = load %S.ast.Node, ptr %a2 %t384 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3325, i64 2, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.3538, i64 2, i64 0 }, ptr %a385 call void @finch_str_join(ptr %a386, ptr %a327, ptr %a385) %t387 = load { ptr, i64, i64 }, ptr %a386 - store { ptr, i64, i64 } { ptr @.str.3324, i64 26, i64 0 }, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.3537, i64 26, i64 0 }, ptr %a389 store { ptr, i64, i64 } %t387, ptr %a390 call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) %t391 = load { ptr, i64, i64 }, ptr %a388 store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.3326, i64 29, i64 0 }, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.3539, i64 29, i64 0 }, ptr %a394 call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) %t395 = load { ptr, i64, i64 }, ptr %a392 call void @finch.gen.fail(ptr %t382, %S.ast.Node %t383, { ptr, i64, i64 } %t395) - br label %endif5123 -endif5123: - br label %endif5100 -else5099: + br label %endif5407 +endif5407: + br label %endif5384 +else5383: %t396 = load ptr, ptr %a1 %t397 = load %S.ast.Node, ptr %a2 %t398 = load %S.ast.Type, ptr %a19 %t399 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t398) - store { ptr, i64, i64 } { ptr @.str.3327, i64 11, i64 0 }, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.3540, i64 11, i64 0 }, ptr %a401 store { ptr, i64, i64 } %t399, ptr %a402 call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) %t403 = load { ptr, i64, i64 }, ptr %a400 store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.3328, i64 54, i64 0 }, ptr %a406 + store { ptr, i64, i64 } { ptr @.str.3541, i64 54, i64 0 }, ptr %a406 call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) %t407 = load { ptr, i64, i64 }, ptr %a404 call void @finch.gen.fail(ptr %t396, %S.ast.Node %t397, { ptr, i64, i64 } %t407) - br label %endif5100 -endif5100: + br label %endif5384 +endif5384: %t408 = load ptr, ptr %a1 %t409 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t408, { ptr, i64, i64 } { ptr @.str.3329, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3330, i64 35, i64 0 }, %S.ast.Node %t409) + call void @finch.gen.panicIf(ptr %t408, { ptr, i64, i64 } { ptr @.str.3542, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3543, i64 35, i64 0 }, %S.ast.Node %t409) %t410 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t410, { ptr, i64, i64 } { ptr @.str.3331, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t410, { ptr, i64, i64 } { ptr @.str.3544, i64 11, i64 0 }) %t411 = load ptr, ptr %a1 %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5124, label %ok5125 -panic5124: - call void @finch_panic(ptr @.str.3332, i64 2682, ptr @.str.3333) + br i1 %t412, label %panic5408, label %ok5409 +panic5408: + call void @finch_panic(ptr @.str.3545, i64 2807, ptr @.str.3546) unreachable -ok5125: +ok5409: %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 9 store i1 true, ptr %t413 - br label %endif5097 -endif5097: + br label %endif5381 +endif5381: %t414 = load ptr, ptr %a1 %t415 = load { ptr, i64, i64 }, ptr %a43 call void @finch.gen.label(ptr %t414, { ptr, i64, i64 } %t415) %t416 = load i1, ptr %a45 %t417 = xor i1 %t416, true - br i1 %t417, label %then5126, label %endif5128 -then5126: + br i1 %t417, label %then5410, label %endif5412 +then5410: %t418 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t418, { ptr, i64, i64 } { ptr @.str.3334, i64 11, i64 0 }) + call void @finch.gen.emit(ptr %t418, { ptr, i64, i64 } { ptr @.str.3547, i64 11, i64 0 }) %t419 = load ptr, ptr %a1 %t420 = icmp eq ptr %t419, null - br i1 %t420, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3335, i64 2687, ptr @.str.3336) + br i1 %t420, label %panic5413, label %ok5414 +panic5413: + call void @finch_panic(ptr @.str.3548, i64 2812, ptr @.str.3549) unreachable -ok5130: +ok5414: %t421 = getelementptr inbounds %S.gen.Gen, ptr %t419, i32 0, i32 9 store i1 true, ptr %t421 - %t422 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3337, i64 4, i64 0 }) + %t422 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3550, i64 4, i64 0 }) %t423 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t422, 1 ret %S.gen.Val %t423 -endif5128: +endif5412: %t424 = load i1, ptr %a3 - br i1 %t424, label %then5131, label %endif5133 -then5131: + br i1 %t424, label %then5415, label %endif5417 +then5415: %t425 = load ptr, ptr %a1 %t426 = load ptr, ptr %a1 %t427 = load %S.ast.Type, ptr %a50 %t428 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t426, %S.ast.Type %t427) - store { ptr, i64, i64 } { ptr @.str.3338, i64 4, i64 0 }, ptr %a430 + store { ptr, i64, i64 } { ptr @.str.3551, i64 4, i64 0 }, ptr %a430 store { ptr, i64, i64 } %t428, ptr %a431 call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431) %t432 = load { ptr, i64, i64 }, ptr %a429 store { ptr, i64, i64 } %t432, ptr %a434 - store { ptr, i64, i64 } { ptr @.str.3339, i64 1, i64 0 }, ptr %a435 + store { ptr, i64, i64 } { ptr @.str.3552, i64 1, i64 0 }, ptr %a435 call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) %t436 = load { ptr, i64, i64 }, ptr %a433 %t437 = load { ptr, i64, i64 }, ptr %a47 @@ -45959,8 +49765,8 @@ then5131: %t453 = call i1 @finch.gen.owning(ptr %t451, %S.ast.Type %t452) %t454 = insertvalue %S.gen.Val %t450, i1 %t453, 2 ret %S.gen.Val %t454 -endif5133: - %t455 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3340, i64 4, i64 0 }) +endif5417: + %t455 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3553, i64 4, i64 0 }) %t456 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t455, 1 ret %S.gen.Val %t456 } @@ -45991,42 +49797,42 @@ entry: %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t5 = load i64, ptr %t4 store i64 0, ptr %a6 - br label %for.cond5134 -for.cond5134: + br label %for.cond5418 +for.cond5418: %t7 = load i64, ptr %a6 %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body5135, label %for.end5137 -for.body5135: + br i1 %t8, label %for.body5419, label %for.end5421 +for.body5419: %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t10 = load i64, ptr %a6 %t11 = load { ptr, i64, i64 }, ptr %a1 %t12 = extractvalue { ptr, i64, i64 } %t11, 1 %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range5138, label %inrange5139 -range5138: - call void @finch_panic_index(ptr @.str.3342, i64 2699, i64 %t10, i64 %t12) + br i1 %t13, label %range5422, label %inrange5423 +range5422: + call void @finch_panic_index(ptr @.str.3555, i64 2824, i64 %t10, i64 %t12) unreachable -inrange5139: +inrange5423: %t14 = extractvalue { ptr, i64, i64 } %t11, 0 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t10 %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } { ptr @.str.3341, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3554, i64 2, i64 0 }, ptr %a18 store { ptr, i64, i64 } %t16, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t20, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.3343, i64 3, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.3556, i64 3, i64 0 }, ptr %a23 call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) %t24 = load { ptr, i64, i64 }, ptr %a21 %t25 = load i64, ptr %a6 %t26 = load { ptr, i64, i64 }, ptr %a2 %t27 = extractvalue { ptr, i64, i64 } %t26, 1 %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range5140, label %inrange5141 -range5140: - call void @finch_panic_index(ptr @.str.3344, i64 2699, i64 %t25, i64 %t27) + br i1 %t28, label %range5424, label %inrange5425 +range5424: + call void @finch_panic_index(ptr @.str.3557, i64 2824, i64 %t25, i64 %t27) unreachable -inrange5141: +inrange5425: %t29 = extractvalue { ptr, i64, i64 } %t26, 0 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 %t31 = load { ptr, i64, i64 }, ptr %t30 @@ -46035,7 +49841,7 @@ inrange5141: call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3345, i64 2, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.3558, i64 2, i64 0 }, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 %t40 = load i64, ptr %t9 @@ -46045,15 +49851,15 @@ inrange5141: %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 store { ptr, i64, i64 } %t39, ptr %t43 store i64 %t41, ptr %t9 - br label %for.step5136 -for.step5136: + br label %for.step5420 +for.step5420: %t44 = load i64, ptr %a6 %t45 = add i64 %t44, 1 store i64 %t45, ptr %a6 - br label %for.cond5134 -for.end5137: + br label %for.cond5418 +for.end5421: %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3346, i64 2, i64 0 }, ptr %a47 + store { ptr, i64, i64 } { ptr @.str.3559, i64 2, i64 0 }, ptr %a47 call void @finch_str_join(ptr %a48, ptr %a3, ptr %a47) %t49 = load { ptr, i64, i64 }, ptr %a48 ret { ptr, i64, i64 } %t49 @@ -46114,39 +49920,39 @@ entry: %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3347, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.3560, i64 4, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp eq i32 %t7, 0 - br label %logic.from5142 -logic.from5142: - br i1 %t8, label %logic.rhs5143, label %logic.end5144 -logic.rhs5143: + br label %logic.from5426 +logic.from5426: + br i1 %t8, label %logic.rhs5427, label %logic.end5428 +logic.rhs5427: %t9 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t10 = load { ptr, i64, i64 }, ptr %t9 store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a12 + store { ptr, i64, i64 } { ptr @.str.3561, i64 6, i64 0 }, ptr %a12 %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) %t14 = icmp eq i32 %t13, 0 - br label %logic.rend5145 -logic.rend5145: - br label %logic.end5144 -logic.end5144: - %t15 = phi i1 [ false, %logic.from5142 ], [ %t14, %logic.rend5145 ] - br i1 %t15, label %then5146, label %endif5148 -then5146: + br label %logic.rend5429 +logic.rend5429: + br label %logic.end5428 +logic.end5428: + %t15 = phi i1 [ false, %logic.from5426 ], [ %t14, %logic.rend5429 ] + br i1 %t15, label %then5430, label %endif5432 +then5430: %t16 = load ptr, ptr %a1 %t17 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } { ptr @.str.3349, i64 80, i64 0 }) - br label %endif5148 -endif5148: + call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } { ptr @.str.3562, i64 80, i64 0 }) + br label %endif5432 +endif5432: %t18 = load ptr, ptr %a1 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5149, label %ok5150 -panic5149: - call void @finch_panic(ptr @.str.3350, i64 2717, ptr @.str.3351) + br i1 %t19, label %panic5433, label %ok5434 +panic5433: + call void @finch_panic(ptr @.str.3563, i64 2842, ptr @.str.3564) unreachable -ok5150: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 37 +ok5434: + %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 39 %t21 = load { ptr, i64, i64 }, ptr %t20 store { ptr, i64, i64 } %t21, ptr %a22 call void @finch_str_copy(ptr %a23, ptr %a22) @@ -46154,12 +49960,12 @@ ok5150: store { ptr, i64, i64 } %t24, ptr %a25 %t26 = load ptr, ptr %a1 %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic5151, label %ok5152 -panic5151: - call void @finch_panic(ptr @.str.3352, i64 2718, ptr @.str.3353) + br i1 %t27, label %panic5435, label %ok5436 +panic5435: + call void @finch_panic(ptr @.str.3565, i64 2843, ptr @.str.3566) unreachable -ok5152: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 38 +ok5436: + %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 40 %t29 = load { ptr, i64, i64 }, ptr %t28 store { ptr, i64, i64 } %t29, ptr %a30 call void @finch_str_copy(ptr %a31, ptr %a30) @@ -46167,12 +49973,12 @@ ok5152: store { ptr, i64, i64 } %t32, ptr %a33 %t34 = load ptr, ptr %a1 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5153, label %ok5154 -panic5153: - call void @finch_panic(ptr @.str.3354, i64 2719, ptr @.str.3355) + br i1 %t35, label %panic5437, label %ok5438 +panic5437: + call void @finch_panic(ptr @.str.3567, i64 2844, ptr @.str.3568) unreachable -ok5154: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 39 +ok5438: + %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 41 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 call void @finch_str_copy(ptr %a39, ptr %a38) @@ -46182,31 +49988,31 @@ ok5154: %t43 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t42) %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic5155, label %ok5156 -panic5155: - call void @finch_panic(ptr @.str.3356, i64 2720, ptr @.str.3357) + br i1 %t45, label %panic5439, label %ok5440 +panic5439: + call void @finch_panic(ptr @.str.3569, i64 2845, ptr @.str.3570) unreachable -ok5156: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 37 +ok5440: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 39 store { ptr, i64, i64 } %t43, ptr %t46 %t47 = load ptr, ptr %a1 %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic5157, label %ok5158 -panic5157: - call void @finch_panic(ptr @.str.3359, i64 2721, ptr @.str.3360) + br i1 %t48, label %panic5441, label %ok5442 +panic5441: + call void @finch_panic(ptr @.str.3572, i64 2846, ptr @.str.3573) unreachable -ok5158: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 38 - store { ptr, i64, i64 } { ptr @.str.3358, i64 0, i64 0 }, ptr %t49 +ok5442: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 40 + store { ptr, i64, i64 } { ptr @.str.3571, i64 0, i64 0 }, ptr %t49 %t50 = load ptr, ptr %a1 %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic5159, label %ok5160 -panic5159: - call void @finch_panic(ptr @.str.3362, i64 2722, ptr @.str.3363) + br i1 %t51, label %panic5443, label %ok5444 +panic5443: + call void @finch_panic(ptr @.str.3575, i64 2847, ptr @.str.3576) unreachable -ok5160: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 39 - store { ptr, i64, i64 } { ptr @.str.3361, i64 0, i64 0 }, ptr %t52 +ok5444: + %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 41 + store { ptr, i64, i64 } { ptr @.str.3574, i64 0, i64 0 }, ptr %t52 %t53 = load ptr, ptr %a1 %t54 = load %S.ast.Node, ptr %a2 %t55 = call %S.gen.Val @finch.gen.expr(ptr %t53, %S.ast.Node %t54) @@ -46218,12 +50024,12 @@ ok5160: %t61 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t60, 0 %t62 = load ptr, ptr %a1 %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic5161, label %ok5162 -panic5161: - call void @finch_panic(ptr @.str.3364, i64 2724, ptr @.str.3365) + br i1 %t63, label %panic5445, label %ok5446 +panic5445: + call void @finch_panic(ptr @.str.3577, i64 2849, ptr @.str.3578) unreachable -ok5162: - %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 38 +ok5446: + %t64 = getelementptr inbounds %S.gen.Gen, ptr %t62, i32 0, i32 40 %t65 = load { ptr, i64, i64 }, ptr %t64 store { ptr, i64, i64 } %t65, ptr %a66 call void @finch_str_copy(ptr %a67, ptr %a66) @@ -46231,12 +50037,12 @@ ok5162: %t69 = insertvalue %S.gen.Fallible %t61, { ptr, i64, i64 } %t68, 1 %t70 = load ptr, ptr %a1 %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic5163, label %ok5164 -panic5163: - call void @finch_panic(ptr @.str.3366, i64 2724, ptr @.str.3367) + br i1 %t71, label %panic5447, label %ok5448 +panic5447: + call void @finch_panic(ptr @.str.3579, i64 2849, ptr @.str.3580) unreachable -ok5164: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 39 +ok5448: + %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 41 %t73 = load { ptr, i64, i64 }, ptr %t72 store { ptr, i64, i64 } %t73, ptr %a74 call void @finch_str_copy(ptr %a75, ptr %a74) @@ -46246,12 +50052,12 @@ ok5164: %t79 = load { ptr, i64, i64 }, ptr %a25 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic5165, label %ok5166 -panic5165: - call void @finch_panic(ptr @.str.3368, i64 2725, ptr @.str.3369) + br i1 %t81, label %panic5449, label %ok5450 +panic5449: + call void @finch_panic(ptr @.str.3581, i64 2850, ptr @.str.3582) unreachable -ok5166: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 37 +ok5450: + %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 39 store { ptr, i64, i64 } %t79, ptr %a83 call void @finch_str_copy(ptr %a84, ptr %a83) %t85 = load { ptr, i64, i64 }, ptr %a84 @@ -46259,12 +50065,12 @@ ok5166: %t86 = load { ptr, i64, i64 }, ptr %a33 %t87 = load ptr, ptr %a1 %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5167, label %ok5168 -panic5167: - call void @finch_panic(ptr @.str.3370, i64 2726, ptr @.str.3371) + br i1 %t88, label %panic5451, label %ok5452 +panic5451: + call void @finch_panic(ptr @.str.3583, i64 2851, ptr @.str.3584) unreachable -ok5168: - %t89 = getelementptr inbounds %S.gen.Gen, ptr %t87, i32 0, i32 38 +ok5452: + %t89 = getelementptr inbounds %S.gen.Gen, ptr %t87, i32 0, i32 40 store { ptr, i64, i64 } %t86, ptr %a90 call void @finch_str_copy(ptr %a91, ptr %a90) %t92 = load { ptr, i64, i64 }, ptr %a91 @@ -46272,12 +50078,12 @@ ok5168: %t93 = load { ptr, i64, i64 }, ptr %a41 %t94 = load ptr, ptr %a1 %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic5169, label %ok5170 -panic5169: - call void @finch_panic(ptr @.str.3372, i64 2727, ptr @.str.3373) + br i1 %t95, label %panic5453, label %ok5454 +panic5453: + call void @finch_panic(ptr @.str.3585, i64 2852, ptr @.str.3586) unreachable -ok5170: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 39 +ok5454: + %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 41 store { ptr, i64, i64 } %t93, ptr %a97 call void @finch_str_copy(ptr %a98, ptr %a97) %t99 = load { ptr, i64, i64 }, ptr %a98 @@ -46286,13 +50092,13 @@ ok5170: %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i32 0, i32 1 %t102 = load i64, ptr %t101 %t103 = icmp eq i64 %t102, 0 - br i1 %t103, label %then5171, label %endif5173 -then5171: + br i1 %t103, label %then5455, label %endif5457 +then5455: %t104 = load ptr, ptr %a1 %t105 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } { ptr @.str.3374, i64 50, i64 0 }) - br label %endif5173 -endif5173: + call void @finch.gen.fail(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } { ptr @.str.3587, i64 50, i64 0 }) + br label %endif5457 +endif5457: %t106 = load %S.gen.Fallible, ptr %a78 store %S.gen.Fallible %t106, ptr %a107 call void @finch.copy.S_gen_Fallible(ptr %a108, ptr %a107) @@ -46352,88 +50158,88 @@ entry: store %S.ast.Node %p1, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5174, label %ok5175 -panic5174: - call void @finch_panic(ptr @.str.3375, i64 2736, ptr @.str.3376) + br i1 %t4, label %panic5458, label %ok5459 +panic5458: + call void @finch_panic(ptr @.str.3588, i64 2861, ptr @.str.3589) unreachable -ok5175: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 42 +ok5459: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 44 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5176, label %endif5178 -then5176: + br i1 %t7, label %then5460, label %endif5462 +then5460: %t8 = load ptr, ptr %a1 %t9 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3377, i64 30, i64 0 }) - br label %endif5178 -endif5178: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.3590, i64 30, i64 0 }) + br label %endif5462 +endif5462: %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5179, label %ok5180 -panic5179: - call void @finch_panic(ptr @.str.3378, i64 2739, ptr @.str.3379) + br i1 %t11, label %panic5463, label %ok5464 +panic5463: + call void @finch_panic(ptr @.str.3591, i64 2864, ptr @.str.3592) unreachable -ok5180: +ok5464: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 12 %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 %t14 = load i1, ptr %t13 %t15 = xor i1 %t14, true - br i1 %t15, label %then5181, label %endif5183 -then5181: - store { ptr, i64, i64 } { ptr @.str.3380, i64 1, i64 0 }, ptr %a16 + br i1 %t15, label %then5465, label %endif5467 +then5465: + store { ptr, i64, i64 } { ptr @.str.3593, i64 1, i64 0 }, ptr %a16 %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic5184, label %ok5185 -panic5184: - call void @finch_panic(ptr @.str.3381, i64 2741, ptr @.str.3382) + br i1 %t18, label %panic5468, label %ok5469 +panic5468: + call void @finch_panic(ptr @.str.3594, i64 2866, ptr @.str.3595) unreachable -ok5185: +ok5469: %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 12 %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3383, i64 4, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.3596, i64 4, i64 0 }, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %then5186, label %endif5188 -then5186: + br i1 %t26, label %then5470, label %endif5472 +then5470: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3384, i64 2742, ptr @.str.3385) + br i1 %t28, label %panic5473, label %ok5474 +panic5473: + call void @finch_panic(ptr @.str.3597, i64 2867, ptr @.str.3598) unreachable -ok5190: +ok5474: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 12 %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 %t31 = load %S.ast.Type, ptr %t30 %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3386, i64 1, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3599, i64 1, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t36, ptr %a16 - br label %endif5188 -endif5188: + br label %endif5472 +endif5472: %t37 = load ptr, ptr %a1 %t38 = load %S.ast.Node, ptr %a2 %t39 = load ptr, ptr %a1 %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic5191, label %ok5192 -panic5191: - call void @finch_panic(ptr @.str.3388, i64 2744, ptr @.str.3389) + br i1 %t40, label %panic5475, label %ok5476 +panic5475: + call void @finch_panic(ptr @.str.3601, i64 2869, ptr @.str.3602) unreachable -ok5192: +ok5476: %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 12 %t42 = getelementptr inbounds %S.gen.FnSig, ptr %t41, i32 0, i32 1 %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } { ptr @.str.3387, i64 29, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.3600, i64 29, i64 0 }, ptr %a45 store { ptr, i64, i64 } %t43, ptr %a46 call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3390, i64 31, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3603, i64 31, i64 0 }, ptr %a50 call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) %t51 = load { ptr, i64, i64 }, ptr %a48 %t52 = load { ptr, i64, i64 }, ptr %a16 @@ -46442,32 +50248,32 @@ ok5192: call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.3391, i64 55, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.3604, i64 55, i64 0 }, ptr %a59 call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) %t60 = load { ptr, i64, i64 }, ptr %a57 call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } %t60) - br label %endif5183 -endif5183: + br label %endif5467 +endif5467: %t61 = load ptr, ptr %a1 %t62 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t63 = load { ptr, i64, i64 }, ptr %t62 %t64 = extractvalue { ptr, i64, i64 } %t63, 1 %t65 = icmp uge i64 0, %t64 - br i1 %t65, label %range5193, label %inrange5194 -range5193: - call void @finch_panic_index(ptr @.str.3392, i64 2746, i64 0, i64 %t64) + br i1 %t65, label %range5477, label %inrange5478 +range5477: + call void @finch_panic_index(ptr @.str.3605, i64 2871, i64 0, i64 %t64) unreachable -inrange5194: +inrange5478: %t66 = extractvalue { ptr, i64, i64 } %t63, 0 %t67 = getelementptr inbounds %S.ast.Node, ptr %t66, i64 0 %t68 = load %S.ast.Node, ptr %t67 %t69 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t61, %S.ast.Node %t68) store %S.gen.Fallible %t69, ptr %a70 %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t71, { ptr, i64, i64 } { ptr @.str.3393, i64 10, i64 0 }) + %t72 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t71, { ptr, i64, i64 } { ptr @.str.3606, i64 10, i64 0 }) store { ptr, i64, i64 } %t72, ptr %a73 %t74 = load ptr, ptr %a1 - %t75 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t74, { ptr, i64, i64 } { ptr @.str.3394, i64 6, i64 0 }) + %t75 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t74, { ptr, i64, i64 } { ptr @.str.3607, i64 6, i64 0 }) store { ptr, i64, i64 } %t75, ptr %a76 %t77 = load ptr, ptr %a1 %t78 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 1 @@ -46484,40 +50290,40 @@ inrange5194: %t86 = load ptr, ptr %a1 %t87 = load ptr, ptr %a1 %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic5195, label %ok5196 -panic5195: - call void @finch_panic(ptr @.str.3396, i64 2752, ptr @.str.3397) + br i1 %t88, label %panic5479, label %ok5480 +panic5479: + call void @finch_panic(ptr @.str.3609, i64 2877, ptr @.str.3610) unreachable -ok5196: +ok5480: %t89 = getelementptr inbounds %S.gen.Gen, ptr %t87, i32 0, i32 12 %t90 = load %S.gen.FnSig, ptr %t89 %t91 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t86, %S.gen.FnSig %t90) - store { ptr, i64, i64 } { ptr @.str.3395, i64 4, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.3608, i64 4, i64 0 }, ptr %a93 store { ptr, i64, i64 } %t91, ptr %a94 call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) %t95 = load { ptr, i64, i64 }, ptr %a92 store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3398, i64 1, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3611, i64 1, i64 0 }, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 %t100 = load ptr, ptr %a1 %t101 = load ptr, ptr %a1 %t102 = load ptr, ptr %a1 %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic5197, label %ok5198 -panic5197: - call void @finch_panic(ptr @.str.3400, i64 2752, ptr @.str.3401) + br i1 %t103, label %panic5481, label %ok5482 +panic5481: + call void @finch_panic(ptr @.str.3613, i64 2877, ptr @.str.3614) unreachable -ok5198: +ok5482: %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 12 %t105 = load %S.gen.FnSig, ptr %t104 %t106 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t101, %S.gen.FnSig %t105) - store { ptr, i64, i64 } { ptr @.str.3399, i64 12, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3612, i64 12, i64 0 }, ptr %a108 store { ptr, i64, i64 } %t106, ptr %a109 call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) %t110 = load { ptr, i64, i64 }, ptr %a107 store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.3402, i64 36, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.3615, i64 36, i64 0 }, ptr %a113 call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) %t114 = load { ptr, i64, i64 }, ptr %a111 %t115 = getelementptr inbounds %S.gen.Fallible, ptr %a70, i32 0, i32 2 @@ -46527,7 +50333,7 @@ ok5198: call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) %t120 = load { ptr, i64, i64 }, ptr %a117 store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.3403, i64 3, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.3616, i64 3, i64 0 }, ptr %a123 call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) %t124 = load { ptr, i64, i64 }, ptr %a121 %t125 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t124) @@ -46538,11 +50344,11 @@ ok5198: call void @finch.gen.emit(ptr %t85, { ptr, i64, i64 } %t129) %t130 = load ptr, ptr %a1 %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic5199, label %ok5200 -panic5199: - call void @finch_panic(ptr @.str.3404, i64 2753, ptr @.str.3405) + br i1 %t131, label %panic5483, label %ok5484 +panic5483: + call void @finch_panic(ptr @.str.3617, i64 2878, ptr @.str.3618) unreachable -ok5200: +ok5484: %t132 = getelementptr inbounds %S.gen.Gen, ptr %t130, i32 0, i32 9 store i1 true, ptr %t132 %t133 = load ptr, ptr %a1 @@ -46621,11 +50427,11 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range5201, label %inrange5202 -range5201: - call void @finch_panic_index(ptr @.str.3406, i64 2760, i64 0, i64 %t7) + br i1 %t8, label %range5485, label %inrange5486 +range5485: + call void @finch_panic_index(ptr @.str.3619, i64 2885, i64 0, i64 %t7) unreachable -inrange5202: +inrange5486: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -46638,10 +50444,10 @@ inrange5202: %t18 = load %S.gen.Val, ptr %a17 store %S.gen.Val %t18, ptr %a19 %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t20, { ptr, i64, i64 } { ptr @.str.3407, i64 9, i64 0 }) + %t21 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t20, { ptr, i64, i64 } { ptr @.str.3620, i64 9, i64 0 }) store { ptr, i64, i64 } %t21, ptr %a22 %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t23, { ptr, i64, i64 } { ptr @.str.3408, i64 5, i64 0 }) + %t24 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t23, { ptr, i64, i64 } { ptr @.str.3621, i64 5, i64 0 }) store { ptr, i64, i64 } %t24, ptr %a25 %t26 = load ptr, ptr %a1 %t27 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 1 @@ -46654,37 +50460,37 @@ inrange5202: call void @finch.gen.label(ptr %t31, { ptr, i64, i64 } %t32) %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 %t34 = load i1, ptr %t33 - br i1 %t34, label %then5203, label %endif5205 -then5203: + br i1 %t34, label %then5487, label %endif5489 +then5487: %t35 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t35) %t36 = load ptr, ptr %a1 %t37 = load %S.ast.Node, ptr %a2 - %t38 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) + %t38 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }) %t39 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3409, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true) + %t41 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3622, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true) %t42 = load ptr, ptr %a1 %t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t44 = load { ptr, i64, i64 }, ptr %t43 %t45 = extractvalue { ptr, i64, i64 } %t44, 1 %t46 = icmp uge i64 1, %t45 - br i1 %t46, label %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3411, i64 2769, i64 1, i64 %t45) + br i1 %t46, label %range5490, label %inrange5491 +range5490: + call void @finch_panic_index(ptr @.str.3624, i64 2894, i64 1, i64 %t45) unreachable -inrange5207: +inrange5491: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 1 %t49 = load %S.ast.Node, ptr %t48 call void @finch.gen.block(ptr %t42, %S.ast.Node %t49, i1 true) %t50 = load ptr, ptr %a1 %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic5208, label %ok5209 -panic5208: - call void @finch_panic(ptr @.str.3412, i64 2770, ptr @.str.3413) + br i1 %t51, label %panic5492, label %ok5493 +panic5492: + call void @finch_panic(ptr @.str.3625, i64 2895, ptr @.str.3626) unreachable -ok5209: +ok5493: %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 9 %t53 = load i1, ptr %t52 store i1 %t53, ptr %a54 @@ -46692,72 +50498,72 @@ ok5209: call void @finch.gen.popScope(ptr %t55) %t56 = load i1, ptr %a54 %t57 = xor i1 %t56, true - br label %logic.from5210 -logic.from5210: - br i1 %t57, label %logic.rhs5211, label %logic.end5212 -logic.rhs5211: + br label %logic.from5494 +logic.from5494: + br i1 %t57, label %logic.rhs5495, label %logic.end5496 +logic.rhs5495: %t58 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t59 = getelementptr inbounds %S.ast.Type, ptr %t58, i32 0, i32 0 %t60 = load { ptr, i64, i64 }, ptr %t59 store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.3414, i64 4, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a62 %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) %t64 = icmp eq i32 %t63, 0 - br label %logic.rend5213 -logic.rend5213: - br label %logic.end5212 -logic.end5212: - %t65 = phi i1 [ false, %logic.from5210 ], [ %t64, %logic.rend5213 ] - br label %logic.from5214 -logic.from5214: - br i1 %t65, label %logic.rhs5215, label %logic.end5216 -logic.rhs5215: + br label %logic.rend5497 +logic.rend5497: + br label %logic.end5496 +logic.end5496: + %t65 = phi i1 [ false, %logic.from5494 ], [ %t64, %logic.rend5497 ] + br label %logic.from5498 +logic.from5498: + br i1 %t65, label %logic.rhs5499, label %logic.end5500 +logic.rhs5499: %t66 = load i1, ptr %a3 %t67 = xor i1 %t66, true - br label %logic.rend5217 -logic.rend5217: - br label %logic.end5216 -logic.end5216: - %t68 = phi i1 [ false, %logic.from5214 ], [ %t67, %logic.rend5217 ] - br i1 %t68, label %then5218, label %endif5220 -then5218: + br label %logic.rend5501 +logic.rend5501: + br label %logic.end5500 +logic.end5500: + %t68 = phi i1 [ false, %logic.from5498 ], [ %t67, %logic.rend5501 ] + br i1 %t68, label %then5502, label %endif5504 +then5502: %t69 = load ptr, ptr %a1 %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t71 = load { ptr, i64, i64 }, ptr %t70 %t72 = extractvalue { ptr, i64, i64 } %t71, 1 %t73 = icmp uge i64 1, %t72 - br i1 %t73, label %range5221, label %inrange5222 -range5221: - call void @finch_panic_index(ptr @.str.3415, i64 2773, i64 1, i64 %t72) + br i1 %t73, label %range5505, label %inrange5506 +range5505: + call void @finch_panic_index(ptr @.str.3628, i64 2898, i64 1, i64 %t72) unreachable -inrange5222: +inrange5506: %t74 = extractvalue { ptr, i64, i64 } %t71, 0 %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 1 %t76 = load %S.ast.Node, ptr %t75 - call void @finch.gen.fail(ptr %t69, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.3416, i64 142, i64 0 }) - br label %endif5220 -endif5220: + call void @finch.gen.fail(ptr %t69, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.3629, i64 142, i64 0 }) + br label %endif5504 +endif5504: %t77 = load i1, ptr %a3 - br label %logic.from5223 -logic.from5223: - br i1 %t77, label %logic.rhs5224, label %logic.end5225 -logic.rhs5224: + br label %logic.from5507 +logic.from5507: + br i1 %t77, label %logic.rhs5508, label %logic.end5509 +logic.rhs5508: %t78 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i32 0, i32 0 %t80 = load { ptr, i64, i64 }, ptr %t79 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3417, i64 4, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3630, i64 4, i64 0 }, ptr %a82 %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) %t84 = icmp eq i32 %t83, 0 - br label %logic.rend5226 -logic.rend5226: - br label %logic.end5225 -logic.end5225: - %t85 = phi i1 [ false, %logic.from5223 ], [ %t84, %logic.rend5226 ] - br i1 %t85, label %then5227, label %endif5229 -then5227: + br label %logic.rend5510 +logic.rend5510: + br label %logic.end5509 +logic.end5509: + %t85 = phi i1 [ false, %logic.from5507 ], [ %t84, %logic.rend5510 ] + br i1 %t85, label %then5511, label %endif5513 +then5511: %t86 = load ptr, ptr %a1 - %t87 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t86, { ptr, i64, i64 } { ptr @.str.3418, i64 6, i64 0 }) + %t87 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t86, { ptr, i64, i64 } { ptr @.str.3631, i64 6, i64 0 }) store { ptr, i64, i64 } %t87, ptr %a88 %t89 = load ptr, ptr %a1 %t90 = load { ptr, i64, i64 }, ptr %a88 @@ -46771,10 +50577,10 @@ then5227: %t95 = load ptr, ptr %a1 %t96 = load { ptr, i64, i64 }, ptr %a88 call void @finch.gen.label(ptr %t95, { ptr, i64, i64 } %t96) - %t97 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3419, i64 4, i64 0 }) + %t97 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3632, i64 4, i64 0 }) %t98 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t97, 1 ret %S.gen.Val %t98 -endif5229: +endif5513: %t99 = load ptr, ptr %a1 %t100 = load { ptr, i64, i64 }, ptr %a25 call void @finch.gen.br(ptr %t99, { ptr, i64, i64 } %t100) @@ -46786,51 +50592,51 @@ endif5229: call void @finch.copy.S_gen_Val(ptr %a105, ptr %a104) %t106 = load %S.gen.Val, ptr %a105 ret %S.gen.Val %t106 -endif5205: +endif5489: %t107 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i32 0, i32 0 %t109 = load { ptr, i64, i64 }, ptr %t108 store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3420, i64 4, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.3633, i64 4, i64 0 }, ptr %a111 %t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111) %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %then5230, label %endif5232 -then5230: + br i1 %t113, label %then5514, label %endif5516 +then5514: %t114 = load ptr, ptr %a1 %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t116 = load { ptr, i64, i64 }, ptr %t115 %t117 = extractvalue { ptr, i64, i64 } %t116, 1 %t118 = icmp uge i64 1, %t117 - br i1 %t118, label %range5233, label %inrange5234 -range5233: - call void @finch_panic_index(ptr @.str.3421, i64 2788, i64 1, i64 %t117) + br i1 %t118, label %range5517, label %inrange5518 +range5517: + call void @finch_panic_index(ptr @.str.3634, i64 2913, i64 1, i64 %t117) unreachable -inrange5234: +inrange5518: %t119 = extractvalue { ptr, i64, i64 } %t116, 0 %t120 = getelementptr inbounds %S.ast.Node, ptr %t119, i64 1 %t121 = load %S.ast.Node, ptr %t120 - call void @finch.gen.fail(ptr %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3422, i64 98, i64 0 }) - br label %endif5232 -endif5232: + call void @finch.gen.fail(ptr %t114, %S.ast.Node %t121, { ptr, i64, i64 } { ptr @.str.3635, i64 98, i64 0 }) + br label %endif5516 +endif5516: %t122 = load ptr, ptr %a1 call void @finch.gen.pushScope(ptr %t122) %t123 = load ptr, ptr %a1 %t124 = load %S.ast.Node, ptr %a2 - %t125 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3424, i64 3, i64 0 }) + %t125 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3637, i64 3, i64 0 }) %t126 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3423, i64 3, i64 0 }, %S.ast.Type %t125, { ptr, i64, i64 } %t127, i1 true) + %t128 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } { ptr @.str.3636, i64 3, i64 0 }, %S.ast.Type %t125, { ptr, i64, i64 } %t127, i1 true) %t129 = load ptr, ptr %a1 %t130 = load ptr, ptr %a1 %t131 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t132 = load { ptr, i64, i64 }, ptr %t131 %t133 = extractvalue { ptr, i64, i64 } %t132, 1 %t134 = icmp uge i64 1, %t133 - br i1 %t134, label %range5235, label %inrange5236 -range5235: - call void @finch_panic_index(ptr @.str.3425, i64 2792, i64 1, i64 %t133) + br i1 %t134, label %range5519, label %inrange5520 +range5519: + call void @finch_panic_index(ptr @.str.3638, i64 2917, i64 1, i64 %t133) unreachable -inrange5236: +inrange5520: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 1 %t137 = load %S.ast.Node, ptr %t136 @@ -46843,15 +50649,15 @@ inrange5236: %t144 = load { ptr, i64, i64 }, ptr %t143 %t145 = extractvalue { ptr, i64, i64 } %t144, 1 %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5237, label %inrange5238 -range5237: - call void @finch_panic_index(ptr @.str.3426, i64 2792, i64 1, i64 %t145) + br i1 %t146, label %range5521, label %inrange5522 +range5521: + call void @finch_panic_index(ptr @.str.3639, i64 2917, i64 1, i64 %t145) unreachable -inrange5238: +inrange5522: %t147 = extractvalue { ptr, i64, i64 } %t144, 0 %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.coerce(ptr %t129, %S.gen.Val %t140, %S.ast.Type %t142, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.3427, i64 20, i64 0 }) + %t150 = call %S.gen.Val @finch.gen.coerce(ptr %t129, %S.gen.Val %t140, %S.ast.Type %t142, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.3640, i64 20, i64 0 }) store %S.gen.Val %t150, ptr %a151 %t152 = load ptr, ptr %a1 %t153 = load %S.gen.Val, ptr %a151 @@ -46860,10 +50666,10 @@ inrange5238: %t156 = load ptr, ptr %a1 call void @finch.gen.popScope(ptr %t156) %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t157, { ptr, i64, i64 } { ptr @.str.3428, i64 7, i64 0 }) + %t158 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t157, { ptr, i64, i64 } { ptr @.str.3641, i64 7, i64 0 }) store { ptr, i64, i64 } %t158, ptr %a159 %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t160, { ptr, i64, i64 } { ptr @.str.3429, i64 6, i64 0 }) + %t161 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t160, { ptr, i64, i64 } { ptr @.str.3642, i64 6, i64 0 }) store { ptr, i64, i64 } %t161, ptr %a162 %t163 = load ptr, ptr %a1 %t164 = load { ptr, i64, i64 }, ptr %a159 @@ -46888,12 +50694,12 @@ inrange5238: %t177 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 %t178 = load %S.ast.Type, ptr %t177 %t179 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t176, %S.ast.Type %t178) - store { ptr, i64, i64 } { ptr @.str.3430, i64 4, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.3643, i64 4, i64 0 }, ptr %a181 store { ptr, i64, i64 } %t179, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 store { ptr, i64, i64 } %t183, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.3431, i64 3, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.3644, i64 3, i64 0 }, ptr %a186 call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) %t187 = load { ptr, i64, i64 }, ptr %a184 %t188 = load { ptr, i64, i64 }, ptr %a155 @@ -46902,7 +50708,7 @@ inrange5238: call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.3432, i64 3, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.3645, i64 3, i64 0 }, ptr %a195 call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) %t196 = load { ptr, i64, i64 }, ptr %a193 %t197 = load { ptr, i64, i64 }, ptr %a159 @@ -46911,7 +50717,7 @@ inrange5238: call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) %t201 = load { ptr, i64, i64 }, ptr %a198 store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3433, i64 6, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.3646, i64 6, i64 0 }, ptr %a204 call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) %t205 = load { ptr, i64, i64 }, ptr %a202 %t206 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 @@ -46921,7 +50727,7 @@ inrange5238: call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) %t211 = load { ptr, i64, i64 }, ptr %a208 store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.3434, i64 3, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.3647, i64 3, i64 0 }, ptr %a214 call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) %t215 = load { ptr, i64, i64 }, ptr %a212 %t216 = load { ptr, i64, i64 }, ptr %a25 @@ -46930,7 +50736,7 @@ inrange5238: call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 store { ptr, i64, i64 } %t220, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.3435, i64 2, i64 0 }, ptr %a223 + store { ptr, i64, i64 } { ptr @.str.3648, i64 2, i64 0 }, ptr %a223 call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) %t224 = load { ptr, i64, i64 }, ptr %a221 %t225 = call { ptr, i64, i64 } @finch.gen.op(ptr %t175, { ptr, i64, i64 } %t224) @@ -46964,31 +50770,31 @@ entry: %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3436, i64 5, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.3649, i64 5, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br i1 %t9, label %then5239, label %endif5241 -then5239: + br i1 %t9, label %then5523, label %endif5525 +then5523: %t10 = load ptr, ptr %a1 %t11 = load %S.ast.Node, ptr %a2 %t12 = load %S.ast.Type, ptr %a3 %t13 = call %S.gen.Val @finch.gen.arrayLit(ptr %t10, %S.ast.Node %t11, %S.ast.Type %t12) ret %S.gen.Val %t13 -endif5241: +endif5525: %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t15 = load { ptr, i64, i64 }, ptr %t14 store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3437, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.3650, i64 3, i64 0 }, ptr %a17 %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %then5242, label %endif5244 -then5242: + br i1 %t19, label %then5526, label %endif5528 +then5526: %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a2 %t22 = load %S.ast.Type, ptr %a3 %t23 = call %S.gen.Val @finch.gen.mapLit(ptr %t20, %S.ast.Node %t21, %S.ast.Type %t22) ret %S.gen.Val %t23 -endif5244: +endif5528: %t24 = load ptr, ptr %a1 %t25 = load %S.ast.Node, ptr %a2 %t26 = call %S.gen.Val @finch.gen.expr(ptr %t24, %S.ast.Node %t25) @@ -47078,34 +50884,34 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3438, i64 3, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.3651, i64 3, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br i1 %t13, label %then5245, label %endif5247 -then5245: + br i1 %t13, label %then5529, label %endif5531 +then5529: %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t15 = load { ptr, i64, i64 }, ptr %t14 store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3440, i64 2, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.3653, i64 2, i64 0 }, ptr %a18 %t19 = call i32 @finch_str_starts(ptr %a16, ptr %a18) %t20 = icmp ne i32 %t19, 0 - br label %logic.from5248 -logic.from5248: - br i1 %t20, label %logic.end5250, label %logic.rhs5249 -logic.rhs5249: + br label %logic.from5532 +logic.from5532: + br i1 %t20, label %logic.end5534, label %logic.rhs5533 +logic.rhs5533: %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3442, i64 2, i64 0 }, ptr %a25 + store { ptr, i64, i64 } { ptr @.str.3655, i64 2, i64 0 }, ptr %a25 %t26 = call i32 @finch_str_starts(ptr %a23, ptr %a25) %t27 = icmp ne i32 %t26, 0 - br label %logic.rend5251 -logic.rend5251: - br label %logic.end5250 -logic.end5250: - %t28 = phi i1 [ true, %logic.from5248 ], [ %t27, %logic.rend5251 ] - br i1 %t28, label %then5252, label %endif5254 -then5252: + br label %logic.rend5535 +logic.rend5535: + br label %logic.end5534 +logic.end5534: + %t28 = phi i1 [ true, %logic.from5532 ], [ %t27, %logic.rend5535 ] + br i1 %t28, label %then5536, label %endif5538 +then5536: store i64 0, ptr %a29 %t30 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t31 = load { ptr, i64, i64 }, ptr %t30 @@ -47113,18 +50919,18 @@ then5252: %t34 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 %t36 = load i64, ptr %t35 - call void @finch_str_sub(ptr %a33, ptr %a32, i64 2, i64 %t36, ptr @.str.3443, i64 2821) + call void @finch_str_sub(ptr %a33, ptr %a32, i64 2, i64 %t36, ptr @.str.3656, i64 2946) %t37 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t37, ptr %a38 store i64 0, ptr %a39 - br label %each.cond5255 -each.cond5255: + br label %each.cond5539 +each.cond5539: %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %a38, i32 0, i32 1 %t41 = load i64, ptr %t40 %t42 = load i64, ptr %a39 %t43 = icmp slt i64 %t42, %t41 - br i1 %t43, label %each.body5256, label %each.end5258 -each.body5256: + br i1 %t43, label %each.body5540, label %each.end5542 +each.body5540: %t44 = load ptr, ptr %a38 %t45 = getelementptr inbounds i8, ptr %t44, i64 %t42 %t46 = load i8, ptr %t45 @@ -47136,134 +50942,134 @@ each.body5256: store i64 %t51, ptr %a52 %t53 = load i8, ptr %a47 %t54 = icmp uge i8 %t53, 97 - br label %logic.from5259 -logic.from5259: - br i1 %t54, label %logic.rhs5260, label %logic.end5261 -logic.rhs5260: + br label %logic.from5543 +logic.from5543: + br i1 %t54, label %logic.rhs5544, label %logic.end5545 +logic.rhs5544: %t55 = load i8, ptr %a47 %t56 = icmp ule i8 %t55, 102 - br label %logic.rend5262 -logic.rend5262: - br label %logic.end5261 -logic.end5261: - %t57 = phi i1 [ false, %logic.from5259 ], [ %t56, %logic.rend5262 ] - br i1 %t57, label %then5263, label %endif5265 -then5263: + br label %logic.rend5546 +logic.rend5546: + br label %logic.end5545 +logic.end5545: + %t57 = phi i1 [ false, %logic.from5543 ], [ %t56, %logic.rend5546 ] + br i1 %t57, label %then5547, label %endif5549 +then5547: %t58 = load i8, ptr %a47 %t59 = zext i8 %t58 to i64 %t60 = zext i8 97 to i64 %t61 = sub i64 %t59, %t60 %t62 = add i64 %t61, 10 store i64 %t62, ptr %a52 - br label %endif5265 -endif5265: + br label %endif5549 +endif5549: %t63 = load i8, ptr %a47 %t64 = icmp uge i8 %t63, 65 - br label %logic.from5266 -logic.from5266: - br i1 %t64, label %logic.rhs5267, label %logic.end5268 -logic.rhs5267: + br label %logic.from5550 +logic.from5550: + br i1 %t64, label %logic.rhs5551, label %logic.end5552 +logic.rhs5551: %t65 = load i8, ptr %a47 %t66 = icmp ule i8 %t65, 70 - br label %logic.rend5269 -logic.rend5269: - br label %logic.end5268 -logic.end5268: - %t67 = phi i1 [ false, %logic.from5266 ], [ %t66, %logic.rend5269 ] - br i1 %t67, label %then5270, label %endif5272 -then5270: + br label %logic.rend5553 +logic.rend5553: + br label %logic.end5552 +logic.end5552: + %t67 = phi i1 [ false, %logic.from5550 ], [ %t66, %logic.rend5553 ] + br i1 %t67, label %then5554, label %endif5556 +then5554: %t68 = load i8, ptr %a47 %t69 = zext i8 %t68 to i64 %t70 = zext i8 65 to i64 %t71 = sub i64 %t69, %t70 %t72 = add i64 %t71, 10 store i64 %t72, ptr %a52 - br label %endif5272 -endif5272: + br label %endif5556 +endif5556: %t73 = load i64, ptr %a29 %t74 = mul i64 %t73, 16 %t75 = load i64, ptr %a52 %t76 = add i64 %t74, %t75 store i64 %t76, ptr %a29 - br label %each.step5257 -each.step5257: + br label %each.step5541 +each.step5541: %t77 = load i64, ptr %a39 %t78 = add i64 %t77, 1 store i64 %t78, ptr %a39 - br label %each.cond5255 -each.end5258: + br label %each.cond5539 +each.end5542: %t79 = load i64, ptr %a29 call void @finch_str_from_int(ptr %a80, i64 %t79) %t81 = load { ptr, i64, i64 }, ptr %a80 %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) + %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3657, i64 3, i64 0 }) %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 ret %S.gen.Val %t85 -endif5254: +endif5538: %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t87 = load { ptr, i64, i64 }, ptr %t86 store { ptr, i64, i64 } %t87, ptr %a88 - %t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3445, i64 2833) + %t89 = call i64 @finch_str_to_int(ptr %a88, ptr @.str.3658, i64 2958) call void @finch_str_from_int(ptr %a90, i64 %t89) %t91 = load { ptr, i64, i64 }, ptr %a90 %t92 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t91, 0 - %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3446, i64 3, i64 0 }) + %t93 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3659, i64 3, i64 0 }) %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 ret %S.gen.Val %t95 -endif5247: +endif5531: %t96 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3447, i64 5, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.3660, i64 5, i64 0 }, ptr %a98 %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then5273, label %endif5275 -then5273: + br i1 %t100, label %then5557, label %endif5559 +then5557: %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t102 = load { ptr, i64, i64 }, ptr %t101 store { ptr, i64, i64 } %t102, ptr %a103 call void @finch_str_copy(ptr %a104, ptr %a103) %t105 = load { ptr, i64, i64 }, ptr %a104 %t106 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t105, 0 - %t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3448, i64 5, i64 0 }) + %t107 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3661, i64 5, i64 0 }) %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 ret %S.gen.Val %t109 -endif5275: +endif5559: %t110 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3449, i64 4, i64 0 }, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.3662, i64 4, i64 0 }, ptr %a112 %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) %t114 = icmp ne i32 %t113, 0 - br i1 %t114, label %then5276, label %endif5278 -then5276: + br i1 %t114, label %then5560, label %endif5562 +then5560: %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t116 = load { ptr, i64, i64 }, ptr %t115 store { ptr, i64, i64 } %t116, ptr %a117 call void @finch_str_copy(ptr %a118, ptr %a117) %t119 = load { ptr, i64, i64 }, ptr %a118 %t120 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t119, 0 - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3450, i64 4, i64 0 }) + %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3663, i64 4, i64 0 }) %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 ret %S.gen.Val %t122 -endif5278: +endif5562: %t123 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3451, i64 4, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }, ptr %a125 %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5279, label %endif5281 -then5279: + br i1 %t127, label %then5563, label %endif5565 +then5563: %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t129 = load { ptr, i64, i64 }, ptr %t128 %t130 = extractvalue { ptr, i64, i64 } %t129, 1 %t131 = icmp uge i64 0, %t130 - br i1 %t131, label %range5282, label %inrange5283 -range5282: - call void @finch_panic_index(ptr @.str.3452, i64 2842, i64 0, i64 %t130) + br i1 %t131, label %range5566, label %inrange5567 +range5566: + call void @finch_panic_index(ptr @.str.3665, i64 2967, i64 0, i64 %t130) unreachable -inrange5283: +inrange5567: %t132 = extractvalue { ptr, i64, i64 } %t129, 0 %t133 = getelementptr inbounds i8, ptr %t132, i64 0 %t134 = load i8, ptr %t133 @@ -47273,70 +51079,70 @@ inrange5283: call void @finch_str_from_int(ptr %a138, i64 %t137) %t139 = load { ptr, i64, i64 }, ptr %a138 %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3453, i64 4, i64 0 }) + %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3666, i64 4, i64 0 }) %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 ret %S.gen.Val %t142 -endif5281: +endif5565: %t143 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3454, i64 3, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.3667, i64 3, i64 0 }, ptr %a145 %t146 = call i32 @finch_str_eq(ptr %a144, ptr %a145) %t147 = icmp ne i32 %t146, 0 - br i1 %t147, label %then5284, label %endif5286 -then5284: + br i1 %t147, label %then5568, label %endif5570 +then5568: %t148 = load ptr, ptr %a1 %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 %t150 = load { ptr, i64, i64 }, ptr %t149 %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) ret %S.gen.Val %t151 -endif5286: +endif5570: %t152 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3455, i64 4, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.3668, i64 4, i64 0 }, ptr %a154 %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) %t156 = icmp ne i32 %t155, 0 - br i1 %t156, label %then5287, label %endif5289 -then5287: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3456, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3457, i64 4, i64 0 }) + br i1 %t156, label %then5571, label %endif5573 +then5571: + %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3669, i64 4, i64 0 }, 0 + %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3670, i64 4, i64 0 }) %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 ret %S.gen.Val %t159 -endif5289: +endif5573: %t160 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3458, i64 3, i64 0 }, ptr %a162 + store { ptr, i64, i64 } { ptr @.str.3671, i64 3, i64 0 }, ptr %a162 %t163 = call i32 @finch_str_eq(ptr %a161, ptr %a162) %t164 = icmp ne i32 %t163, 0 - br label %logic.from5290 -logic.from5290: - br i1 %t164, label %logic.end5292, label %logic.rhs5291 -logic.rhs5291: + br label %logic.from5574 +logic.from5574: + br i1 %t164, label %logic.end5576, label %logic.rhs5575 +logic.rhs5575: %t165 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3459, i64 6, i64 0 }, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.3672, i64 6, i64 0 }, ptr %a167 %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) %t169 = icmp ne i32 %t168, 0 - br label %logic.rend5293 -logic.rend5293: - br label %logic.end5292 -logic.end5292: - %t170 = phi i1 [ true, %logic.from5290 ], [ %t169, %logic.rend5293 ] - br label %logic.from5294 -logic.from5294: - br i1 %t170, label %logic.end5296, label %logic.rhs5295 -logic.rhs5295: + br label %logic.rend5577 +logic.rend5577: + br label %logic.end5576 +logic.end5576: + %t170 = phi i1 [ true, %logic.from5574 ], [ %t169, %logic.rend5577 ] + br label %logic.from5578 +logic.from5578: + br i1 %t170, label %logic.end5580, label %logic.rhs5579 +logic.rhs5579: %t171 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3460, i64 5, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.3673, i64 5, i64 0 }, ptr %a173 %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) %t175 = icmp ne i32 %t174, 0 - br label %logic.rend5297 -logic.rend5297: - br label %logic.end5296 -logic.end5296: - %t176 = phi i1 [ true, %logic.from5294 ], [ %t175, %logic.rend5297 ] - br i1 %t176, label %then5298, label %endif5300 -then5298: + br label %logic.rend5581 +logic.rend5581: + br label %logic.end5580 +logic.end5580: + %t176 = phi i1 [ true, %logic.from5578 ], [ %t175, %logic.rend5581 ] + br i1 %t176, label %then5582, label %endif5584 +then5582: %t177 = load ptr, ptr %a1 %t178 = load %S.ast.Node, ptr %a2 %t179 = call %S.gen.Ref @finch.gen.ref(ptr %t177, %S.ast.Node %t178, i1 false) @@ -47344,15 +51150,15 @@ then5298: %t181 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 0 %t182 = load i1, ptr %t181 %t183 = xor i1 %t182, true - br i1 %t183, label %then5301, label %endif5303 -then5301: + br i1 %t183, label %then5585, label %endif5587 +then5585: %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 %t185 = load %S.gen.Val, ptr %t184 store %S.gen.Val %t185, ptr %a186 call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) %t188 = load %S.gen.Val, ptr %a187 ret %S.gen.Val %t188 -endif5303: +endif5587: %t189 = load ptr, ptr %a1 %t190 = load ptr, ptr %a1 %t191 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 @@ -47372,121 +51178,121 @@ endif5303: %t205 = load %S.ast.Type, ptr %a204 %t206 = insertvalue %S.gen.Val %t199, %S.ast.Type %t205, 1 ret %S.gen.Val %t206 -endif5300: +endif5584: %t207 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3461, i64 5, i64 0 }, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.3674, i64 5, i64 0 }, ptr %a209 %t210 = call i32 @finch_str_eq(ptr %a208, ptr %a209) %t211 = icmp ne i32 %t210, 0 - br i1 %t211, label %then5304, label %endif5306 -then5304: + br i1 %t211, label %then5588, label %endif5590 +then5588: %t212 = load ptr, ptr %a1 %t213 = load %S.ast.Node, ptr %a2 %t214 = call %S.gen.Val @finch.gen.matchGen(ptr %t212, %S.ast.Node %t213, i1 true) ret %S.gen.Val %t214 -endif5306: +endif5590: %t215 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3462, i64 3, i64 0 }, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.3675, i64 3, i64 0 }, ptr %a217 %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) %t219 = icmp ne i32 %t218, 0 - br i1 %t219, label %then5307, label %endif5309 -then5307: + br i1 %t219, label %then5591, label %endif5593 +then5591: %t220 = load ptr, ptr %a1 %t221 = load %S.ast.Node, ptr %a2 %t222 = call %S.gen.Val @finch.gen.tryExpr(ptr %t220, %S.ast.Node %t221) ret %S.gen.Val %t222 -endif5309: +endif5593: %t223 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t223, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3463, i64 2, i64 0 }, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.3676, i64 2, i64 0 }, ptr %a225 %t226 = call i32 @finch_str_eq(ptr %a224, ptr %a225) %t227 = icmp ne i32 %t226, 0 - br i1 %t227, label %then5310, label %endif5312 -then5310: + br i1 %t227, label %then5594, label %endif5596 +then5594: %t228 = load ptr, ptr %a1 %t229 = load %S.ast.Node, ptr %a2 %t230 = call %S.gen.Val @finch.gen.orElse(ptr %t228, %S.ast.Node %t229, i1 false) ret %S.gen.Val %t230 -endif5312: +endif5596: %t231 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.3464, i64 5, i64 0 }, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.3677, i64 5, i64 0 }, ptr %a233 %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) %t235 = icmp ne i32 %t234, 0 - br i1 %t235, label %then5313, label %endif5315 -then5313: + br i1 %t235, label %then5597, label %endif5599 +then5597: %t236 = load ptr, ptr %a1 %t237 = load %S.ast.Node, ptr %a2 %t238 = call %S.gen.Val @finch.gen.unary(ptr %t236, %S.ast.Node %t237) ret %S.gen.Val %t238 -endif5315: +endif5599: %t239 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t239, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.3465, i64 6, i64 0 }, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3678, i64 6, i64 0 }, ptr %a241 %t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241) %t243 = icmp ne i32 %t242, 0 - br i1 %t243, label %then5316, label %endif5318 -then5316: + br i1 %t243, label %then5600, label %endif5602 +then5600: %t244 = load ptr, ptr %a1 %t245 = load %S.ast.Node, ptr %a2 %t246 = call %S.gen.Val @finch.gen.binary(ptr %t244, %S.ast.Node %t245) ret %S.gen.Val %t246 -endif5318: +endif5602: %t247 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t247, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.3466, i64 4, i64 0 }, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.3679, i64 4, i64 0 }, ptr %a249 %t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249) %t251 = icmp ne i32 %t250, 0 - br i1 %t251, label %then5319, label %endif5321 -then5319: + br i1 %t251, label %then5603, label %endif5605 +then5603: %t252 = load ptr, ptr %a1 %t253 = load %S.ast.Node, ptr %a2 %t254 = call %S.gen.Val @finch.gen.call(ptr %t252, %S.ast.Node %t253) ret %S.gen.Val %t254 -endif5321: +endif5605: %t255 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t255, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.3467, i64 6, i64 0 }, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.3680, i64 6, i64 0 }, ptr %a257 %t258 = call i32 @finch_str_eq(ptr %a256, ptr %a257) %t259 = icmp ne i32 %t258, 0 - br i1 %t259, label %then5322, label %endif5324 -then5322: + br i1 %t259, label %then5606, label %endif5608 +then5606: %t260 = load ptr, ptr %a1 %t261 = load %S.ast.Node, ptr %a2 %t262 = call %S.gen.Val @finch.gen.method(ptr %t260, %S.ast.Node %t261) ret %S.gen.Val %t262 -endif5324: +endif5608: %t263 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t263, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.3468, i64 5, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.3681, i64 5, i64 0 }, ptr %a265 %t266 = call i32 @finch_str_eq(ptr %a264, ptr %a265) %t267 = icmp ne i32 %t266, 0 - br i1 %t267, label %then5325, label %endif5327 -then5325: + br i1 %t267, label %then5609, label %endif5611 +then5609: %t268 = load ptr, ptr %a1 %t269 = load %S.ast.Node, ptr %a2 - %t270 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3469, i64 4, i64 0 }) + %t270 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3682, i64 4, i64 0 }) %t271 = call %S.gen.Val @finch.gen.arrayLit(ptr %t268, %S.ast.Node %t269, %S.ast.Type %t270) ret %S.gen.Val %t271 -endif5327: +endif5611: %t272 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.3470, i64 3, i64 0 }, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a274 %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %then5328, label %endif5330 -then5328: + br i1 %t276, label %then5612, label %endif5614 +then5612: %t277 = load ptr, ptr %a1 %t278 = load %S.ast.Node, ptr %a2 - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3471, i64 4, i64 0 }) + %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3684, i64 4, i64 0 }) %t280 = call %S.gen.Val @finch.gen.mapLit(ptr %t277, %S.ast.Node %t278, %S.ast.Type %t279) ret %S.gen.Val %t280 -endif5330: +endif5614: %t281 = load ptr, ptr %a1 %t282 = load %S.ast.Node, ptr %a2 %t283 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3472, i64 19, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.3685, i64 19, i64 0 }, ptr %a285 store { ptr, i64, i64 } %t283, ptr %a286 call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) %t287 = load { ptr, i64, i64 }, ptr %a284 @@ -47576,11 +51382,11 @@ entry: %t5 = load { ptr, i64, i64 }, ptr %t4 %t6 = extractvalue { ptr, i64, i64 } %t5, 1 %t7 = icmp uge i64 0, %t6 - br i1 %t7, label %range5331, label %inrange5332 -range5331: - call void @finch_panic_index(ptr @.str.3473, i64 2890, i64 0, i64 %t6) + br i1 %t7, label %range5615, label %inrange5616 +range5615: + call void @finch_panic_index(ptr @.str.3686, i64 3015, i64 0, i64 %t6) unreachable -inrange5332: +inrange5616: %t8 = extractvalue { ptr, i64, i64 } %t5, 0 %t9 = getelementptr inbounds %S.ast.Node, ptr %t8, i64 0 %t10 = load %S.ast.Node, ptr %t9 @@ -47589,82 +51395,82 @@ inrange5332: %t13 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t14 = load { ptr, i64, i64 }, ptr %t13 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3474, i64 1, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.3687, i64 1, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br i1 %t18, label %then5333, label %endif5335 -then5333: + br i1 %t18, label %then5617, label %endif5619 +then5617: %t19 = load ptr, ptr %a1 %t20 = load %S.gen.Val, ptr %a12 - %t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3475, i64 4, i64 0 }) + %t21 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3688, i64 4, i64 0 }) %t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t23 = load { ptr, i64, i64 }, ptr %t22 %t24 = extractvalue { ptr, i64, i64 } %t23, 1 %t25 = icmp uge i64 0, %t24 - br i1 %t25, label %range5336, label %inrange5337 -range5336: - call void @finch_panic_index(ptr @.str.3476, i64 2892, i64 0, i64 %t24) + br i1 %t25, label %range5620, label %inrange5621 +range5620: + call void @finch_panic_index(ptr @.str.3689, i64 3017, i64 0, i64 %t24) unreachable -inrange5337: +inrange5621: %t26 = extractvalue { ptr, i64, i64 } %t23, 0 %t27 = getelementptr inbounds %S.ast.Node, ptr %t26, i64 0 %t28 = load %S.ast.Node, ptr %t27 - %t29 = call %S.gen.Val @finch.gen.coerce(ptr %t19, %S.gen.Val %t20, %S.ast.Type %t21, %S.ast.Node %t28, { ptr, i64, i64 } { ptr @.str.3477, i64 19, i64 0 }) + %t29 = call %S.gen.Val @finch.gen.coerce(ptr %t19, %S.gen.Val %t20, %S.ast.Type %t21, %S.ast.Node %t28, { ptr, i64, i64 } { ptr @.str.3690, i64 19, i64 0 }) store %S.gen.Val %t29, ptr %a30 %t31 = load ptr, ptr %a1 %t32 = getelementptr inbounds %S.gen.Val, ptr %a30, i32 0, i32 0 %t33 = load { ptr, i64, i64 }, ptr %t32 - store { ptr, i64, i64 } { ptr @.str.3478, i64 7, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3691, i64 7, i64 0 }, ptr %a35 store { ptr, i64, i64 } %t33, ptr %a36 call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3479, i64 6, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.3692, i64 6, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t31, { ptr, i64, i64 } %t41) %t43 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t42, 0 - %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3480, i64 4, i64 0 }) + %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3693, i64 4, i64 0 }) %t45 = insertvalue %S.gen.Val %t43, %S.ast.Type %t44, 1 ret %S.gen.Val %t45 -endif5335: +endif5619: %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t47 = load { ptr, i64, i64 }, ptr %t46 store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.3481, i64 1, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.3694, i64 1, i64 0 }, ptr %a49 %t50 = call i32 @finch_str_eq(ptr %a48, ptr %a49) %t51 = icmp ne i32 %t50, 0 - br i1 %t51, label %then5338, label %endif5340 -then5338: + br i1 %t51, label %then5622, label %endif5624 +then5622: %t52 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t53 = load %S.ast.Type, ptr %t52 %t54 = call i1 @finch.gen.isInt(%S.ast.Type %t53) %t55 = xor i1 %t54, true - br i1 %t55, label %then5341, label %endif5343 -then5341: + br i1 %t55, label %then5625, label %endif5627 +then5625: %t56 = load ptr, ptr %a1 %t57 = load %S.ast.Node, ptr %a2 %t58 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t59 = load %S.ast.Type, ptr %t58 %t60 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3482, i64 45, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.3695, i64 45, i64 0 }, ptr %a62 store { ptr, i64, i64 } %t60, ptr %a63 call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) %t64 = load { ptr, i64, i64 }, ptr %a61 call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t64) - br label %endif5343 -endif5343: + br label %endif5627 +endif5627: %t65 = load ptr, ptr %a1 %t66 = load ptr, ptr %a1 %t67 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t68 = load %S.ast.Type, ptr %t67 %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.3483, i64 4, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.3696, i64 4, i64 0 }, ptr %a71 store { ptr, i64, i64 } %t69, ptr %a72 call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3484, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.3697, i64 1, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 %t78 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 @@ -47674,7 +51480,7 @@ endif5343: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.3485, i64 4, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.3698, i64 4, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 %t88 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t87) @@ -47686,48 +51492,48 @@ endif5343: %t94 = load %S.ast.Type, ptr %a93 %t95 = insertvalue %S.gen.Val %t89, %S.ast.Type %t94, 1 ret %S.gen.Val %t95 -endif5340: +endif5624: %t96 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t97 = load %S.ast.Type, ptr %t96 %t98 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t97) - br i1 %t98, label %then5344, label %endif5346 -then5344: + br i1 %t98, label %then5628, label %endif5630 +then5628: %t99 = load ptr, ptr %a1 %t100 = load %S.ast.Node, ptr %a2 %t101 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t102 = load %S.ast.Type, ptr %t101 %t103 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t102) store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3486, i64 34, i64 0 }, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.3699, i64 34, i64 0 }, ptr %a106 call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) %t107 = load { ptr, i64, i64 }, ptr %a104 call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t107) - br label %endif5346 -endif5346: + br label %endif5630 +endif5630: %t108 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t109 = load %S.ast.Type, ptr %t108 %t110 = call i1 @finch.gen.isSigned(%S.ast.Type %t109) - br i1 %t110, label %then5347, label %endif5349 -then5347: + br i1 %t110, label %then5631, label %endif5633 +then5631: %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 %t112 = load i1, ptr %t111 - br i1 %t112, label %then5350, label %endif5352 -then5350: + br i1 %t112, label %then5634, label %endif5636 +then5634: %t113 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 %t114 = load { ptr, i64, i64 }, ptr %t113 store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3488, i64 1, i64 0 }, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.3701, i64 1, i64 0 }, ptr %a117 %t118 = call i32 @finch_str_starts(ptr %a115, ptr %a117) %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %then5353, label %endif5355 -then5353: + br i1 %t119, label %then5637, label %endif5639 +then5637: %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 %t121 = load { ptr, i64, i64 }, ptr %t120 store { ptr, i64, i64 } %t121, ptr %a122 %t124 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i32 0, i32 1 %t126 = load i64, ptr %t125 - call void @finch_str_sub(ptr %a123, ptr %a122, i64 1, i64 %t126, ptr @.str.3489, i64 2907) + call void @finch_str_sub(ptr %a123, ptr %a122, i64 1, i64 %t126, ptr @.str.3702, i64 3032) %t127 = load { ptr, i64, i64 }, ptr %a123 %t128 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t127, 0 %t129 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 @@ -47738,10 +51544,10 @@ then5353: %t134 = insertvalue %S.gen.Val %t128, %S.ast.Type %t133, 1 %t135 = insertvalue %S.gen.Val %t134, i1 true, 3 ret %S.gen.Val %t135 -endif5355: +endif5639: %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.3490, i64 1, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.3703, i64 1, i64 0 }, ptr %a139 store { ptr, i64, i64 } %t137, ptr %a140 call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) %t141 = load { ptr, i64, i64 }, ptr %a138 @@ -47754,18 +51560,18 @@ endif5355: %t148 = insertvalue %S.gen.Val %t142, %S.ast.Type %t147, 1 %t149 = insertvalue %S.gen.Val %t148, i1 true, 3 ret %S.gen.Val %t149 -endif5352: +endif5636: %t150 = load ptr, ptr %a1 %t151 = load ptr, ptr %a1 %t152 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t153 = load %S.ast.Type, ptr %t152 %t154 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t151, %S.ast.Type %t153) - store { ptr, i64, i64 } { ptr @.str.3491, i64 4, i64 0 }, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.3704, i64 4, i64 0 }, ptr %a156 store { ptr, i64, i64 } %t154, ptr %a157 call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) %t158 = load { ptr, i64, i64 }, ptr %a155 store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.3492, i64 4, i64 0 }, ptr %a161 + store { ptr, i64, i64 } { ptr @.str.3705, i64 4, i64 0 }, ptr %a161 call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) %t162 = load { ptr, i64, i64 }, ptr %a159 %t163 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 @@ -47783,23 +51589,23 @@ endif5352: %t175 = load %S.ast.Type, ptr %a174 %t176 = insertvalue %S.gen.Val %t170, %S.ast.Type %t175, 1 ret %S.gen.Val %t176 -endif5349: +endif5633: %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t178 = load %S.ast.Type, ptr %t177 %t179 = call i1 @finch.gen.isFloat(%S.ast.Type %t178) - br i1 %t179, label %then5356, label %endif5358 -then5356: + br i1 %t179, label %then5640, label %endif5642 +then5640: %t180 = load ptr, ptr %a1 %t181 = load ptr, ptr %a1 %t182 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t183 = load %S.ast.Type, ptr %t182 %t184 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t181, %S.ast.Type %t183) - store { ptr, i64, i64 } { ptr @.str.3493, i64 5, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.3706, i64 5, i64 0 }, ptr %a186 store { ptr, i64, i64 } %t184, ptr %a187 call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187) %t188 = load { ptr, i64, i64 }, ptr %a185 store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3494, i64 1, i64 0 }, ptr %a191 + store { ptr, i64, i64 } { ptr @.str.3707, i64 1, i64 0 }, ptr %a191 call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 @@ -47817,13 +51623,13 @@ then5356: %t205 = load %S.ast.Type, ptr %a204 %t206 = insertvalue %S.gen.Val %t200, %S.ast.Type %t205, 1 ret %S.gen.Val %t206 -endif5358: +endif5642: %t207 = load ptr, ptr %a1 %t208 = load %S.ast.Node, ptr %a2 %t209 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 %t210 = load %S.ast.Type, ptr %t209 %t211 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t210) - store { ptr, i64, i64 } { ptr @.str.3495, i64 26, i64 0 }, ptr %a213 + store { ptr, i64, i64 } { ptr @.str.3708, i64 26, i64 0 }, ptr %a213 store { ptr, i64, i64 } %t211, ptr %a214 call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) %t215 = load { ptr, i64, i64 }, ptr %a212 @@ -47911,12 +51717,12 @@ entry: store %S.gen.Val %p3, ptr %a4 store %S.ast.Node %p4, ptr %a5 %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3496, i64 11, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.3709, i64 11, i64 0 }, ptr %a8 store { ptr, i64, i64 } %t6, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3497, i64 5, i64 0 }, ptr %a13 + store { ptr, i64, i64 } { ptr @.str.3710, i64 5, i64 0 }, ptr %a13 call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) %t14 = load { ptr, i64, i64 }, ptr %a11 %t15 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 @@ -47933,11 +51739,11 @@ entry: %t26 = load %S.ast.Type, ptr %t25 %t27 = call i1 @finch.ast.same(%S.ast.Type %t24, %S.ast.Type %t26) %t28 = xor i1 %t27, true - br i1 %t28, label %then5359, label %endif5361 -then5359: + br i1 %t28, label %then5643, label %endif5645 +then5643: %t29 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.3498, i64 5, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.3711, i64 5, i64 0 }, ptr %a32 call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) %t33 = load { ptr, i64, i64 }, ptr %a30 %t34 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 @@ -47948,251 +51754,251 @@ then5359: call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t40, ptr %a22 - br label %endif5361 -endif5361: + br label %endif5645 +endif5645: %t41 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.3499, i64 1, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.3712, i64 1, i64 0 }, ptr %a43 %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) %t45 = icmp ne i32 %t44, 0 - br label %logic.from5362 -logic.from5362: - br i1 %t45, label %logic.rhs5363, label %logic.end5364 -logic.rhs5363: + br label %logic.from5646 +logic.from5646: + br i1 %t45, label %logic.rhs5647, label %logic.end5648 +logic.rhs5647: %t46 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 %t47 = getelementptr inbounds %S.ast.Type, ptr %t46, i32 0, i32 0 %t48 = load { ptr, i64, i64 }, ptr %t47 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3500, i64 3, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.3713, i64 3, i64 0 }, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br label %logic.from5365 -logic.from5365: - br i1 %t52, label %logic.end5367, label %logic.rhs5366 -logic.rhs5366: + br label %logic.from5649 +logic.from5649: + br i1 %t52, label %logic.end5651, label %logic.rhs5650 +logic.rhs5650: %t53 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 %t55 = load { ptr, i64, i64 }, ptr %t54 store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.3501, i64 3, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.3714, i64 3, i64 0 }, ptr %a57 %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) %t59 = icmp ne i32 %t58, 0 - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t60 = phi i1 [ true, %logic.from5365 ], [ %t59, %logic.rend5368 ] - br label %logic.rend5369 -logic.rend5369: - br label %logic.end5364 -logic.end5364: - %t61 = phi i1 [ false, %logic.from5362 ], [ %t60, %logic.rend5369 ] - br i1 %t61, label %then5370, label %endif5372 -then5370: + br label %logic.rend5652 +logic.rend5652: + br label %logic.end5651 +logic.end5651: + %t60 = phi i1 [ true, %logic.from5649 ], [ %t59, %logic.rend5652 ] + br label %logic.rend5653 +logic.rend5653: + br label %logic.end5648 +logic.end5648: + %t61 = phi i1 [ false, %logic.from5646 ], [ %t60, %logic.rend5653 ] + br i1 %t61, label %then5654, label %endif5656 +then5654: %t62 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3502, i64 48, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.3715, i64 48, i64 0 }, ptr %a65 call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) %t66 = load { ptr, i64, i64 }, ptr %a63 store { ptr, i64, i64 } %t66, ptr %a22 - br label %endif5372 -endif5372: + br label %endif5656 +endif5656: %t67 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3503, i64 1, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.3716, i64 1, i64 0 }, ptr %a69 %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) %t71 = icmp ne i32 %t70, 0 - br label %logic.from5373 -logic.from5373: - br i1 %t71, label %logic.end5375, label %logic.rhs5374 -logic.rhs5374: + br label %logic.from5657 +logic.from5657: + br i1 %t71, label %logic.end5659, label %logic.rhs5658 +logic.rhs5658: %t72 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3504, i64 1, i64 0 }, ptr %a74 + store { ptr, i64, i64 } { ptr @.str.3717, i64 1, i64 0 }, ptr %a74 %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) %t76 = icmp ne i32 %t75, 0 - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5375 -logic.end5375: - %t77 = phi i1 [ true, %logic.from5373 ], [ %t76, %logic.rend5376 ] - br label %logic.from5377 -logic.from5377: - br i1 %t77, label %logic.rhs5378, label %logic.end5379 -logic.rhs5378: + br label %logic.rend5660 +logic.rend5660: + br label %logic.end5659 +logic.end5659: + %t77 = phi i1 [ true, %logic.from5657 ], [ %t76, %logic.rend5660 ] + br label %logic.from5661 +logic.from5661: + br i1 %t77, label %logic.rhs5662, label %logic.end5663 +logic.rhs5662: %t78 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i32 0, i32 0 %t80 = load { ptr, i64, i64 }, ptr %t79 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3505, i64 4, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3718, i64 4, i64 0 }, ptr %a82 %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) %t84 = icmp ne i32 %t83, 0 - br label %logic.rend5380 -logic.rend5380: - br label %logic.end5379 -logic.end5379: - %t85 = phi i1 [ false, %logic.from5377 ], [ %t84, %logic.rend5380 ] - br i1 %t85, label %then5381, label %else5382 -then5381: + br label %logic.rend5664 +logic.rend5664: + br label %logic.end5663 +logic.end5663: + %t85 = phi i1 [ false, %logic.from5661 ], [ %t84, %logic.rend5664 ] + br i1 %t85, label %then5665, label %else5666 +then5665: %t86 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3506, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.3719, i64 1, i64 0 }, ptr %a88 %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then5384, label %else5385 -then5384: + br i1 %t90, label %then5668, label %else5669 +then5668: %t91 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3507, i64 26, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.3720, i64 26, i64 0 }, ptr %a94 call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) %t95 = load { ptr, i64, i64 }, ptr %a92 store { ptr, i64, i64 } %t95, ptr %a22 - br label %endif5386 -else5385: + br label %endif5670 +else5669: %t96 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.3508, i64 26, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.3721, i64 26, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a22 - br label %endif5386 -endif5386: - br label %endif5383 -else5382: + br label %endif5670 +endif5670: + br label %endif5667 +else5666: %t101 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.3509, i64 1, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.3722, i64 1, i64 0 }, ptr %a103 %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) %t105 = icmp ne i32 %t104, 0 - br label %logic.from5387 -logic.from5387: - br i1 %t105, label %logic.end5389, label %logic.rhs5388 -logic.rhs5388: + br label %logic.from5671 +logic.from5671: + br i1 %t105, label %logic.end5673, label %logic.rhs5672 +logic.rhs5672: %t106 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.3510, i64 1, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.3723, i64 1, i64 0 }, ptr %a108 %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) %t110 = icmp ne i32 %t109, 0 - br label %logic.rend5390 -logic.rend5390: - br label %logic.end5389 -logic.end5389: - %t111 = phi i1 [ true, %logic.from5387 ], [ %t110, %logic.rend5390 ] - br label %logic.from5391 -logic.from5391: - br i1 %t111, label %logic.end5393, label %logic.rhs5392 -logic.rhs5392: + br label %logic.rend5674 +logic.rend5674: + br label %logic.end5673 +logic.end5673: + %t111 = phi i1 [ true, %logic.from5671 ], [ %t110, %logic.rend5674 ] + br label %logic.from5675 +logic.from5675: + br i1 %t111, label %logic.end5677, label %logic.rhs5676 +logic.rhs5676: %t112 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.3511, i64 1, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.3724, i64 1, i64 0 }, ptr %a114 %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) %t116 = icmp ne i32 %t115, 0 - br label %logic.rend5394 -logic.rend5394: - br label %logic.end5393 -logic.end5393: - %t117 = phi i1 [ true, %logic.from5391 ], [ %t116, %logic.rend5394 ] - br label %logic.from5395 -logic.from5395: - br i1 %t117, label %logic.end5397, label %logic.rhs5396 -logic.rhs5396: + br label %logic.rend5678 +logic.rend5678: + br label %logic.end5677 +logic.end5677: + %t117 = phi i1 [ true, %logic.from5675 ], [ %t116, %logic.rend5678 ] + br label %logic.from5679 +logic.from5679: + br i1 %t117, label %logic.end5681, label %logic.rhs5680 +logic.rhs5680: %t118 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.3512, i64 2, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.3725, i64 2, i64 0 }, ptr %a120 %t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120) %t122 = icmp ne i32 %t121, 0 - br label %logic.rend5398 -logic.rend5398: - br label %logic.end5397 -logic.end5397: - %t123 = phi i1 [ true, %logic.from5395 ], [ %t122, %logic.rend5398 ] - br label %logic.from5399 -logic.from5399: - br i1 %t123, label %logic.end5401, label %logic.rhs5400 -logic.rhs5400: + br label %logic.rend5682 +logic.rend5682: + br label %logic.end5681 +logic.end5681: + %t123 = phi i1 [ true, %logic.from5679 ], [ %t122, %logic.rend5682 ] + br label %logic.from5683 +logic.from5683: + br i1 %t123, label %logic.end5685, label %logic.rhs5684 +logic.rhs5684: %t124 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.3513, i64 2, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3726, i64 2, i64 0 }, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br label %logic.rend5402 -logic.rend5402: - br label %logic.end5401 -logic.end5401: - %t129 = phi i1 [ true, %logic.from5399 ], [ %t128, %logic.rend5402 ] - br i1 %t129, label %then5403, label %endif5405 -then5403: + br label %logic.rend5686 +logic.rend5686: + br label %logic.end5685 +logic.end5685: + %t129 = phi i1 [ true, %logic.from5683 ], [ %t128, %logic.rend5686 ] + br i1 %t129, label %then5687, label %endif5689 +then5687: %t130 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.3514, i64 43, i64 0 }, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.3727, i64 43, i64 0 }, ptr %a133 call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) %t134 = load { ptr, i64, i64 }, ptr %a131 store { ptr, i64, i64 } %t134, ptr %a22 - br label %endif5405 -endif5405: - br label %endif5383 -endif5383: + br label %endif5689 +endif5689: + br label %endif5667 +endif5667: %t135 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i32 0, i32 0 %t137 = load { ptr, i64, i64 }, ptr %t136 store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3515, i64 6, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.3728, i64 6, i64 0 }, ptr %a139 %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) %t141 = icmp ne i32 %t140, 0 - br label %logic.from5406 -logic.from5406: - br i1 %t141, label %logic.end5408, label %logic.rhs5407 -logic.rhs5407: + br label %logic.from5690 +logic.from5690: + br i1 %t141, label %logic.end5692, label %logic.rhs5691 +logic.rhs5691: %t142 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 %t143 = getelementptr inbounds %S.ast.Type, ptr %t142, i32 0, i32 0 %t144 = load { ptr, i64, i64 }, ptr %t143 store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.3516, i64 5, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.3729, i64 5, i64 0 }, ptr %a146 %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) %t148 = icmp ne i32 %t147, 0 - br label %logic.rend5409 -logic.rend5409: - br label %logic.end5408 -logic.end5408: - %t149 = phi i1 [ true, %logic.from5406 ], [ %t148, %logic.rend5409 ] - br label %logic.from5410 -logic.from5410: - br i1 %t149, label %logic.rhs5411, label %logic.end5412 -logic.rhs5411: + br label %logic.rend5693 +logic.rend5693: + br label %logic.end5692 +logic.end5692: + %t149 = phi i1 [ true, %logic.from5690 ], [ %t148, %logic.rend5693 ] + br label %logic.from5694 +logic.from5694: + br i1 %t149, label %logic.rhs5695, label %logic.end5696 +logic.rhs5695: %t150 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.3517, i64 2, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3730, i64 2, i64 0 }, ptr %a152 %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) %t154 = icmp ne i32 %t153, 0 - br label %logic.from5413 -logic.from5413: - br i1 %t154, label %logic.end5415, label %logic.rhs5414 -logic.rhs5414: + br label %logic.from5697 +logic.from5697: + br i1 %t154, label %logic.end5699, label %logic.rhs5698 +logic.rhs5698: %t155 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3518, i64 2, i64 0 }, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.3731, i64 2, i64 0 }, ptr %a157 %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) %t159 = icmp ne i32 %t158, 0 - br label %logic.rend5416 -logic.rend5416: - br label %logic.end5415 -logic.end5415: - %t160 = phi i1 [ true, %logic.from5413 ], [ %t159, %logic.rend5416 ] - br label %logic.rend5417 -logic.rend5417: - br label %logic.end5412 -logic.end5412: - %t161 = phi i1 [ false, %logic.from5410 ], [ %t160, %logic.rend5417 ] - br i1 %t161, label %then5418, label %endif5420 -then5418: + br label %logic.rend5700 +logic.rend5700: + br label %logic.end5699 +logic.end5699: + %t160 = phi i1 [ true, %logic.from5697 ], [ %t159, %logic.rend5700 ] + br label %logic.rend5701 +logic.rend5701: + br label %logic.end5696 +logic.end5696: + %t161 = phi i1 [ false, %logic.from5694 ], [ %t160, %logic.rend5701 ] + br i1 %t161, label %then5702, label %endif5704 +then5702: %t162 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3519, i64 31, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.3732, i64 31, i64 0 }, ptr %a165 call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) %t166 = load { ptr, i64, i64 }, ptr %a163 store { ptr, i64, i64 } %t166, ptr %a22 - br label %endif5420 -endif5420: + br label %endif5704 +endif5704: %t167 = load ptr, ptr %a1 %t168 = load %S.ast.Node, ptr %a5 %t169 = load { ptr, i64, i64 }, ptr %a22 @@ -48226,132 +52032,132 @@ entry: store ptr %p2, ptr %a3 %t4 = load ptr, ptr %a2 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic5421, label %ok5422 -panic5421: - call void @finch_panic(ptr @.str.3520, i64 2944, ptr @.str.3521) + br i1 %t5, label %panic5705, label %ok5706 +panic5705: + call void @finch_panic(ptr @.str.3733, i64 3069, ptr @.str.3734) unreachable -ok5422: +ok5706: %t6 = getelementptr inbounds %S.gen.Val, ptr %t4, i32 0, i32 1 %t7 = load %S.ast.Type, ptr %t6 %t8 = load ptr, ptr %a3 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic5423, label %ok5424 -panic5423: - call void @finch_panic(ptr @.str.3522, i64 2944, ptr @.str.3523) + br i1 %t9, label %panic5707, label %ok5708 +panic5707: + call void @finch_panic(ptr @.str.3735, i64 3069, ptr @.str.3736) unreachable -ok5424: +ok5708: %t10 = getelementptr inbounds %S.gen.Val, ptr %t8, i32 0, i32 1 %t11 = load %S.ast.Type, ptr %t10 %t12 = call i1 @finch.ast.same(%S.ast.Type %t7, %S.ast.Type %t11) - br i1 %t12, label %then5425, label %endif5427 -then5425: + br i1 %t12, label %then5709, label %endif5711 +then5709: ret i1 true -endif5427: +endif5711: %t13 = load ptr, ptr %a2 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic5428, label %ok5429 -panic5428: - call void @finch_panic(ptr @.str.3524, i64 2947, ptr @.str.3525) + br i1 %t14, label %panic5712, label %ok5713 +panic5712: + call void @finch_panic(ptr @.str.3737, i64 3072, ptr @.str.3738) unreachable -ok5429: +ok5713: %t15 = getelementptr inbounds %S.gen.Val, ptr %t13, i32 0, i32 1 %t16 = load %S.ast.Type, ptr %t15 %t17 = call i1 @finch.gen.isInt(%S.ast.Type %t16) - br label %logic.from5430 -logic.from5430: - br i1 %t17, label %logic.rhs5431, label %logic.end5432 -logic.rhs5431: + br label %logic.from5714 +logic.from5714: + br i1 %t17, label %logic.rhs5715, label %logic.end5716 +logic.rhs5715: %t18 = load ptr, ptr %a3 %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic5433, label %ok5434 -panic5433: - call void @finch_panic(ptr @.str.3526, i64 2947, ptr @.str.3527) + br i1 %t19, label %panic5717, label %ok5718 +panic5717: + call void @finch_panic(ptr @.str.3739, i64 3072, ptr @.str.3740) unreachable -ok5434: +ok5718: %t20 = getelementptr inbounds %S.gen.Val, ptr %t18, i32 0, i32 1 %t21 = load %S.ast.Type, ptr %t20 %t22 = call i1 @finch.gen.isInt(%S.ast.Type %t21) - br label %logic.rend5435 -logic.rend5435: - br label %logic.end5432 -logic.end5432: - %t23 = phi i1 [ false, %logic.from5430 ], [ %t22, %logic.rend5435 ] - br i1 %t23, label %then5436, label %endif5438 -then5436: + br label %logic.rend5719 +logic.rend5719: + br label %logic.end5716 +logic.end5716: + %t23 = phi i1 [ false, %logic.from5714 ], [ %t22, %logic.rend5719 ] + br i1 %t23, label %then5720, label %endif5722 +then5720: %t24 = load ptr, ptr %a2 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3528, i64 2950, ptr @.str.3529) + br i1 %t25, label %panic5723, label %ok5724 +panic5723: + call void @finch_panic(ptr @.str.3741, i64 3075, ptr @.str.3742) unreachable -ok5440: +ok5724: %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 %t27 = load i1, ptr %t26 - br label %logic.from5441 -logic.from5441: - br i1 %t27, label %logic.rhs5442, label %logic.end5443 -logic.rhs5442: + br label %logic.from5725 +logic.from5725: + br i1 %t27, label %logic.rhs5726, label %logic.end5727 +logic.rhs5726: %t28 = load ptr, ptr %a3 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic5444, label %ok5445 -panic5444: - call void @finch_panic(ptr @.str.3530, i64 2950, ptr @.str.3531) + br i1 %t29, label %panic5728, label %ok5729 +panic5728: + call void @finch_panic(ptr @.str.3743, i64 3075, ptr @.str.3744) unreachable -ok5445: +ok5729: %t30 = getelementptr inbounds %S.gen.Val, ptr %t28, i32 0, i32 3 %t31 = load i1, ptr %t30 %t32 = xor i1 %t31, true - br label %logic.rend5446 -logic.rend5446: - br label %logic.end5443 -logic.end5443: - %t33 = phi i1 [ false, %logic.from5441 ], [ %t32, %logic.rend5446 ] - br label %logic.from5447 -logic.from5447: - br i1 %t33, label %logic.rhs5448, label %logic.end5449 -logic.rhs5448: + br label %logic.rend5730 +logic.rend5730: + br label %logic.end5727 +logic.end5727: + %t33 = phi i1 [ false, %logic.from5725 ], [ %t32, %logic.rend5730 ] + br label %logic.from5731 +logic.from5731: + br i1 %t33, label %logic.rhs5732, label %logic.end5733 +logic.rhs5732: %t34 = load ptr, ptr %a2 %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic5450, label %ok5451 -panic5450: - call void @finch_panic(ptr @.str.3532, i64 2950, ptr @.str.3533) + br i1 %t35, label %panic5734, label %ok5735 +panic5734: + call void @finch_panic(ptr @.str.3745, i64 3075, ptr @.str.3746) unreachable -ok5451: +ok5735: %t36 = getelementptr inbounds %S.gen.Val, ptr %t34, i32 0, i32 0 %t37 = load { ptr, i64, i64 }, ptr %t36 %t38 = load ptr, ptr %a2 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic5452, label %ok5453 -panic5452: - call void @finch_panic(ptr @.str.3534, i64 2950, ptr @.str.3535) + br i1 %t39, label %panic5736, label %ok5737 +panic5736: + call void @finch_panic(ptr @.str.3747, i64 3075, ptr @.str.3748) unreachable -ok5453: +ok5737: %t40 = getelementptr inbounds %S.gen.Val, ptr %t38, i32 0, i32 1 %t41 = load %S.ast.Type, ptr %t40 %t42 = load ptr, ptr %a3 %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic5454, label %ok5455 -panic5454: - call void @finch_panic(ptr @.str.3536, i64 2950, ptr @.str.3537) + br i1 %t43, label %panic5738, label %ok5739 +panic5738: + call void @finch_panic(ptr @.str.3749, i64 3075, ptr @.str.3750) unreachable -ok5455: +ok5739: %t44 = getelementptr inbounds %S.gen.Val, ptr %t42, i32 0, i32 1 %t45 = load %S.ast.Type, ptr %t44 %t46 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t37, %S.ast.Type %t41, %S.ast.Type %t45) - br label %logic.rend5456 -logic.rend5456: - br label %logic.end5449 -logic.end5449: - %t47 = phi i1 [ false, %logic.from5447 ], [ %t46, %logic.rend5456 ] - br i1 %t47, label %then5457, label %endif5459 -then5457: + br label %logic.rend5740 +logic.rend5740: + br label %logic.end5733 +logic.end5733: + %t47 = phi i1 [ false, %logic.from5731 ], [ %t46, %logic.rend5740 ] + br i1 %t47, label %then5741, label %endif5743 +then5741: %t48 = load ptr, ptr %a2 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3538, i64 2951, ptr @.str.3539) + br i1 %t49, label %panic5744, label %ok5745 +panic5744: + call void @finch_panic(ptr @.str.3751, i64 3076, ptr @.str.3752) unreachable -ok5461: +ok5745: %t50 = getelementptr inbounds %S.gen.Val, ptr %t48, i32 0, i32 0 %t51 = load { ptr, i64, i64 }, ptr %t50 store { ptr, i64, i64 } %t51, ptr %a52 @@ -48360,11 +52166,11 @@ ok5461: %t55 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t54, 0 %t56 = load ptr, ptr %a3 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic5462, label %ok5463 -panic5462: - call void @finch_panic(ptr @.str.3540, i64 2951, ptr @.str.3541) + br i1 %t57, label %panic5746, label %ok5747 +panic5746: + call void @finch_panic(ptr @.str.3753, i64 3076, ptr @.str.3754) unreachable -ok5463: +ok5747: %t58 = getelementptr inbounds %S.gen.Val, ptr %t56, i32 0, i32 1 %t59 = load %S.ast.Type, ptr %t58 store %S.ast.Type %t59, ptr %a60 @@ -48374,88 +52180,88 @@ ok5463: %t64 = insertvalue %S.gen.Val %t63, i1 true, 3 %t65 = load ptr, ptr %a2 %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic5464, label %ok5465 -panic5464: - call void @finch_panic(ptr @.str.3542, i64 2951, ptr @.str.3543) + br i1 %t66, label %panic5748, label %ok5749 +panic5748: + call void @finch_panic(ptr @.str.3755, i64 3076, ptr @.str.3756) unreachable -ok5465: +ok5749: store %S.gen.Val %t64, ptr %t65 ret i1 true -endif5459: +endif5743: %t67 = load ptr, ptr %a3 %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5466, label %ok5467 -panic5466: - call void @finch_panic(ptr @.str.3544, i64 2954, ptr @.str.3545) + br i1 %t68, label %panic5750, label %ok5751 +panic5750: + call void @finch_panic(ptr @.str.3757, i64 3079, ptr @.str.3758) unreachable -ok5467: +ok5751: %t69 = getelementptr inbounds %S.gen.Val, ptr %t67, i32 0, i32 3 %t70 = load i1, ptr %t69 - br label %logic.from5468 -logic.from5468: - br i1 %t70, label %logic.rhs5469, label %logic.end5470 -logic.rhs5469: + br label %logic.from5752 +logic.from5752: + br i1 %t70, label %logic.rhs5753, label %logic.end5754 +logic.rhs5753: %t71 = load ptr, ptr %a2 %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic5471, label %ok5472 -panic5471: - call void @finch_panic(ptr @.str.3546, i64 2954, ptr @.str.3547) + br i1 %t72, label %panic5755, label %ok5756 +panic5755: + call void @finch_panic(ptr @.str.3759, i64 3079, ptr @.str.3760) unreachable -ok5472: +ok5756: %t73 = getelementptr inbounds %S.gen.Val, ptr %t71, i32 0, i32 3 %t74 = load i1, ptr %t73 %t75 = xor i1 %t74, true - br label %logic.rend5473 -logic.rend5473: - br label %logic.end5470 -logic.end5470: - %t76 = phi i1 [ false, %logic.from5468 ], [ %t75, %logic.rend5473 ] - br label %logic.from5474 -logic.from5474: - br i1 %t76, label %logic.rhs5475, label %logic.end5476 -logic.rhs5475: + br label %logic.rend5757 +logic.rend5757: + br label %logic.end5754 +logic.end5754: + %t76 = phi i1 [ false, %logic.from5752 ], [ %t75, %logic.rend5757 ] + br label %logic.from5758 +logic.from5758: + br i1 %t76, label %logic.rhs5759, label %logic.end5760 +logic.rhs5759: %t77 = load ptr, ptr %a3 %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic5477, label %ok5478 -panic5477: - call void @finch_panic(ptr @.str.3548, i64 2954, ptr @.str.3549) + br i1 %t78, label %panic5761, label %ok5762 +panic5761: + call void @finch_panic(ptr @.str.3761, i64 3079, ptr @.str.3762) unreachable -ok5478: +ok5762: %t79 = getelementptr inbounds %S.gen.Val, ptr %t77, i32 0, i32 0 %t80 = load { ptr, i64, i64 }, ptr %t79 %t81 = load ptr, ptr %a3 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5479, label %ok5480 -panic5479: - call void @finch_panic(ptr @.str.3550, i64 2954, ptr @.str.3551) + br i1 %t82, label %panic5763, label %ok5764 +panic5763: + call void @finch_panic(ptr @.str.3763, i64 3079, ptr @.str.3764) unreachable -ok5480: +ok5764: %t83 = getelementptr inbounds %S.gen.Val, ptr %t81, i32 0, i32 1 %t84 = load %S.ast.Type, ptr %t83 %t85 = load ptr, ptr %a2 %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3552, i64 2954, ptr @.str.3553) + br i1 %t86, label %panic5765, label %ok5766 +panic5765: + call void @finch_panic(ptr @.str.3765, i64 3079, ptr @.str.3766) unreachable -ok5482: +ok5766: %t87 = getelementptr inbounds %S.gen.Val, ptr %t85, i32 0, i32 1 %t88 = load %S.ast.Type, ptr %t87 %t89 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t80, %S.ast.Type %t84, %S.ast.Type %t88) - br label %logic.rend5483 -logic.rend5483: - br label %logic.end5476 -logic.end5476: - %t90 = phi i1 [ false, %logic.from5474 ], [ %t89, %logic.rend5483 ] - br i1 %t90, label %then5484, label %endif5486 -then5484: + br label %logic.rend5767 +logic.rend5767: + br label %logic.end5760 +logic.end5760: + %t90 = phi i1 [ false, %logic.from5758 ], [ %t89, %logic.rend5767 ] + br i1 %t90, label %then5768, label %endif5770 +then5768: %t91 = load ptr, ptr %a3 %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5487, label %ok5488 -panic5487: - call void @finch_panic(ptr @.str.3554, i64 2955, ptr @.str.3555) + br i1 %t92, label %panic5771, label %ok5772 +panic5771: + call void @finch_panic(ptr @.str.3767, i64 3080, ptr @.str.3768) unreachable -ok5488: +ok5772: %t93 = getelementptr inbounds %S.gen.Val, ptr %t91, i32 0, i32 0 %t94 = load { ptr, i64, i64 }, ptr %t93 store { ptr, i64, i64 } %t94, ptr %a95 @@ -48464,11 +52270,11 @@ ok5488: %t98 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 %t99 = load ptr, ptr %a2 %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3556, i64 2955, ptr @.str.3557) + br i1 %t100, label %panic5773, label %ok5774 +panic5773: + call void @finch_panic(ptr @.str.3769, i64 3080, ptr @.str.3770) unreachable -ok5490: +ok5774: %t101 = getelementptr inbounds %S.gen.Val, ptr %t99, i32 0, i32 1 %t102 = load %S.ast.Type, ptr %t101 store %S.ast.Type %t102, ptr %a103 @@ -48478,72 +52284,72 @@ ok5490: %t107 = insertvalue %S.gen.Val %t106, i1 true, 3 %t108 = load ptr, ptr %a3 %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5491, label %ok5492 -panic5491: - call void @finch_panic(ptr @.str.3558, i64 2955, ptr @.str.3559) + br i1 %t109, label %panic5775, label %ok5776 +panic5775: + call void @finch_panic(ptr @.str.3771, i64 3080, ptr @.str.3772) unreachable -ok5492: +ok5776: store %S.gen.Val %t107, ptr %t108 ret i1 true -endif5486: +endif5770: %t110 = load ptr, ptr %a2 %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic5493, label %ok5494 -panic5493: - call void @finch_panic(ptr @.str.3560, i64 2958, ptr @.str.3561) + br i1 %t111, label %panic5777, label %ok5778 +panic5777: + call void @finch_panic(ptr @.str.3773, i64 3083, ptr @.str.3774) unreachable -ok5494: +ok5778: %t112 = getelementptr inbounds %S.gen.Val, ptr %t110, i32 0, i32 1 %t113 = load %S.ast.Type, ptr %t112 %t114 = load ptr, ptr %a3 %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5495, label %ok5496 -panic5495: - call void @finch_panic(ptr @.str.3562, i64 2958, ptr @.str.3563) + br i1 %t115, label %panic5779, label %ok5780 +panic5779: + call void @finch_panic(ptr @.str.3775, i64 3083, ptr @.str.3776) unreachable -ok5496: +ok5780: %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 %t117 = load %S.ast.Type, ptr %t116 %t118 = call i1 @finch.gen.widens(%S.ast.Type %t113, %S.ast.Type %t117) - br i1 %t118, label %then5497, label %endif5499 -then5497: + br i1 %t118, label %then5781, label %endif5783 +then5781: %t119 = load ptr, ptr %a1 %t120 = load ptr, ptr %a2 %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic5500, label %ok5501 -panic5500: - call void @finch_panic(ptr @.str.3564, i64 2959, ptr @.str.3565) + br i1 %t121, label %panic5784, label %ok5785 +panic5784: + call void @finch_panic(ptr @.str.3777, i64 3084, ptr @.str.3778) unreachable -ok5501: +ok5785: %t122 = getelementptr inbounds %S.gen.Val, ptr %t120, i32 0, i32 0 %t123 = load { ptr, i64, i64 }, ptr %t122 %t124 = load ptr, ptr %a2 %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic5502, label %ok5503 -panic5502: - call void @finch_panic(ptr @.str.3566, i64 2959, ptr @.str.3567) + br i1 %t125, label %panic5786, label %ok5787 +panic5786: + call void @finch_panic(ptr @.str.3779, i64 3084, ptr @.str.3780) unreachable -ok5503: +ok5787: %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 1 %t127 = load %S.ast.Type, ptr %t126 %t128 = load ptr, ptr %a3 %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5504, label %ok5505 -panic5504: - call void @finch_panic(ptr @.str.3568, i64 2959, ptr @.str.3569) + br i1 %t129, label %panic5788, label %ok5789 +panic5788: + call void @finch_panic(ptr @.str.3781, i64 3084, ptr @.str.3782) unreachable -ok5505: +ok5789: %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 %t131 = load %S.ast.Type, ptr %t130 %t132 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t119, { ptr, i64, i64 } %t123, %S.ast.Type %t127, %S.ast.Type %t131) %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t132, 0 %t134 = load ptr, ptr %a3 %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic5506, label %ok5507 -panic5506: - call void @finch_panic(ptr @.str.3570, i64 2959, ptr @.str.3571) + br i1 %t135, label %panic5790, label %ok5791 +panic5790: + call void @finch_panic(ptr @.str.3783, i64 3084, ptr @.str.3784) unreachable -ok5507: +ok5791: %t136 = getelementptr inbounds %S.gen.Val, ptr %t134, i32 0, i32 1 %t137 = load %S.ast.Type, ptr %t136 store %S.ast.Type %t137, ptr %a138 @@ -48552,72 +52358,72 @@ ok5507: %t141 = insertvalue %S.gen.Val %t133, %S.ast.Type %t140, 1 %t142 = load ptr, ptr %a2 %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5508, label %ok5509 -panic5508: - call void @finch_panic(ptr @.str.3572, i64 2959, ptr @.str.3573) + br i1 %t143, label %panic5792, label %ok5793 +panic5792: + call void @finch_panic(ptr @.str.3785, i64 3084, ptr @.str.3786) unreachable -ok5509: +ok5793: store %S.gen.Val %t141, ptr %t142 ret i1 true -endif5499: +endif5783: %t144 = load ptr, ptr %a3 %t145 = icmp eq ptr %t144, null - br i1 %t145, label %panic5510, label %ok5511 -panic5510: - call void @finch_panic(ptr @.str.3574, i64 2962, ptr @.str.3575) + br i1 %t145, label %panic5794, label %ok5795 +panic5794: + call void @finch_panic(ptr @.str.3787, i64 3087, ptr @.str.3788) unreachable -ok5511: +ok5795: %t146 = getelementptr inbounds %S.gen.Val, ptr %t144, i32 0, i32 1 %t147 = load %S.ast.Type, ptr %t146 %t148 = load ptr, ptr %a2 %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic5512, label %ok5513 -panic5512: - call void @finch_panic(ptr @.str.3576, i64 2962, ptr @.str.3577) + br i1 %t149, label %panic5796, label %ok5797 +panic5796: + call void @finch_panic(ptr @.str.3789, i64 3087, ptr @.str.3790) unreachable -ok5513: +ok5797: %t150 = getelementptr inbounds %S.gen.Val, ptr %t148, i32 0, i32 1 %t151 = load %S.ast.Type, ptr %t150 %t152 = call i1 @finch.gen.widens(%S.ast.Type %t147, %S.ast.Type %t151) - br i1 %t152, label %then5514, label %endif5516 -then5514: + br i1 %t152, label %then5798, label %endif5800 +then5798: %t153 = load ptr, ptr %a1 %t154 = load ptr, ptr %a3 %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5517, label %ok5518 -panic5517: - call void @finch_panic(ptr @.str.3578, i64 2963, ptr @.str.3579) + br i1 %t155, label %panic5801, label %ok5802 +panic5801: + call void @finch_panic(ptr @.str.3791, i64 3088, ptr @.str.3792) unreachable -ok5518: +ok5802: %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 0 %t157 = load { ptr, i64, i64 }, ptr %t156 %t158 = load ptr, ptr %a3 %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3580, i64 2963, ptr @.str.3581) + br i1 %t159, label %panic5803, label %ok5804 +panic5803: + call void @finch_panic(ptr @.str.3793, i64 3088, ptr @.str.3794) unreachable -ok5520: +ok5804: %t160 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 %t161 = load %S.ast.Type, ptr %t160 %t162 = load ptr, ptr %a2 %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic5521, label %ok5522 -panic5521: - call void @finch_panic(ptr @.str.3582, i64 2963, ptr @.str.3583) + br i1 %t163, label %panic5805, label %ok5806 +panic5805: + call void @finch_panic(ptr @.str.3795, i64 3088, ptr @.str.3796) unreachable -ok5522: +ok5806: %t164 = getelementptr inbounds %S.gen.Val, ptr %t162, i32 0, i32 1 %t165 = load %S.ast.Type, ptr %t164 %t166 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t153, { ptr, i64, i64 } %t157, %S.ast.Type %t161, %S.ast.Type %t165) %t167 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t166, 0 %t168 = load ptr, ptr %a2 %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic5523, label %ok5524 -panic5523: - call void @finch_panic(ptr @.str.3584, i64 2963, ptr @.str.3585) + br i1 %t169, label %panic5807, label %ok5808 +panic5807: + call void @finch_panic(ptr @.str.3797, i64 3088, ptr @.str.3798) unreachable -ok5524: +ok5808: %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 %t171 = load %S.ast.Type, ptr %t170 store %S.ast.Type %t171, ptr %a172 @@ -48626,271 +52432,271 @@ ok5524: %t175 = insertvalue %S.gen.Val %t167, %S.ast.Type %t174, 1 %t176 = load ptr, ptr %a3 %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic5525, label %ok5526 -panic5525: - call void @finch_panic(ptr @.str.3586, i64 2963, ptr @.str.3587) + br i1 %t177, label %panic5809, label %ok5810 +panic5809: + call void @finch_panic(ptr @.str.3799, i64 3088, ptr @.str.3800) unreachable -ok5526: +ok5810: store %S.gen.Val %t175, ptr %t176 ret i1 true -endif5516: +endif5800: ret i1 false -endif5438: +endif5722: %t178 = load ptr, ptr %a2 %t179 = icmp eq ptr %t178, null - br i1 %t179, label %panic5527, label %ok5528 -panic5527: - call void @finch_panic(ptr @.str.3588, i64 2968, ptr @.str.3589) + br i1 %t179, label %panic5811, label %ok5812 +panic5811: + call void @finch_panic(ptr @.str.3801, i64 3093, ptr @.str.3802) unreachable -ok5528: +ok5812: %t180 = getelementptr inbounds %S.gen.Val, ptr %t178, i32 0, i32 1 %t181 = load %S.ast.Type, ptr %t180 %t182 = call i1 @finch.gen.isInt(%S.ast.Type %t181) - br label %logic.from5529 -logic.from5529: - br i1 %t182, label %logic.rhs5530, label %logic.end5531 -logic.rhs5530: + br label %logic.from5813 +logic.from5813: + br i1 %t182, label %logic.rhs5814, label %logic.end5815 +logic.rhs5814: %t183 = load ptr, ptr %a3 %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic5532, label %ok5533 -panic5532: - call void @finch_panic(ptr @.str.3590, i64 2968, ptr @.str.3591) + br i1 %t184, label %panic5816, label %ok5817 +panic5816: + call void @finch_panic(ptr @.str.3803, i64 3093, ptr @.str.3804) unreachable -ok5533: +ok5817: %t185 = getelementptr inbounds %S.gen.Val, ptr %t183, i32 0, i32 1 %t186 = load %S.ast.Type, ptr %t185 %t187 = call i1 @finch.gen.isFloat(%S.ast.Type %t186) - br label %logic.rend5534 -logic.rend5534: - br label %logic.end5531 -logic.end5531: - %t188 = phi i1 [ false, %logic.from5529 ], [ %t187, %logic.rend5534 ] - br i1 %t188, label %then5535, label %endif5537 -then5535: + br label %logic.rend5818 +logic.rend5818: + br label %logic.end5815 +logic.end5815: + %t188 = phi i1 [ false, %logic.from5813 ], [ %t187, %logic.rend5818 ] + br i1 %t188, label %then5819, label %endif5821 +then5819: %t189 = load ptr, ptr %a1 %t190 = load ptr, ptr %a2 %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic5538, label %ok5539 -panic5538: - call void @finch_panic(ptr @.str.3592, i64 2969, ptr @.str.3593) + br i1 %t191, label %panic5822, label %ok5823 +panic5822: + call void @finch_panic(ptr @.str.3805, i64 3094, ptr @.str.3806) unreachable -ok5539: +ok5823: %t192 = load %S.gen.Val, ptr %t190 %t193 = load ptr, ptr %a3 %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3594, i64 2969, ptr @.str.3595) + br i1 %t194, label %panic5824, label %ok5825 +panic5824: + call void @finch_panic(ptr @.str.3807, i64 3094, ptr @.str.3808) unreachable -ok5541: +ok5825: %t195 = getelementptr inbounds %S.gen.Val, ptr %t193, i32 0, i32 1 %t196 = load %S.ast.Type, ptr %t195 %t197 = call %S.ast.Node @finch.gen.Node0() - %t198 = call %S.gen.Val @finch.gen.coerce(ptr %t189, %S.gen.Val %t192, %S.ast.Type %t196, %S.ast.Node %t197, { ptr, i64, i64 } { ptr @.str.3596, i64 0, i64 0 }) + %t198 = call %S.gen.Val @finch.gen.coerce(ptr %t189, %S.gen.Val %t192, %S.ast.Type %t196, %S.ast.Node %t197, { ptr, i64, i64 } { ptr @.str.3809, i64 0, i64 0 }) %t199 = load ptr, ptr %a2 %t200 = icmp eq ptr %t199, null - br i1 %t200, label %panic5542, label %ok5543 -panic5542: - call void @finch_panic(ptr @.str.3597, i64 2969, ptr @.str.3598) + br i1 %t200, label %panic5826, label %ok5827 +panic5826: + call void @finch_panic(ptr @.str.3810, i64 3094, ptr @.str.3811) unreachable -ok5543: +ok5827: store %S.gen.Val %t198, ptr %t199 ret i1 true -endif5537: +endif5821: %t201 = load ptr, ptr %a2 %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5544, label %ok5545 -panic5544: - call void @finch_panic(ptr @.str.3599, i64 2972, ptr @.str.3600) + br i1 %t202, label %panic5828, label %ok5829 +panic5828: + call void @finch_panic(ptr @.str.3812, i64 3097, ptr @.str.3813) unreachable -ok5545: +ok5829: %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 %t204 = load %S.ast.Type, ptr %t203 %t205 = call i1 @finch.gen.isFloat(%S.ast.Type %t204) - br label %logic.from5546 -logic.from5546: - br i1 %t205, label %logic.rhs5547, label %logic.end5548 -logic.rhs5547: + br label %logic.from5830 +logic.from5830: + br i1 %t205, label %logic.rhs5831, label %logic.end5832 +logic.rhs5831: %t206 = load ptr, ptr %a3 %t207 = icmp eq ptr %t206, null - br i1 %t207, label %panic5549, label %ok5550 -panic5549: - call void @finch_panic(ptr @.str.3601, i64 2972, ptr @.str.3602) + br i1 %t207, label %panic5833, label %ok5834 +panic5833: + call void @finch_panic(ptr @.str.3814, i64 3097, ptr @.str.3815) unreachable -ok5550: +ok5834: %t208 = getelementptr inbounds %S.gen.Val, ptr %t206, i32 0, i32 1 %t209 = load %S.ast.Type, ptr %t208 %t210 = call i1 @finch.gen.isInt(%S.ast.Type %t209) - br label %logic.rend5551 -logic.rend5551: - br label %logic.end5548 -logic.end5548: - %t211 = phi i1 [ false, %logic.from5546 ], [ %t210, %logic.rend5551 ] - br i1 %t211, label %then5552, label %endif5554 -then5552: + br label %logic.rend5835 +logic.rend5835: + br label %logic.end5832 +logic.end5832: + %t211 = phi i1 [ false, %logic.from5830 ], [ %t210, %logic.rend5835 ] + br i1 %t211, label %then5836, label %endif5838 +then5836: %t212 = load ptr, ptr %a1 %t213 = load ptr, ptr %a3 %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5555, label %ok5556 -panic5555: - call void @finch_panic(ptr @.str.3603, i64 2973, ptr @.str.3604) + br i1 %t214, label %panic5839, label %ok5840 +panic5839: + call void @finch_panic(ptr @.str.3816, i64 3098, ptr @.str.3817) unreachable -ok5556: +ok5840: %t215 = load %S.gen.Val, ptr %t213 %t216 = load ptr, ptr %a2 %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic5557, label %ok5558 -panic5557: - call void @finch_panic(ptr @.str.3605, i64 2973, ptr @.str.3606) + br i1 %t217, label %panic5841, label %ok5842 +panic5841: + call void @finch_panic(ptr @.str.3818, i64 3098, ptr @.str.3819) unreachable -ok5558: +ok5842: %t218 = getelementptr inbounds %S.gen.Val, ptr %t216, i32 0, i32 1 %t219 = load %S.ast.Type, ptr %t218 %t220 = call %S.ast.Node @finch.gen.Node0() - %t221 = call %S.gen.Val @finch.gen.coerce(ptr %t212, %S.gen.Val %t215, %S.ast.Type %t219, %S.ast.Node %t220, { ptr, i64, i64 } { ptr @.str.3607, i64 0, i64 0 }) + %t221 = call %S.gen.Val @finch.gen.coerce(ptr %t212, %S.gen.Val %t215, %S.ast.Type %t219, %S.ast.Node %t220, { ptr, i64, i64 } { ptr @.str.3820, i64 0, i64 0 }) %t222 = load ptr, ptr %a3 %t223 = icmp eq ptr %t222, null - br i1 %t223, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3608, i64 2973, ptr @.str.3609) + br i1 %t223, label %panic5843, label %ok5844 +panic5843: + call void @finch_panic(ptr @.str.3821, i64 3098, ptr @.str.3822) unreachable -ok5560: +ok5844: store %S.gen.Val %t221, ptr %t222 ret i1 true -endif5554: +endif5838: %t224 = load ptr, ptr %a2 %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3610, i64 2976, ptr @.str.3611) + br i1 %t225, label %panic5845, label %ok5846 +panic5845: + call void @finch_panic(ptr @.str.3823, i64 3101, ptr @.str.3824) unreachable -ok5562: +ok5846: %t226 = getelementptr inbounds %S.gen.Val, ptr %t224, i32 0, i32 1 %t227 = load %S.ast.Type, ptr %t226 %t228 = call i1 @finch.gen.isFloat(%S.ast.Type %t227) - br label %logic.from5563 -logic.from5563: - br i1 %t228, label %logic.rhs5564, label %logic.end5565 -logic.rhs5564: + br label %logic.from5847 +logic.from5847: + br i1 %t228, label %logic.rhs5848, label %logic.end5849 +logic.rhs5848: %t229 = load ptr, ptr %a3 %t230 = icmp eq ptr %t229, null - br i1 %t230, label %panic5566, label %ok5567 -panic5566: - call void @finch_panic(ptr @.str.3612, i64 2976, ptr @.str.3613) + br i1 %t230, label %panic5850, label %ok5851 +panic5850: + call void @finch_panic(ptr @.str.3825, i64 3101, ptr @.str.3826) unreachable -ok5567: +ok5851: %t231 = getelementptr inbounds %S.gen.Val, ptr %t229, i32 0, i32 1 %t232 = load %S.ast.Type, ptr %t231 %t233 = call i1 @finch.gen.isFloat(%S.ast.Type %t232) - br label %logic.rend5568 -logic.rend5568: - br label %logic.end5565 -logic.end5565: - %t234 = phi i1 [ false, %logic.from5563 ], [ %t233, %logic.rend5568 ] - br i1 %t234, label %then5569, label %endif5571 -then5569: + br label %logic.rend5852 +logic.rend5852: + br label %logic.end5849 +logic.end5849: + %t234 = phi i1 [ false, %logic.from5847 ], [ %t233, %logic.rend5852 ] + br i1 %t234, label %then5853, label %endif5855 +then5853: %t235 = load ptr, ptr %a2 %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5572, label %ok5573 -panic5572: - call void @finch_panic(ptr @.str.3614, i64 2977, ptr @.str.3615) + br i1 %t236, label %panic5856, label %ok5857 +panic5856: + call void @finch_panic(ptr @.str.3827, i64 3102, ptr @.str.3828) unreachable -ok5573: +ok5857: %t237 = getelementptr inbounds %S.gen.Val, ptr %t235, i32 0, i32 1 %t238 = getelementptr inbounds %S.ast.Type, ptr %t237, i32 0, i32 0 %t239 = load { ptr, i64, i64 }, ptr %t238 store { ptr, i64, i64 } %t239, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.3616, i64 3, i64 0 }, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.3829, i64 3, i64 0 }, ptr %a241 %t242 = call i32 @finch_str_eq(ptr %a240, ptr %a241) %t243 = icmp ne i32 %t242, 0 - br i1 %t243, label %then5574, label %endif5576 -then5574: + br i1 %t243, label %then5858, label %endif5860 +then5858: %t244 = load ptr, ptr %a1 %t245 = load ptr, ptr %a2 %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic5577, label %ok5578 -panic5577: - call void @finch_panic(ptr @.str.3617, i64 2978, ptr @.str.3618) + br i1 %t246, label %panic5861, label %ok5862 +panic5861: + call void @finch_panic(ptr @.str.3830, i64 3103, ptr @.str.3831) unreachable -ok5578: +ok5862: %t247 = getelementptr inbounds %S.gen.Val, ptr %t245, i32 0, i32 0 %t248 = load { ptr, i64, i64 }, ptr %t247 %t249 = load ptr, ptr %a2 %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic5579, label %ok5580 -panic5579: - call void @finch_panic(ptr @.str.3619, i64 2978, ptr @.str.3620) + br i1 %t250, label %panic5863, label %ok5864 +panic5863: + call void @finch_panic(ptr @.str.3832, i64 3103, ptr @.str.3833) unreachable -ok5580: +ok5864: %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 %t252 = load %S.ast.Type, ptr %t251 - %t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3621, i64 5, i64 0 }) + %t253 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3834, i64 5, i64 0 }) %t254 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t244, { ptr, i64, i64 } %t248, %S.ast.Type %t252, %S.ast.Type %t253) %t255 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t254, 0 - %t256 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }) + %t256 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3835, i64 5, i64 0 }) %t257 = insertvalue %S.gen.Val %t255, %S.ast.Type %t256, 1 %t258 = load ptr, ptr %a2 %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic5581, label %ok5582 -panic5581: - call void @finch_panic(ptr @.str.3623, i64 2978, ptr @.str.3624) + br i1 %t259, label %panic5865, label %ok5866 +panic5865: + call void @finch_panic(ptr @.str.3836, i64 3103, ptr @.str.3837) unreachable -ok5582: +ok5866: store %S.gen.Val %t257, ptr %t258 - br label %endif5576 -endif5576: + br label %endif5860 +endif5860: %t260 = load ptr, ptr %a3 %t261 = icmp eq ptr %t260, null - br i1 %t261, label %panic5583, label %ok5584 -panic5583: - call void @finch_panic(ptr @.str.3625, i64 2980, ptr @.str.3626) + br i1 %t261, label %panic5867, label %ok5868 +panic5867: + call void @finch_panic(ptr @.str.3838, i64 3105, ptr @.str.3839) unreachable -ok5584: +ok5868: %t262 = getelementptr inbounds %S.gen.Val, ptr %t260, i32 0, i32 1 %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i32 0, i32 0 %t264 = load { ptr, i64, i64 }, ptr %t263 store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3627, i64 3, i64 0 }, ptr %a266 + store { ptr, i64, i64 } { ptr @.str.3840, i64 3, i64 0 }, ptr %a266 %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then5585, label %endif5587 -then5585: + br i1 %t268, label %then5869, label %endif5871 +then5869: %t269 = load ptr, ptr %a1 %t270 = load ptr, ptr %a3 %t271 = icmp eq ptr %t270, null - br i1 %t271, label %panic5588, label %ok5589 -panic5588: - call void @finch_panic(ptr @.str.3628, i64 2981, ptr @.str.3629) + br i1 %t271, label %panic5872, label %ok5873 +panic5872: + call void @finch_panic(ptr @.str.3841, i64 3106, ptr @.str.3842) unreachable -ok5589: +ok5873: %t272 = getelementptr inbounds %S.gen.Val, ptr %t270, i32 0, i32 0 %t273 = load { ptr, i64, i64 }, ptr %t272 %t274 = load ptr, ptr %a3 %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic5590, label %ok5591 -panic5590: - call void @finch_panic(ptr @.str.3630, i64 2981, ptr @.str.3631) + br i1 %t275, label %panic5874, label %ok5875 +panic5874: + call void @finch_panic(ptr @.str.3843, i64 3106, ptr @.str.3844) unreachable -ok5591: +ok5875: %t276 = getelementptr inbounds %S.gen.Val, ptr %t274, i32 0, i32 1 %t277 = load %S.ast.Type, ptr %t276 - %t278 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3632, i64 5, i64 0 }) + %t278 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3845, i64 5, i64 0 }) %t279 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t269, { ptr, i64, i64 } %t273, %S.ast.Type %t277, %S.ast.Type %t278) %t280 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t279, 0 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3633, i64 5, i64 0 }) + %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3846, i64 5, i64 0 }) %t282 = insertvalue %S.gen.Val %t280, %S.ast.Type %t281, 1 %t283 = load ptr, ptr %a3 %t284 = icmp eq ptr %t283, null - br i1 %t284, label %panic5592, label %ok5593 -panic5592: - call void @finch_panic(ptr @.str.3634, i64 2981, ptr @.str.3635) + br i1 %t284, label %panic5876, label %ok5877 +panic5876: + call void @finch_panic(ptr @.str.3847, i64 3106, ptr @.str.3848) unreachable -ok5593: +ok5877: store %S.gen.Val %t282, ptr %t283 - br label %endif5587 -endif5587: + br label %endif5871 +endif5871: ret i1 true -endif5571: +endif5855: ret i1 false } @@ -49024,54 +52830,54 @@ entry: store %S.ast.Node %p4, ptr %a11 %t12 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.3636, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3849, i64 1, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br label %logic.from5594 -logic.from5594: - br i1 %t16, label %logic.rhs5595, label %logic.end5596 -logic.rhs5595: + br label %logic.from5878 +logic.from5878: + br i1 %t16, label %logic.rhs5879, label %logic.end5880 +logic.rhs5879: %t17 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t18 = getelementptr inbounds %S.ast.Type, ptr %t17, i32 0, i32 0 %t19 = load { ptr, i64, i64 }, ptr %t18 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.3637, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.3850, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.rend5597 -logic.rend5597: - br label %logic.end5596 -logic.end5596: - %t24 = phi i1 [ false, %logic.from5594 ], [ %t23, %logic.rend5597 ] - br label %logic.from5598 -logic.from5598: - br i1 %t24, label %logic.rhs5599, label %logic.end5600 -logic.rhs5599: + br label %logic.rend5881 +logic.rend5881: + br label %logic.end5880 +logic.end5880: + %t24 = phi i1 [ false, %logic.from5878 ], [ %t23, %logic.rend5881 ] + br label %logic.from5882 +logic.from5882: + br i1 %t24, label %logic.rhs5883, label %logic.end5884 +logic.rhs5883: %t25 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t26 = getelementptr inbounds %S.ast.Type, ptr %t25, i32 0, i32 0 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3638, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.3851, i64 3, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br label %logic.rend5601 -logic.rend5601: - br label %logic.end5600 -logic.end5600: - %t32 = phi i1 [ false, %logic.from5598 ], [ %t31, %logic.rend5601 ] - br i1 %t32, label %then5602, label %endif5604 -then5602: + br label %logic.rend5885 +logic.rend5885: + br label %logic.end5884 +logic.end5884: + %t32 = phi i1 [ false, %logic.from5882 ], [ %t31, %logic.rend5885 ] + br i1 %t32, label %then5886, label %endif5888 +then5886: %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.3639, i64 17, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.3852, i64 17, i64 0 }) store { ptr, i64, i64 } %t34, ptr %a35 %t36 = load ptr, ptr %a1 %t37 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.3640, i64 32, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.3853, i64 32, i64 0 }, ptr %a39 store { ptr, i64, i64 } %t37, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.3641, i64 6, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.3854, i64 6, i64 0 }, ptr %a44 call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) %t45 = load { ptr, i64, i64 }, ptr %a42 %t46 = load ptr, ptr %a1 @@ -49082,7 +52888,7 @@ then5602: call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t52, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.3642, i64 6, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.3855, i64 6, i64 0 }, ptr %a55 call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 %t57 = load ptr, ptr %a1 @@ -49093,59 +52899,59 @@ then5602: call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.3643, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.3856, i64 1, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t67) %t68 = load ptr, ptr %a1 %t69 = load { ptr, i64, i64 }, ptr %a35 - %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.3644, i64 17, i64 0 }, { ptr, i64, i64 } %t69) + %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.3857, i64 17, i64 0 }, { ptr, i64, i64 } %t69) %t71 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t70, 0 - %t72 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3645, i64 3, i64 0 }) + %t72 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3858, i64 3, i64 0 }) %t73 = insertvalue %S.gen.Val %t71, %S.ast.Type %t72, 1 %t74 = insertvalue %S.gen.Val %t73, i1 true, 2 ret %S.gen.Val %t74 -endif5604: +endif5888: %t75 = load ptr, ptr %a1 %t76 = call i1 @finch.gen.unify(ptr %t75, ptr %a6, ptr %a10) %t77 = xor i1 %t76, true - br i1 %t77, label %then5605, label %endif5607 -then5605: + br i1 %t77, label %then5889, label %endif5891 +then5889: %t78 = load ptr, ptr %a1 %t79 = load { ptr, i64, i64 }, ptr %a2 %t80 = load %S.gen.Val, ptr %a6 %t81 = load %S.gen.Val, ptr %a10 %t82 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t78, { ptr, i64, i64 } %t79, %S.gen.Val %t80, %S.gen.Val %t81, %S.ast.Node %t82) - br label %endif5607 -endif5607: + br label %endif5891 +endif5891: %t83 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t84 = load %S.ast.Type, ptr %t83 %t85 = call i1 @finch.gen.isInt(%S.ast.Type %t84) - br i1 %t85, label %then5608, label %endif5610 -then5608: + br i1 %t85, label %then5892, label %endif5894 +then5892: %t86 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t87 = call ptr @finch_alloc(i64 %t86) %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 0 - store { ptr, i64, i64 } { ptr @.str.3646, i64 1, i64 0 }, ptr %t88 + store { ptr, i64, i64 } { ptr @.str.3859, i64 1, i64 0 }, ptr %t88 %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 1 - store { ptr, i64, i64 } { ptr @.str.3647, i64 1, i64 0 }, ptr %t89 + store { ptr, i64, i64 } { ptr @.str.3860, i64 1, i64 0 }, ptr %t89 %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 2 - store { ptr, i64, i64 } { ptr @.str.3648, i64 1, i64 0 }, ptr %t90 + store { ptr, i64, i64 } { ptr @.str.3861, i64 1, i64 0 }, ptr %t90 %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 3 - store { ptr, i64, i64 } { ptr @.str.3649, i64 1, i64 0 }, ptr %t91 + store { ptr, i64, i64 } { ptr @.str.3862, i64 1, i64 0 }, ptr %t91 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 4 - store { ptr, i64, i64 } { ptr @.str.3650, i64 1, i64 0 }, ptr %t92 + store { ptr, i64, i64 } { ptr @.str.3863, i64 1, i64 0 }, ptr %t92 %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 5 - store { ptr, i64, i64 } { ptr @.str.3651, i64 1, i64 0 }, ptr %t93 + store { ptr, i64, i64 } { ptr @.str.3864, i64 1, i64 0 }, ptr %t93 %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 6 - store { ptr, i64, i64 } { ptr @.str.3652, i64 1, i64 0 }, ptr %t94 + store { ptr, i64, i64 } { ptr @.str.3865, i64 1, i64 0 }, ptr %t94 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 7 - store { ptr, i64, i64 } { ptr @.str.3653, i64 1, i64 0 }, ptr %t95 + store { ptr, i64, i64 } { ptr @.str.3866, i64 1, i64 0 }, ptr %t95 %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 8 - store { ptr, i64, i64 } { ptr @.str.3654, i64 2, i64 0 }, ptr %t96 + store { ptr, i64, i64 } { ptr @.str.3867, i64 2, i64 0 }, ptr %t96 %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i64 9 - store { ptr, i64, i64 } { ptr @.str.3655, i64 2, i64 0 }, ptr %t97 + store { ptr, i64, i64 } { ptr @.str.3868, i64 2, i64 0 }, ptr %t97 %t98 = insertvalue { ptr, i64, i64 } undef, ptr %t87, 0 %t99 = insertvalue { ptr, i64, i64 } %t98, i64 10, 1 %t100 = insertvalue { ptr, i64, i64 } %t99, i64 10, 2 @@ -49153,25 +52959,25 @@ then5608: %t102 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t103 = call ptr @finch_alloc(i64 %t102) %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 - store { ptr, i64, i64 } { ptr @.str.3656, i64 3, i64 0 }, ptr %t104 + store { ptr, i64, i64 } { ptr @.str.3869, i64 3, i64 0 }, ptr %t104 %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 1 - store { ptr, i64, i64 } { ptr @.str.3657, i64 3, i64 0 }, ptr %t105 + store { ptr, i64, i64 } { ptr @.str.3870, i64 3, i64 0 }, ptr %t105 %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 2 - store { ptr, i64, i64 } { ptr @.str.3658, i64 3, i64 0 }, ptr %t106 + store { ptr, i64, i64 } { ptr @.str.3871, i64 3, i64 0 }, ptr %t106 %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 3 - store { ptr, i64, i64 } { ptr @.str.3659, i64 4, i64 0 }, ptr %t107 + store { ptr, i64, i64 } { ptr @.str.3872, i64 4, i64 0 }, ptr %t107 %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 4 - store { ptr, i64, i64 } { ptr @.str.3660, i64 4, i64 0 }, ptr %t108 + store { ptr, i64, i64 } { ptr @.str.3873, i64 4, i64 0 }, ptr %t108 %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 5 - store { ptr, i64, i64 } { ptr @.str.3661, i64 3, i64 0 }, ptr %t109 + store { ptr, i64, i64 } { ptr @.str.3874, i64 3, i64 0 }, ptr %t109 %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 6 - store { ptr, i64, i64 } { ptr @.str.3662, i64 2, i64 0 }, ptr %t110 + store { ptr, i64, i64 } { ptr @.str.3875, i64 2, i64 0 }, ptr %t110 %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 7 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %t111 + store { ptr, i64, i64 } { ptr @.str.3876, i64 3, i64 0 }, ptr %t111 %t112 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 8 - store { ptr, i64, i64 } { ptr @.str.3664, i64 3, i64 0 }, ptr %t112 + store { ptr, i64, i64 } { ptr @.str.3877, i64 3, i64 0 }, ptr %t112 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 9 - store { ptr, i64, i64 } { ptr @.str.3665, i64 4, i64 0 }, ptr %t113 + store { ptr, i64, i64 } { ptr @.str.3878, i64 4, i64 0 }, ptr %t113 %t114 = insertvalue { ptr, i64, i64 } undef, ptr %t103, 0 %t115 = insertvalue { ptr, i64, i64 } %t114, i64 10, 1 %t116 = insertvalue { ptr, i64, i64 } %t115, i64 10, 2 @@ -49179,77 +52985,77 @@ then5608: %t118 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t119 = load %S.ast.Type, ptr %t118 %t120 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t119) - br i1 %t120, label %then5611, label %endif5613 -then5611: + br i1 %t120, label %then5895, label %endif5897 +then5895: %t121 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t122 = call ptr @finch_alloc(i64 %t121) %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 0 - store { ptr, i64, i64 } { ptr @.str.3666, i64 3, i64 0 }, ptr %t123 + store { ptr, i64, i64 } { ptr @.str.3879, i64 3, i64 0 }, ptr %t123 %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 1 - store { ptr, i64, i64 } { ptr @.str.3667, i64 3, i64 0 }, ptr %t124 + store { ptr, i64, i64 } { ptr @.str.3880, i64 3, i64 0 }, ptr %t124 %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 2 - store { ptr, i64, i64 } { ptr @.str.3668, i64 3, i64 0 }, ptr %t125 + store { ptr, i64, i64 } { ptr @.str.3881, i64 3, i64 0 }, ptr %t125 %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 3 - store { ptr, i64, i64 } { ptr @.str.3669, i64 4, i64 0 }, ptr %t126 + store { ptr, i64, i64 } { ptr @.str.3882, i64 4, i64 0 }, ptr %t126 %t127 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 4 - store { ptr, i64, i64 } { ptr @.str.3670, i64 4, i64 0 }, ptr %t127 + store { ptr, i64, i64 } { ptr @.str.3883, i64 4, i64 0 }, ptr %t127 %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 5 - store { ptr, i64, i64 } { ptr @.str.3671, i64 3, i64 0 }, ptr %t128 + store { ptr, i64, i64 } { ptr @.str.3884, i64 3, i64 0 }, ptr %t128 %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 6 - store { ptr, i64, i64 } { ptr @.str.3672, i64 2, i64 0 }, ptr %t129 + store { ptr, i64, i64 } { ptr @.str.3885, i64 2, i64 0 }, ptr %t129 %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 7 - store { ptr, i64, i64 } { ptr @.str.3673, i64 3, i64 0 }, ptr %t130 + store { ptr, i64, i64 } { ptr @.str.3886, i64 3, i64 0 }, ptr %t130 %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 8 - store { ptr, i64, i64 } { ptr @.str.3674, i64 3, i64 0 }, ptr %t131 + store { ptr, i64, i64 } { ptr @.str.3887, i64 3, i64 0 }, ptr %t131 %t132 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 9 - store { ptr, i64, i64 } { ptr @.str.3675, i64 4, i64 0 }, ptr %t132 + store { ptr, i64, i64 } { ptr @.str.3888, i64 4, i64 0 }, ptr %t132 %t133 = insertvalue { ptr, i64, i64 } undef, ptr %t122, 0 %t134 = insertvalue { ptr, i64, i64 } %t133, i64 10, 1 %t135 = insertvalue { ptr, i64, i64 } %t134, i64 10, 2 store { ptr, i64, i64 } %t135, ptr %a117 - br label %endif5613 -endif5613: + br label %endif5897 +endif5897: %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %a101, i32 0, i32 1 %t137 = load { ptr, i64, i64 }, ptr %a2 store i64 -1, ptr %a138 %t139 = load i64, ptr %t136 %t140 = load ptr, ptr %a101 store i64 0, ptr %a141 - br label %find.cond5614 -find.cond5614: + br label %find.cond5898 +find.cond5898: %t142 = load i64, ptr %a141 %t143 = icmp slt i64 %t142, %t139 - br i1 %t143, label %find.body5615, label %find.end5618 -find.body5615: + br i1 %t143, label %find.body5899, label %find.end5902 +find.body5899: %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t140, i64 %t142 %t145 = load { ptr, i64, i64 }, ptr %t144 store { ptr, i64, i64 } %t145, ptr %a146 store { ptr, i64, i64 } %t137, ptr %a147 %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %find.hit5616, label %find.next5617 -find.hit5616: + br i1 %t149, label %find.hit5900, label %find.next5901 +find.hit5900: store i64 %t142, ptr %a138 - br label %find.end5618 -find.next5617: + br label %find.end5902 +find.next5901: %t150 = add i64 %t142, 1 store i64 %t150, ptr %a141 - br label %find.cond5614 -find.end5618: + br label %find.cond5898 +find.end5902: %t151 = load i64, ptr %a138 store i64 %t151, ptr %a152 %t153 = load i64, ptr %a152 %t154 = icmp slt i64 %t153, 0 - br i1 %t154, label %then5619, label %endif5621 -then5619: + br i1 %t154, label %then5903, label %endif5905 +then5903: %t155 = load ptr, ptr %a1 %t156 = load { ptr, i64, i64 }, ptr %a2 %t157 = load %S.gen.Val, ptr %a6 %t158 = load %S.gen.Val, ptr %a10 %t159 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t155, { ptr, i64, i64 } %t156, %S.gen.Val %t157, %S.gen.Val %t158, %S.ast.Node %t159) - br label %endif5621 -endif5621: + br label %endif5905 +endif5905: %t160 = load ptr, ptr %a1 %t161 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t162 = load %S.ast.Type, ptr %t161 @@ -49257,63 +53063,63 @@ endif5621: store { ptr, i64, i64 } %t163, ptr %a164 %t165 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3676, i64 1, i64 0 }, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.3889, i64 1, i64 0 }, ptr %a167 %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) %t169 = icmp ne i32 %t168, 0 - br label %logic.from5622 -logic.from5622: - br i1 %t169, label %logic.end5624, label %logic.rhs5623 -logic.rhs5623: + br label %logic.from5906 +logic.from5906: + br i1 %t169, label %logic.end5908, label %logic.rhs5907 +logic.rhs5907: %t170 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.3677, i64 1, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.3890, i64 1, i64 0 }, ptr %a172 %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) %t174 = icmp ne i32 %t173, 0 - br label %logic.rend5625 -logic.rend5625: - br label %logic.end5624 -logic.end5624: - %t175 = phi i1 [ true, %logic.from5622 ], [ %t174, %logic.rend5625 ] - br i1 %t175, label %then5626, label %endif5628 -then5626: + br label %logic.rend5909 +logic.rend5909: + br label %logic.end5908 +logic.end5908: + %t175 = phi i1 [ true, %logic.from5906 ], [ %t174, %logic.rend5909 ] + br i1 %t175, label %then5910, label %endif5912 +then5910: %t176 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 %t177 = load i1, ptr %t176 - br label %logic.from5629 -logic.from5629: - br i1 %t177, label %logic.rhs5630, label %logic.end5631 -logic.rhs5630: + br label %logic.from5913 +logic.from5913: + br i1 %t177, label %logic.rhs5914, label %logic.end5915 +logic.rhs5914: %t178 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3678, i64 1, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.3891, i64 1, i64 0 }, ptr %a181 %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) %t183 = icmp ne i32 %t182, 0 - br label %logic.rend5632 -logic.rend5632: - br label %logic.end5631 -logic.end5631: - %t184 = phi i1 [ false, %logic.from5629 ], [ %t183, %logic.rend5632 ] - br i1 %t184, label %then5633, label %endif5635 -then5633: + br label %logic.rend5916 +logic.rend5916: + br label %logic.end5915 +logic.end5915: + %t184 = phi i1 [ false, %logic.from5913 ], [ %t183, %logic.rend5916 ] + br i1 %t184, label %then5917, label %endif5919 +then5917: %t185 = load ptr, ptr %a1 %t186 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t185, %S.ast.Node %t186, { ptr, i64, i64 } { ptr @.str.3679, i64 16, i64 0 }) - br label %endif5635 -endif5635: + call void @finch.gen.fail(ptr %t185, %S.ast.Node %t186, { ptr, i64, i64 } { ptr @.str.3892, i64 16, i64 0 }) + br label %endif5919 +endif5919: %t187 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 %t188 = load i1, ptr %t187 %t189 = xor i1 %t188, true - br i1 %t189, label %then5636, label %endif5638 -then5636: + br i1 %t189, label %then5920, label %endif5922 +then5920: %t190 = load ptr, ptr %a1 %t191 = load ptr, ptr %a1 %t192 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3680, i64 8, i64 0 }, ptr %a194 + store { ptr, i64, i64 } { ptr @.str.3893, i64 8, i64 0 }, ptr %a194 store { ptr, i64, i64 } %t192, ptr %a195 call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) %t196 = load { ptr, i64, i64 }, ptr %a193 store { ptr, i64, i64 } %t196, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.3681, i64 1, i64 0 }, ptr %a199 + store { ptr, i64, i64 } { ptr @.str.3894, i64 1, i64 0 }, ptr %a199 call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) %t200 = load { ptr, i64, i64 }, ptr %a197 %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -49323,31 +53129,31 @@ then5636: call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.3895, i64 3, i64 0 }, ptr %a209 call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) %t210 = load { ptr, i64, i64 }, ptr %a207 %t211 = call { ptr, i64, i64 } @finch.gen.op(ptr %t191, { ptr, i64, i64 } %t210) %t212 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t190, { ptr, i64, i64 } %t211, { ptr, i64, i64 } { ptr @.str.3683, i64 16, i64 0 }, %S.ast.Node %t212) - br label %endif5638 -endif5638: - br label %endif5628 -endif5628: + call void @finch.gen.panicIf(ptr %t190, { ptr, i64, i64 } %t211, { ptr, i64, i64 } { ptr @.str.3896, i64 16, i64 0 }, %S.ast.Node %t212) + br label %endif5922 +endif5922: + br label %endif5912 +endif5912: %t213 = load ptr, ptr %a1 %t214 = load i64, ptr %a152 %t215 = load { ptr, i64, i64 }, ptr %a117 %t216 = extractvalue { ptr, i64, i64 } %t215, 1 %t217 = icmp uge i64 %t214, %t216 - br i1 %t217, label %range5639, label %inrange5640 -range5639: - call void @finch_panic_index(ptr @.str.3684, i64 3020, i64 %t214, i64 %t216) + br i1 %t217, label %range5923, label %inrange5924 +range5923: + call void @finch_panic_index(ptr @.str.3897, i64 3145, i64 %t214, i64 %t216) unreachable -inrange5640: +inrange5924: %t218 = extractvalue { ptr, i64, i64 } %t215, 0 %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t214 %t220 = load { ptr, i64, i64 }, ptr %t219 store { ptr, i64, i64 } %t220, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.3685, i64 1, i64 0 }, ptr %a223 + store { ptr, i64, i64 } { ptr @.str.3898, i64 1, i64 0 }, ptr %a223 call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) %t224 = load { ptr, i64, i64 }, ptr %a221 %t225 = load { ptr, i64, i64 }, ptr %a164 @@ -49356,7 +53162,7 @@ inrange5640: call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) %t229 = load { ptr, i64, i64 }, ptr %a226 store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.3686, i64 1, i64 0 }, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.3899, i64 1, i64 0 }, ptr %a232 call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) %t233 = load { ptr, i64, i64 }, ptr %a230 %t234 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -49366,7 +53172,7 @@ inrange5640: call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) %t239 = load { ptr, i64, i64 }, ptr %a236 store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3687, i64 2, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.3900, i64 2, i64 0 }, ptr %a242 call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) %t243 = load { ptr, i64, i64 }, ptr %a240 %t244 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -49384,24 +53190,24 @@ inrange5640: %t256 = load %S.ast.Type, ptr %a255 %t257 = insertvalue %S.gen.Val %t251, %S.ast.Type %t256, 1 ret %S.gen.Val %t257 -endif5610: +endif5894: %t258 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t259 = load %S.ast.Type, ptr %t258 %t260 = call i1 @finch.gen.isFloat(%S.ast.Type %t259) - br i1 %t260, label %then5641, label %endif5643 -then5641: + br i1 %t260, label %then5925, label %endif5927 +then5925: %t261 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t262 = call ptr @finch_alloc(i64 %t261) %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 0 - store { ptr, i64, i64 } { ptr @.str.3688, i64 1, i64 0 }, ptr %t263 + store { ptr, i64, i64 } { ptr @.str.3901, i64 1, i64 0 }, ptr %t263 %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 1 - store { ptr, i64, i64 } { ptr @.str.3689, i64 1, i64 0 }, ptr %t264 + store { ptr, i64, i64 } { ptr @.str.3902, i64 1, i64 0 }, ptr %t264 %t265 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 2 - store { ptr, i64, i64 } { ptr @.str.3690, i64 1, i64 0 }, ptr %t265 + store { ptr, i64, i64 } { ptr @.str.3903, i64 1, i64 0 }, ptr %t265 %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 3 - store { ptr, i64, i64 } { ptr @.str.3691, i64 1, i64 0 }, ptr %t266 + store { ptr, i64, i64 } { ptr @.str.3904, i64 1, i64 0 }, ptr %t266 %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 4 - store { ptr, i64, i64 } { ptr @.str.3692, i64 1, i64 0 }, ptr %t267 + store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %t267 %t268 = insertvalue { ptr, i64, i64 } undef, ptr %t262, 0 %t269 = insertvalue { ptr, i64, i64 } %t268, i64 5, 1 %t270 = insertvalue { ptr, i64, i64 } %t269, i64 5, 2 @@ -49409,15 +53215,15 @@ then5641: %t272 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t273 = call ptr @finch_alloc(i64 %t272) %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - store { ptr, i64, i64 } { ptr @.str.3693, i64 4, i64 0 }, ptr %t274 + store { ptr, i64, i64 } { ptr @.str.3906, i64 4, i64 0 }, ptr %t274 %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 1 - store { ptr, i64, i64 } { ptr @.str.3694, i64 4, i64 0 }, ptr %t275 + store { ptr, i64, i64 } { ptr @.str.3907, i64 4, i64 0 }, ptr %t275 %t276 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 2 - store { ptr, i64, i64 } { ptr @.str.3695, i64 4, i64 0 }, ptr %t276 + store { ptr, i64, i64 } { ptr @.str.3908, i64 4, i64 0 }, ptr %t276 %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 3 - store { ptr, i64, i64 } { ptr @.str.3696, i64 4, i64 0 }, ptr %t277 + store { ptr, i64, i64 } { ptr @.str.3909, i64 4, i64 0 }, ptr %t277 %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 4 - store { ptr, i64, i64 } { ptr @.str.3697, i64 4, i64 0 }, ptr %t278 + store { ptr, i64, i64 } { ptr @.str.3910, i64 4, i64 0 }, ptr %t278 %t279 = insertvalue { ptr, i64, i64 } undef, ptr %t273, 0 %t280 = insertvalue { ptr, i64, i64 } %t279, i64 5, 1 %t281 = insertvalue { ptr, i64, i64 } %t280, i64 5, 2 @@ -49428,56 +53234,56 @@ then5641: %t286 = load i64, ptr %t283 %t287 = load ptr, ptr %a271 store i64 0, ptr %a288 - br label %find.cond5644 -find.cond5644: + br label %find.cond5928 +find.cond5928: %t289 = load i64, ptr %a288 %t290 = icmp slt i64 %t289, %t286 - br i1 %t290, label %find.body5645, label %find.end5648 -find.body5645: + br i1 %t290, label %find.body5929, label %find.end5932 +find.body5929: %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t289 %t292 = load { ptr, i64, i64 }, ptr %t291 store { ptr, i64, i64 } %t292, ptr %a293 store { ptr, i64, i64 } %t284, ptr %a294 %t295 = call i32 @finch_str_eq(ptr %a293, ptr %a294) %t296 = icmp ne i32 %t295, 0 - br i1 %t296, label %find.hit5646, label %find.next5647 -find.hit5646: + br i1 %t296, label %find.hit5930, label %find.next5931 +find.hit5930: store i64 %t289, ptr %a285 - br label %find.end5648 -find.next5647: + br label %find.end5932 +find.next5931: %t297 = add i64 %t289, 1 store i64 %t297, ptr %a288 - br label %find.cond5644 -find.end5648: + br label %find.cond5928 +find.end5932: %t298 = load i64, ptr %a285 store i64 %t298, ptr %a299 %t300 = load i64, ptr %a299 %t301 = icmp slt i64 %t300, 0 - br i1 %t301, label %then5649, label %endif5651 -then5649: + br i1 %t301, label %then5933, label %endif5935 +then5933: %t302 = load ptr, ptr %a1 %t303 = load { ptr, i64, i64 }, ptr %a2 %t304 = load %S.gen.Val, ptr %a6 %t305 = load %S.gen.Val, ptr %a10 %t306 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t302, { ptr, i64, i64 } %t303, %S.gen.Val %t304, %S.gen.Val %t305, %S.ast.Node %t306) - br label %endif5651 -endif5651: + br label %endif5935 +endif5935: %t307 = load ptr, ptr %a1 %t308 = load i64, ptr %a299 %t309 = load { ptr, i64, i64 }, ptr %a282 %t310 = extractvalue { ptr, i64, i64 } %t309, 1 %t311 = icmp uge i64 %t308, %t310 - br i1 %t311, label %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3698, i64 3029, i64 %t308, i64 %t310) + br i1 %t311, label %range5936, label %inrange5937 +range5936: + call void @finch_panic_index(ptr @.str.3911, i64 3154, i64 %t308, i64 %t310) unreachable -inrange5653: +inrange5937: %t312 = extractvalue { ptr, i64, i64 } %t309, 0 %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t308 %t314 = load { ptr, i64, i64 }, ptr %t313 store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.3912, i64 1, i64 0 }, ptr %a317 call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) %t318 = load { ptr, i64, i64 }, ptr %a315 %t319 = load ptr, ptr %a1 @@ -49489,7 +53295,7 @@ inrange5653: call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) %t326 = load { ptr, i64, i64 }, ptr %a323 store { ptr, i64, i64 } %t326, ptr %a328 - store { ptr, i64, i64 } { ptr @.str.3700, i64 1, i64 0 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.3913, i64 1, i64 0 }, ptr %a329 call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) %t330 = load { ptr, i64, i64 }, ptr %a327 %t331 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -49499,7 +53305,7 @@ inrange5653: call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) %t336 = load { ptr, i64, i64 }, ptr %a333 store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.3701, i64 2, i64 0 }, ptr %a339 + store { ptr, i64, i64 } { ptr @.str.3914, i64 2, i64 0 }, ptr %a339 call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) %t340 = load { ptr, i64, i64 }, ptr %a337 %t341 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -49517,7 +53323,7 @@ inrange5653: %t353 = load %S.ast.Type, ptr %a352 %t354 = insertvalue %S.gen.Val %t348, %S.ast.Type %t353, 1 ret %S.gen.Val %t354 -endif5643: +endif5927: %t355 = load ptr, ptr %a1 %t356 = load { ptr, i64, i64 }, ptr %a2 %t357 = load %S.gen.Val, ptr %a6 @@ -49724,142 +53530,142 @@ entry: store %S.ast.Node %p4, ptr %a11 %t12 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.3702, i64 2, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.3915, i64 2, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br label %logic.from5654 -logic.from5654: - br i1 %t16, label %logic.end5656, label %logic.rhs5655 -logic.rhs5655: + br label %logic.from5938 +logic.from5938: + br i1 %t16, label %logic.end5940, label %logic.rhs5939 +logic.rhs5939: %t17 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3703, i64 2, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.3916, i64 2, i64 0 }, ptr %a19 %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) %t21 = icmp ne i32 %t20, 0 - br label %logic.rend5657 -logic.rend5657: - br label %logic.end5656 -logic.end5656: - %t22 = phi i1 [ true, %logic.from5654 ], [ %t21, %logic.rend5657 ] + br label %logic.rend5941 +logic.rend5941: + br label %logic.end5940 +logic.end5940: + %t22 = phi i1 [ true, %logic.from5938 ], [ %t21, %logic.rend5941 ] store i1 %t22, ptr %a23 %t24 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t25 = getelementptr inbounds %S.ast.Type, ptr %t24, i32 0, i32 0 %t26 = load { ptr, i64, i64 }, ptr %t25 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3704, i64 3, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.3917, i64 3, i64 0 }, ptr %a28 %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) %t30 = icmp ne i32 %t29, 0 - br label %logic.from5658 -logic.from5658: - br i1 %t30, label %logic.end5660, label %logic.rhs5659 -logic.rhs5659: + br label %logic.from5942 +logic.from5942: + br i1 %t30, label %logic.end5944, label %logic.rhs5943 +logic.rhs5943: %t31 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i32 0, i32 0 %t33 = load { ptr, i64, i64 }, ptr %t32 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3705, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.3918, i64 3, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br label %logic.rend5661 -logic.rend5661: - br label %logic.end5660 -logic.end5660: - %t38 = phi i1 [ true, %logic.from5658 ], [ %t37, %logic.rend5661 ] - br label %logic.from5662 -logic.from5662: - br i1 %t38, label %logic.end5664, label %logic.rhs5663 -logic.rhs5663: + br label %logic.rend5945 +logic.rend5945: + br label %logic.end5944 +logic.end5944: + %t38 = phi i1 [ true, %logic.from5942 ], [ %t37, %logic.rend5945 ] + br label %logic.from5946 +logic.from5946: + br i1 %t38, label %logic.end5948, label %logic.rhs5947 +logic.rhs5947: %t39 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t40 = getelementptr inbounds %S.ast.Type, ptr %t39, i32 0, i32 0 %t41 = load { ptr, i64, i64 }, ptr %t40 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.3706, i64 4, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.3919, i64 4, i64 0 }, ptr %a43 %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) %t45 = icmp ne i32 %t44, 0 - br label %logic.rend5665 -logic.rend5665: - br label %logic.end5664 -logic.end5664: - %t46 = phi i1 [ true, %logic.from5662 ], [ %t45, %logic.rend5665 ] - br label %logic.from5666 -logic.from5666: - br i1 %t46, label %logic.end5668, label %logic.rhs5667 -logic.rhs5667: + br label %logic.rend5949 +logic.rend5949: + br label %logic.end5948 +logic.end5948: + %t46 = phi i1 [ true, %logic.from5946 ], [ %t45, %logic.rend5949 ] + br label %logic.from5950 +logic.from5950: + br i1 %t46, label %logic.end5952, label %logic.rhs5951 +logic.rhs5951: %t47 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t48 = getelementptr inbounds %S.ast.Type, ptr %t47, i32 0, i32 0 %t49 = load { ptr, i64, i64 }, ptr %t48 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3707, i64 4, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.3920, i64 4, i64 0 }, ptr %a51 %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) %t53 = icmp ne i32 %t52, 0 - br label %logic.rend5669 -logic.rend5669: - br label %logic.end5668 -logic.end5668: - %t54 = phi i1 [ true, %logic.from5666 ], [ %t53, %logic.rend5669 ] - br i1 %t54, label %then5670, label %endif5672 -then5670: + br label %logic.rend5953 +logic.rend5953: + br label %logic.end5952 +logic.end5952: + %t54 = phi i1 [ true, %logic.from5950 ], [ %t53, %logic.rend5953 ] + br i1 %t54, label %then5954, label %endif5956 +then5954: %t55 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t56 = getelementptr inbounds %S.ast.Type, ptr %t55, i32 0, i32 0 %t57 = load { ptr, i64, i64 }, ptr %t56 store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.3708, i64 3, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.3921, i64 3, i64 0 }, ptr %a59 %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) %t61 = icmp ne i32 %t60, 0 - br label %logic.from5673 -logic.from5673: - br i1 %t61, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: + br label %logic.from5957 +logic.from5957: + br i1 %t61, label %logic.end5959, label %logic.rhs5958 +logic.rhs5958: %t62 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t63 = getelementptr inbounds %S.ast.Type, ptr %t62, i32 0, i32 0 %t64 = load { ptr, i64, i64 }, ptr %t63 store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.3709, i64 3, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.3922, i64 3, i64 0 }, ptr %a66 %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) %t68 = icmp ne i32 %t67, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t69 = phi i1 [ true, %logic.from5673 ], [ %t68, %logic.rend5676 ] - br i1 %t69, label %then5677, label %endif5679 -then5677: + br label %logic.rend5960 +logic.rend5960: + br label %logic.end5959 +logic.end5959: + %t69 = phi i1 [ true, %logic.from5957 ], [ %t68, %logic.rend5960 ] + br i1 %t69, label %then5961, label %endif5963 +then5961: %t70 = load ptr, ptr %a1 %t71 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } { ptr @.str.3710, i64 59, i64 0 }) - br label %endif5679 -endif5679: + call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } { ptr @.str.3923, i64 59, i64 0 }) + br label %endif5963 +endif5963: %t72 = load i1, ptr %a23 %t73 = xor i1 %t72, true - br i1 %t73, label %then5680, label %endif5682 -then5680: + br i1 %t73, label %then5964, label %endif5966 +then5964: %t74 = load ptr, ptr %a1 %t75 = load { ptr, i64, i64 }, ptr %a2 %t76 = load %S.gen.Val, ptr %a6 %t77 = load %S.gen.Val, ptr %a10 %t78 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t74, { ptr, i64, i64 } %t75, %S.gen.Val %t76, %S.gen.Val %t77, %S.ast.Node %t78) - br label %endif5682 -endif5682: - store { ptr, i64, i64 } { ptr @.str.3711, i64 2, i64 0 }, ptr %a79 + br label %endif5966 +endif5966: + store { ptr, i64, i64 } { ptr @.str.3924, i64 2, i64 0 }, ptr %a79 %t80 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3712, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.3925, i64 2, i64 0 }, ptr %a82 %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5683, label %endif5685 -then5683: - store { ptr, i64, i64 } { ptr @.str.3713, i64 2, i64 0 }, ptr %a79 - br label %endif5685 -endif5685: + br i1 %t84, label %then5967, label %endif5969 +then5967: + store { ptr, i64, i64 } { ptr @.str.3926, i64 2, i64 0 }, ptr %a79 + br label %endif5969 +endif5969: %t85 = load ptr, ptr %a1 %t86 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.3714, i64 5, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.3927, i64 5, i64 0 }, ptr %a88 store { ptr, i64, i64 } %t86, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.3715, i64 5, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.3928, i64 5, i64 0 }, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -49869,7 +53675,7 @@ endif5685: call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.3716, i64 2, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.3929, i64 2, i64 0 }, ptr %a103 call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) %t104 = load { ptr, i64, i64 }, ptr %a101 %t105 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -49880,48 +53686,48 @@ endif5685: %t110 = load { ptr, i64, i64 }, ptr %a107 %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t110) %t112 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t111, 0 - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3717, i64 4, i64 0 }) + %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3930, i64 4, i64 0 }) %t114 = insertvalue %S.gen.Val %t112, %S.ast.Type %t113, 1 ret %S.gen.Val %t114 -endif5672: +endif5956: %t115 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 %t117 = load { ptr, i64, i64 }, ptr %t116 store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3718, i64 3, i64 0 }, ptr %a119 + store { ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }, ptr %a119 %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) %t121 = icmp ne i32 %t120, 0 - br label %logic.from5686 -logic.from5686: - br i1 %t121, label %logic.rhs5687, label %logic.end5688 -logic.rhs5687: + br label %logic.from5970 +logic.from5970: + br i1 %t121, label %logic.rhs5971, label %logic.end5972 +logic.rhs5971: %t122 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 %t124 = load { ptr, i64, i64 }, ptr %t123 store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.3932, i64 3, i64 0 }, ptr %a126 %t127 = call i32 @finch_str_eq(ptr %a125, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br label %logic.rend5689 -logic.rend5689: - br label %logic.end5688 -logic.end5688: - %t129 = phi i1 [ false, %logic.from5686 ], [ %t128, %logic.rend5689 ] - br i1 %t129, label %then5690, label %endif5692 -then5690: + br label %logic.rend5973 +logic.rend5973: + br label %logic.end5972 +logic.end5972: + %t129 = phi i1 [ false, %logic.from5970 ], [ %t128, %logic.rend5973 ] + br i1 %t129, label %then5974, label %endif5976 +then5974: %t130 = load i1, ptr %a23 - br i1 %t130, label %then5693, label %endif5695 -then5693: + br i1 %t130, label %then5977, label %endif5979 +then5977: %t131 = load ptr, ptr %a1 %t132 = load ptr, ptr %a1 %t133 = load %S.gen.Val, ptr %a6 %t134 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t132, %S.gen.Val %t133) - store { ptr, i64, i64 } { ptr @.str.3720, i64 27, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.3933, i64 27, i64 0 }, ptr %a136 store { ptr, i64, i64 } %t134, ptr %a137 call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) %t138 = load { ptr, i64, i64 }, ptr %a135 store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.3934, i64 6, i64 0 }, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 %t143 = load ptr, ptr %a1 @@ -49932,30 +53738,30 @@ then5693: call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) %t149 = load { ptr, i64, i64 }, ptr %a146 store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.3722, i64 1, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.3935, i64 1, i64 0 }, ptr %a152 call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) %t153 = load { ptr, i64, i64 }, ptr %a150 %t154 = call { ptr, i64, i64 } @finch.gen.op(ptr %t131, { ptr, i64, i64 } %t153) store { ptr, i64, i64 } %t154, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3723, i64 2, i64 0 }, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.3936, i64 2, i64 0 }, ptr %a156 %t157 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.3724, i64 2, i64 0 }, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.3937, i64 2, i64 0 }, ptr %a159 %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) %t161 = icmp ne i32 %t160, 0 - br i1 %t161, label %then5696, label %endif5698 -then5696: - store { ptr, i64, i64 } { ptr @.str.3725, i64 2, i64 0 }, ptr %a156 - br label %endif5698 -endif5698: + br i1 %t161, label %then5980, label %endif5982 +then5980: + store { ptr, i64, i64 } { ptr @.str.3938, i64 2, i64 0 }, ptr %a156 + br label %endif5982 +endif5982: %t162 = load ptr, ptr %a1 %t163 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.3726, i64 5, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.3939, i64 5, i64 0 }, ptr %a165 store { ptr, i64, i64 } %t163, ptr %a166 call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) %t167 = load { ptr, i64, i64 }, ptr %a164 store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3727, i64 5, i64 0 }, ptr %a170 + store { ptr, i64, i64 } { ptr @.str.3940, i64 5, i64 0 }, ptr %a170 call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) %t171 = load { ptr, i64, i64 }, ptr %a168 %t172 = load { ptr, i64, i64 }, ptr %a155 @@ -49964,25 +53770,25 @@ endif5698: call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) %t176 = load { ptr, i64, i64 }, ptr %a173 store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a179 call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) %t180 = load { ptr, i64, i64 }, ptr %a177 %t181 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t180) %t182 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t181, 0 - %t183 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3729, i64 4, i64 0 }) + %t183 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3942, i64 4, i64 0 }) %t184 = insertvalue %S.gen.Val %t182, %S.ast.Type %t183, 1 ret %S.gen.Val %t184 -endif5695: +endif5979: %t185 = load ptr, ptr %a1 %t186 = load ptr, ptr %a1 %t187 = load %S.gen.Val, ptr %a6 %t188 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t186, %S.gen.Val %t187) - store { ptr, i64, i64 } { ptr @.str.3730, i64 28, i64 0 }, ptr %a190 + store { ptr, i64, i64 } { ptr @.str.3943, i64 28, i64 0 }, ptr %a190 store { ptr, i64, i64 } %t188, ptr %a191 call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.3944, i64 6, i64 0 }, ptr %a195 call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) %t196 = load { ptr, i64, i64 }, ptr %a193 %t197 = load ptr, ptr %a1 @@ -49993,7 +53799,7 @@ endif5695: call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.3732, i64 1, i64 0 }, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.3945, i64 1, i64 0 }, ptr %a206 call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t185, { ptr, i64, i64 } %t207) @@ -50001,12 +53807,12 @@ endif5695: %t210 = load ptr, ptr %a1 %t211 = load { ptr, i64, i64 }, ptr %a2 %t212 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t211, i1 true) - store { ptr, i64, i64 } { ptr @.str.3733, i64 5, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.3946, i64 5, i64 0 }, ptr %a214 store { ptr, i64, i64 } %t212, ptr %a215 call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) %t216 = load { ptr, i64, i64 }, ptr %a213 store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.3734, i64 5, i64 0 }, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.3947, i64 5, i64 0 }, ptr %a219 call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 %t221 = load { ptr, i64, i64 }, ptr %a209 @@ -50015,28 +53821,28 @@ endif5695: call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) %t225 = load { ptr, i64, i64 }, ptr %a222 store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.3948, i64 3, i64 0 }, ptr %a228 call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) %t229 = load { ptr, i64, i64 }, ptr %a226 %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t229) %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t230, 0 - %t232 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3736, i64 4, i64 0 }) + %t232 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3949, i64 4, i64 0 }) %t233 = insertvalue %S.gen.Val %t231, %S.ast.Type %t232, 1 ret %S.gen.Val %t233 -endif5692: +endif5976: %t234 = load ptr, ptr %a1 %t235 = call i1 @finch.gen.unify(ptr %t234, ptr %a6, ptr %a10) %t236 = xor i1 %t235, true - br i1 %t236, label %then5699, label %endif5701 -then5699: + br i1 %t236, label %then5983, label %endif5985 +then5983: %t237 = load ptr, ptr %a1 %t238 = load { ptr, i64, i64 }, ptr %a2 %t239 = load %S.gen.Val, ptr %a6 %t240 = load %S.gen.Val, ptr %a10 %t241 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t237, { ptr, i64, i64 } %t238, %S.gen.Val %t239, %S.gen.Val %t240, %S.ast.Node %t241) - br label %endif5701 -endif5701: + br label %endif5985 +endif5985: %t242 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t243 = getelementptr inbounds %S.ast.Type, ptr %t242, i32 0, i32 0 %t244 = load { ptr, i64, i64 }, ptr %t243 @@ -50047,22 +53853,22 @@ endif5701: %t249 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t250 = load %S.ast.Type, ptr %t249 %t251 = call i1 @finch.gen.isFloat(%S.ast.Type %t250) - br i1 %t251, label %then5702, label %endif5704 -then5702: + br i1 %t251, label %then5986, label %endif5988 +then5986: %t252 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t253 = call ptr @finch_alloc(i64 %t252) %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 0 - store { ptr, i64, i64 } { ptr @.str.3737, i64 2, i64 0 }, ptr %t254 + store { ptr, i64, i64 } { ptr @.str.3950, i64 2, i64 0 }, ptr %t254 %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 1 - store { ptr, i64, i64 } { ptr @.str.3738, i64 2, i64 0 }, ptr %t255 + store { ptr, i64, i64 } { ptr @.str.3951, i64 2, i64 0 }, ptr %t255 %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 2 - store { ptr, i64, i64 } { ptr @.str.3739, i64 1, i64 0 }, ptr %t256 + store { ptr, i64, i64 } { ptr @.str.3952, i64 1, i64 0 }, ptr %t256 %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 3 - store { ptr, i64, i64 } { ptr @.str.3740, i64 2, i64 0 }, ptr %t257 + store { ptr, i64, i64 } { ptr @.str.3953, i64 2, i64 0 }, ptr %t257 %t258 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 4 - store { ptr, i64, i64 } { ptr @.str.3741, i64 1, i64 0 }, ptr %t258 + store { ptr, i64, i64 } { ptr @.str.3954, i64 1, i64 0 }, ptr %t258 %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i64 5 - store { ptr, i64, i64 } { ptr @.str.3742, i64 2, i64 0 }, ptr %t259 + store { ptr, i64, i64 } { ptr @.str.3955, i64 2, i64 0 }, ptr %t259 %t260 = insertvalue { ptr, i64, i64 } undef, ptr %t253, 0 %t261 = insertvalue { ptr, i64, i64 } %t260, i64 6, 1 %t262 = insertvalue { ptr, i64, i64 } %t261, i64 6, 2 @@ -50070,17 +53876,17 @@ then5702: %t264 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t265 = call ptr @finch_alloc(i64 %t264) %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 0 - store { ptr, i64, i64 } { ptr @.str.3743, i64 3, i64 0 }, ptr %t266 + store { ptr, i64, i64 } { ptr @.str.3956, i64 3, i64 0 }, ptr %t266 %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 1 - store { ptr, i64, i64 } { ptr @.str.3744, i64 3, i64 0 }, ptr %t267 + store { ptr, i64, i64 } { ptr @.str.3957, i64 3, i64 0 }, ptr %t267 %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 2 - store { ptr, i64, i64 } { ptr @.str.3745, i64 3, i64 0 }, ptr %t268 + store { ptr, i64, i64 } { ptr @.str.3958, i64 3, i64 0 }, ptr %t268 %t269 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 3 - store { ptr, i64, i64 } { ptr @.str.3746, i64 3, i64 0 }, ptr %t269 + store { ptr, i64, i64 } { ptr @.str.3959, i64 3, i64 0 }, ptr %t269 %t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 4 - store { ptr, i64, i64 } { ptr @.str.3747, i64 3, i64 0 }, ptr %t270 + store { ptr, i64, i64 } { ptr @.str.3960, i64 3, i64 0 }, ptr %t270 %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 5 - store { ptr, i64, i64 } { ptr @.str.3748, i64 3, i64 0 }, ptr %t271 + store { ptr, i64, i64 } { ptr @.str.3961, i64 3, i64 0 }, ptr %t271 %t272 = insertvalue { ptr, i64, i64 } undef, ptr %t265, 0 %t273 = insertvalue { ptr, i64, i64 } %t272, i64 6, 1 %t274 = insertvalue { ptr, i64, i64 } %t273, i64 6, 2 @@ -50092,45 +53898,45 @@ then5702: %t280 = load i64, ptr %t277 %t281 = load ptr, ptr %a263 store i64 0, ptr %a282 - br label %find.cond5705 -find.cond5705: + br label %find.cond5989 +find.cond5989: %t283 = load i64, ptr %a282 %t284 = icmp slt i64 %t283, %t280 - br i1 %t284, label %find.body5706, label %find.end5709 -find.body5706: + br i1 %t284, label %find.body5990, label %find.end5993 +find.body5990: %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i64 %t283 %t286 = load { ptr, i64, i64 }, ptr %t285 store { ptr, i64, i64 } %t286, ptr %a287 store { ptr, i64, i64 } %t278, ptr %a288 %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) %t290 = icmp ne i32 %t289, 0 - br i1 %t290, label %find.hit5707, label %find.next5708 -find.hit5707: + br i1 %t290, label %find.hit5991, label %find.next5992 +find.hit5991: store i64 %t283, ptr %a279 - br label %find.end5709 -find.next5708: + br label %find.end5993 +find.next5992: %t291 = add i64 %t283, 1 store i64 %t291, ptr %a282 - br label %find.cond5705 -find.end5709: + br label %find.cond5989 +find.end5993: %t292 = load i64, ptr %a279 %t293 = load { ptr, i64, i64 }, ptr %a275 %t294 = extractvalue { ptr, i64, i64 } %t293, 1 %t295 = icmp uge i64 %t292, %t294 - br i1 %t295, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3750, i64 3069, i64 %t292, i64 %t294) + br i1 %t295, label %range5994, label %inrange5995 +range5994: + call void @finch_panic_index(ptr @.str.3963, i64 3194, i64 %t292, i64 %t294) unreachable -inrange5711: +inrange5995: %t296 = extractvalue { ptr, i64, i64 } %t293, 0 %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i64 %t292 %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.3749, i64 5, i64 0 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.3962, i64 5, i64 0 }, ptr %a300 store { ptr, i64, i64 } %t298, ptr %a301 call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) %t302 = load { ptr, i64, i64 }, ptr %a299 store { ptr, i64, i64 } %t302, ptr %a304 - store { ptr, i64, i64 } { ptr @.str.3751, i64 1, i64 0 }, ptr %a305 + store { ptr, i64, i64 } { ptr @.str.3964, i64 1, i64 0 }, ptr %a305 call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) %t306 = load { ptr, i64, i64 }, ptr %a303 %t307 = load ptr, ptr %a1 @@ -50142,7 +53948,7 @@ inrange5711: call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) %t314 = load { ptr, i64, i64 }, ptr %a311 store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.3752, i64 1, i64 0 }, ptr %a317 + store { ptr, i64, i64 } { ptr @.str.3965, i64 1, i64 0 }, ptr %a317 call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) %t318 = load { ptr, i64, i64 }, ptr %a315 %t319 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -50152,7 +53958,7 @@ inrange5711: call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) %t324 = load { ptr, i64, i64 }, ptr %a321 store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.3753, i64 2, i64 0 }, ptr %a327 + store { ptr, i64, i64 } { ptr @.str.3966, i64 2, i64 0 }, ptr %a327 call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) %t328 = load { ptr, i64, i64 }, ptr %a325 %t329 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -50163,45 +53969,45 @@ inrange5711: %t334 = load { ptr, i64, i64 }, ptr %a331 %t335 = call { ptr, i64, i64 } @finch.gen.op(ptr %t276, { ptr, i64, i64 } %t334) %t336 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t335, 0 - %t337 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3754, i64 4, i64 0 }) + %t337 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3967, i64 4, i64 0 }) %t338 = insertvalue %S.gen.Val %t336, %S.ast.Type %t337, 1 ret %S.gen.Val %t338 -endif5704: +endif5988: %t339 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t339, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.3755, i64 4, i64 0 }, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.3968, i64 4, i64 0 }, ptr %a341 %t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341) %t343 = icmp ne i32 %t342, 0 - br i1 %t343, label %then5712, label %endif5714 -then5712: + br i1 %t343, label %then5996, label %endif5998 +then5996: %t344 = load i1, ptr %a23 %t345 = xor i1 %t344, true - br i1 %t345, label %then5715, label %endif5717 -then5715: + br i1 %t345, label %then5999, label %endif6001 +then5999: %t346 = load ptr, ptr %a1 %t347 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t346, %S.ast.Node %t347, { ptr, i64, i64 } { ptr @.str.3756, i64 115, i64 0 }) - br label %endif5717 -endif5717: - store { ptr, i64, i64 } { ptr @.str.3757, i64 2, i64 0 }, ptr %a348 + call void @finch.gen.fail(ptr %t346, %S.ast.Node %t347, { ptr, i64, i64 } { ptr @.str.3969, i64 115, i64 0 }) + br label %endif6001 +endif6001: + store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a348 %t349 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.3758, i64 2, i64 0 }, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.3971, i64 2, i64 0 }, ptr %a351 %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then5718, label %endif5720 -then5718: - store { ptr, i64, i64 } { ptr @.str.3759, i64 2, i64 0 }, ptr %a348 - br label %endif5720 -endif5720: + br i1 %t353, label %then6002, label %endif6004 +then6002: + store { ptr, i64, i64 } { ptr @.str.3972, i64 2, i64 0 }, ptr %a348 + br label %endif6004 +endif6004: %t354 = load ptr, ptr %a1 %t355 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.3760, i64 5, i64 0 }, ptr %a357 + store { ptr, i64, i64 } { ptr @.str.3973, i64 5, i64 0 }, ptr %a357 store { ptr, i64, i64 } %t355, ptr %a358 call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) %t359 = load { ptr, i64, i64 }, ptr %a356 store { ptr, i64, i64 } %t359, ptr %a361 - store { ptr, i64, i64 } { ptr @.str.3761, i64 5, i64 0 }, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.3974, i64 5, i64 0 }, ptr %a362 call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) %t363 = load { ptr, i64, i64 }, ptr %a360 %t364 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -50211,7 +54017,7 @@ endif5720: call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) %t369 = load { ptr, i64, i64 }, ptr %a366 store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.3975, i64 2, i64 0 }, ptr %a372 call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) %t373 = load { ptr, i64, i64 }, ptr %a370 %t374 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -50222,90 +54028,90 @@ endif5720: %t379 = load { ptr, i64, i64 }, ptr %a376 %t380 = call { ptr, i64, i64 } @finch.gen.op(ptr %t354, { ptr, i64, i64 } %t379) %t381 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t380, 0 - %t382 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3763, i64 4, i64 0 }) + %t382 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) %t383 = insertvalue %S.gen.Val %t381, %S.ast.Type %t382, 1 ret %S.gen.Val %t383 -endif5714: +endif5998: %t384 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t384, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.3764, i64 4, i64 0 }, ptr %a386 + store { ptr, i64, i64 } { ptr @.str.3977, i64 4, i64 0 }, ptr %a386 %t387 = call i32 @finch_str_eq(ptr %a385, ptr %a386) %t388 = icmp ne i32 %t387, 0 - br label %logic.from5721 -logic.from5721: - br i1 %t388, label %logic.rhs5722, label %logic.end5723 -logic.rhs5722: + br label %logic.from6005 +logic.from6005: + br i1 %t388, label %logic.rhs6006, label %logic.end6007 +logic.rhs6006: %t389 = load i1, ptr %a23 %t390 = xor i1 %t389, true - br label %logic.rend5724 -logic.rend5724: - br label %logic.end5723 -logic.end5723: - %t391 = phi i1 [ false, %logic.from5721 ], [ %t390, %logic.rend5724 ] - br i1 %t391, label %then5725, label %endif5727 -then5725: + br label %logic.rend6008 +logic.rend6008: + br label %logic.end6007 +logic.end6007: + %t391 = phi i1 [ false, %logic.from6005 ], [ %t390, %logic.rend6008 ] + br i1 %t391, label %then6009, label %endif6011 +then6009: %t392 = load ptr, ptr %a1 %t393 = load { ptr, i64, i64 }, ptr %a2 %t394 = load %S.gen.Val, ptr %a6 %t395 = load %S.gen.Val, ptr %a10 %t396 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t392, { ptr, i64, i64 } %t393, %S.gen.Val %t394, %S.gen.Val %t395, %S.ast.Node %t396) - br label %endif5727 -endif5727: + br label %endif6011 +endif6011: %t397 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t398 = load %S.ast.Type, ptr %t397 %t399 = call i1 @finch.gen.isInt(%S.ast.Type %t398) %t400 = xor i1 %t399, true - br label %logic.from5728 -logic.from5728: - br i1 %t400, label %logic.rhs5729, label %logic.end5730 -logic.rhs5729: + br label %logic.from6012 +logic.from6012: + br i1 %t400, label %logic.rhs6013, label %logic.end6014 +logic.rhs6013: %t401 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.3765, i64 4, i64 0 }, ptr %a403 + store { ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }, ptr %a403 %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) %t405 = icmp eq i32 %t404, 0 - br label %logic.rend5731 -logic.rend5731: - br label %logic.end5730 -logic.end5730: - %t406 = phi i1 [ false, %logic.from5728 ], [ %t405, %logic.rend5731 ] - br label %logic.from5732 -logic.from5732: - br i1 %t406, label %logic.rhs5733, label %logic.end5734 -logic.rhs5733: + br label %logic.rend6015 +logic.rend6015: + br label %logic.end6014 +logic.end6014: + %t406 = phi i1 [ false, %logic.from6012 ], [ %t405, %logic.rend6015 ] + br label %logic.from6016 +logic.from6016: + br i1 %t406, label %logic.rhs6017, label %logic.end6018 +logic.rhs6017: %t407 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t407, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.3766, i64 4, i64 0 }, ptr %a409 + store { ptr, i64, i64 } { ptr @.str.3979, i64 4, i64 0 }, ptr %a409 %t410 = call i32 @finch_str_eq(ptr %a408, ptr %a409) %t411 = icmp eq i32 %t410, 0 - br label %logic.rend5735 -logic.rend5735: - br label %logic.end5734 -logic.end5734: - %t412 = phi i1 [ false, %logic.from5732 ], [ %t411, %logic.rend5735 ] - br i1 %t412, label %then5736, label %endif5738 -then5736: + br label %logic.rend6019 +logic.rend6019: + br label %logic.end6018 +logic.end6018: + %t412 = phi i1 [ false, %logic.from6016 ], [ %t411, %logic.rend6019 ] + br i1 %t412, label %then6020, label %endif6022 +then6020: %t413 = load ptr, ptr %a1 %t414 = load { ptr, i64, i64 }, ptr %a2 %t415 = load %S.gen.Val, ptr %a6 %t416 = load %S.gen.Val, ptr %a10 %t417 = load %S.ast.Node, ptr %a11 call void @finch.gen.badOperands(ptr %t413, { ptr, i64, i64 } %t414, %S.gen.Val %t415, %S.gen.Val %t416, %S.ast.Node %t417) - br label %endif5738 -endif5738: + br label %endif6022 +endif6022: %t418 = load ptr, ptr %a1 %t419 = load { ptr, i64, i64 }, ptr %a2 %t420 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 %t421 = load %S.ast.Type, ptr %t420 %t422 = call i1 @finch.gen.isSigned(%S.ast.Type %t421) %t423 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t419, i1 %t422) - store { ptr, i64, i64 } { ptr @.str.3767, i64 5, i64 0 }, ptr %a425 + store { ptr, i64, i64 } { ptr @.str.3980, i64 5, i64 0 }, ptr %a425 store { ptr, i64, i64 } %t423, ptr %a426 call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) %t427 = load { ptr, i64, i64 }, ptr %a424 store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3768, i64 1, i64 0 }, ptr %a430 + store { ptr, i64, i64 } { ptr @.str.3981, i64 1, i64 0 }, ptr %a430 call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) %t431 = load { ptr, i64, i64 }, ptr %a428 %t432 = load ptr, ptr %a1 @@ -50317,7 +54123,7 @@ endif5738: call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) %t439 = load { ptr, i64, i64 }, ptr %a436 store { ptr, i64, i64 } %t439, ptr %a441 - store { ptr, i64, i64 } { ptr @.str.3769, i64 1, i64 0 }, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.3982, i64 1, i64 0 }, ptr %a442 call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) %t443 = load { ptr, i64, i64 }, ptr %a440 %t444 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 @@ -50327,7 +54133,7 @@ endif5738: call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) %t449 = load { ptr, i64, i64 }, ptr %a446 store { ptr, i64, i64 } %t449, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.3770, i64 2, i64 0 }, ptr %a452 + store { ptr, i64, i64 } { ptr @.str.3983, i64 2, i64 0 }, ptr %a452 call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) %t453 = load { ptr, i64, i64 }, ptr %a450 %t454 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 @@ -50338,7 +54144,7 @@ endif5738: %t459 = load { ptr, i64, i64 }, ptr %a456 %t460 = call { ptr, i64, i64 } @finch.gen.op(ptr %t418, { ptr, i64, i64 } %t459) %t461 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t460, 0 - %t462 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3771, i64 4, i64 0 }) + %t462 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3984, i64 4, i64 0 }) %t463 = insertvalue %S.gen.Val %t461, %S.ast.Type %t462, 1 ret %S.gen.Val %t463 } @@ -50360,17 +54166,17 @@ entry: %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t4 = call ptr @finch_alloc(i64 %t3) %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.3772, i64 2, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.3985, i64 2, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.3773, i64 2, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.3986, i64 2, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.3774, i64 1, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.3987, i64 1, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.3775, i64 2, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.3988, i64 2, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.3776, i64 1, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.3989, i64 1, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.3777, i64 2, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %t10 %t11 = insertvalue { ptr, i64, i64 } undef, ptr %t4, 0 %t12 = insertvalue { ptr, i64, i64 } %t11, i64 6, 1 %t13 = insertvalue { ptr, i64, i64 } %t12, i64 6, 2 @@ -50378,80 +54184,80 @@ entry: %t15 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t16 = call ptr @finch_alloc(i64 %t15) %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - store { ptr, i64, i64 } { ptr @.str.3778, i64 2, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.3991, i64 2, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.3779, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.3992, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.3780, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.3993, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.3781, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.3994, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.3782, i64 3, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.3995, i64 3, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.3783, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.3996, i64 3, i64 0 }, ptr %t22 %t23 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 %t24 = insertvalue { ptr, i64, i64 } %t23, i64 6, 1 %t25 = insertvalue { ptr, i64, i64 } %t24, i64 6, 2 store { ptr, i64, i64 } %t25, ptr %a26 %t27 = load i1, ptr %a2 - br i1 %t27, label %then5739, label %endif5741 -then5739: + br i1 %t27, label %then6023, label %endif6025 +then6023: %t28 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t29 = call ptr @finch_alloc(i64 %t28) %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - store { ptr, i64, i64 } { ptr @.str.3784, i64 2, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.3997, i64 2, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.3785, i64 2, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.3998, i64 2, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.3786, i64 3, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.3999, i64 3, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.3787, i64 3, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4000, i64 3, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.3788, i64 3, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4001, i64 3, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.3789, i64 3, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4002, i64 3, i64 0 }, ptr %t35 %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 store { ptr, i64, i64 } %t38, ptr %a26 - br label %endif5741 -endif5741: + br label %endif6025 +endif6025: %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t40 = load { ptr, i64, i64 }, ptr %a1 store i64 -1, ptr %a41 %t42 = load i64, ptr %t39 %t43 = load ptr, ptr %a14 store i64 0, ptr %a44 - br label %find.cond5742 -find.cond5742: + br label %find.cond6026 +find.cond6026: %t45 = load i64, ptr %a44 %t46 = icmp slt i64 %t45, %t42 - br i1 %t46, label %find.body5743, label %find.end5746 -find.body5743: + br i1 %t46, label %find.body6027, label %find.end6030 +find.body6027: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t45 %t48 = load { ptr, i64, i64 }, ptr %t47 store { ptr, i64, i64 } %t48, ptr %a49 store { ptr, i64, i64 } %t40, ptr %a50 %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) %t52 = icmp ne i32 %t51, 0 - br i1 %t52, label %find.hit5744, label %find.next5745 -find.hit5744: + br i1 %t52, label %find.hit6028, label %find.next6029 +find.hit6028: store i64 %t45, ptr %a41 - br label %find.end5746 -find.next5745: + br label %find.end6030 +find.next6029: %t53 = add i64 %t45, 1 store i64 %t53, ptr %a44 - br label %find.cond5742 -find.end5746: + br label %find.cond6026 +find.end6030: %t54 = load i64, ptr %a41 %t55 = load { ptr, i64, i64 }, ptr %a26 %t56 = extractvalue { ptr, i64, i64 } %t55, 1 %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range5747, label %inrange5748 -range5747: - call void @finch_panic_index(ptr @.str.3790, i64 3096, i64 %t54, i64 %t56) + br i1 %t57, label %range6031, label %inrange6032 +range6031: + call void @finch_panic_index(ptr @.str.4003, i64 3221, i64 %t54, i64 %t56) unreachable -inrange5748: +inrange6032: %t58 = extractvalue { ptr, i64, i64 } %t55, 0 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t54 %t60 = load { ptr, i64, i64 }, ptr %t59 @@ -50531,48 +54337,48 @@ entry: store { ptr, i64, i64 } %t7, ptr %a8 %t9 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3791, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.4004, i64 2, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.from5749 -logic.from5749: - br i1 %t13, label %logic.end5751, label %logic.rhs5750 -logic.rhs5750: + br label %logic.from6033 +logic.from6033: + br i1 %t13, label %logic.end6035, label %logic.rhs6034 +logic.rhs6034: %t14 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3792, i64 2, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.4005, i64 2, i64 0 }, ptr %a16 %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) %t18 = icmp ne i32 %t17, 0 - br label %logic.rend5752 -logic.rend5752: - br label %logic.end5751 -logic.end5751: - %t19 = phi i1 [ true, %logic.from5749 ], [ %t18, %logic.rend5752 ] - br i1 %t19, label %then5753, label %endif5755 -then5753: + br label %logic.rend6036 +logic.rend6036: + br label %logic.end6035 +logic.end6035: + %t19 = phi i1 [ true, %logic.from6033 ], [ %t18, %logic.rend6036 ] + br i1 %t19, label %then6037, label %endif6039 +then6037: %t20 = load ptr, ptr %a1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t22 = load { ptr, i64, i64 }, ptr %t21 %t23 = extractvalue { ptr, i64, i64 } %t22, 1 %t24 = icmp uge i64 0, %t23 - br i1 %t24, label %range5756, label %inrange5757 -range5756: - call void @finch_panic_index(ptr @.str.3793, i64 3102, i64 0, i64 %t23) + br i1 %t24, label %range6040, label %inrange6041 +range6040: + call void @finch_panic_index(ptr @.str.4006, i64 3227, i64 0, i64 %t23) unreachable -inrange5757: +inrange6041: %t25 = extractvalue { ptr, i64, i64 } %t22, 0 %t26 = getelementptr inbounds %S.ast.Node, ptr %t25, i64 0 %t27 = load %S.ast.Node, ptr %t26 %t28 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t20, %S.ast.Node %t27) store { ptr, i64, i64 } %t28, ptr %a29 %t30 = load ptr, ptr %a1 - %t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.3794, i64 10, i64 0 }) + %t31 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t30, { ptr, i64, i64 } { ptr @.str.4007, i64 10, i64 0 }) store { ptr, i64, i64 } %t31, ptr %a32 %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.3795, i64 9, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t33, { ptr, i64, i64 } { ptr @.str.4008, i64 9, i64 0 }) store { ptr, i64, i64 } %t34, ptr %a35 %t36 = load ptr, ptr %a1 - %t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.3796, i64 9, i64 0 }) + %t37 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t36, { ptr, i64, i64 } { ptr @.str.4009, i64 9, i64 0 }) store { ptr, i64, i64 } %t37, ptr %a38 %t39 = load ptr, ptr %a1 %t40 = load { ptr, i64, i64 }, ptr %a32 @@ -50582,25 +54388,25 @@ inrange5757: call void @finch.gen.label(ptr %t41, { ptr, i64, i64 } %t42) %t43 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.3797, i64 2, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4010, i64 2, i64 0 }, ptr %a45 %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) %t47 = icmp ne i32 %t46, 0 - br i1 %t47, label %then5758, label %else5759 -then5758: + br i1 %t47, label %then6042, label %else6043 +then6042: %t48 = load ptr, ptr %a1 %t49 = load { ptr, i64, i64 }, ptr %a29 %t50 = load { ptr, i64, i64 }, ptr %a35 %t51 = load { ptr, i64, i64 }, ptr %a38 call void @finch.gen.condBr(ptr %t48, { ptr, i64, i64 } %t49, { ptr, i64, i64 } %t50, { ptr, i64, i64 } %t51) - br label %endif5760 -else5759: + br label %endif6044 +else6043: %t52 = load ptr, ptr %a1 %t53 = load { ptr, i64, i64 }, ptr %a29 %t54 = load { ptr, i64, i64 }, ptr %a38 %t55 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.condBr(ptr %t52, { ptr, i64, i64 } %t53, { ptr, i64, i64 } %t54, { ptr, i64, i64 } %t55) - br label %endif5760 -endif5760: + br label %endif6044 +endif6044: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a35 call void @finch.gen.label(ptr %t56, { ptr, i64, i64 } %t57) @@ -50609,18 +54415,18 @@ endif5760: %t60 = load { ptr, i64, i64 }, ptr %t59 %t61 = extractvalue { ptr, i64, i64 } %t60, 1 %t62 = icmp uge i64 1, %t61 - br i1 %t62, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3798, i64 3114, i64 1, i64 %t61) + br i1 %t62, label %range6045, label %inrange6046 +range6045: + call void @finch_panic_index(ptr @.str.4011, i64 3239, i64 1, i64 %t61) unreachable -inrange5762: +inrange6046: %t63 = extractvalue { ptr, i64, i64 } %t60, 0 %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 1 %t65 = load %S.ast.Node, ptr %t64 %t66 = call { ptr, i64, i64 } @finch.gen.condition(ptr %t58, %S.ast.Node %t65) store { ptr, i64, i64 } %t66, ptr %a67 %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.3799, i64 10, i64 0 }) + %t69 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t68, { ptr, i64, i64 } { ptr @.str.4012, i64 10, i64 0 }) store { ptr, i64, i64 } %t69, ptr %a70 %t71 = load ptr, ptr %a1 %t72 = load { ptr, i64, i64 }, ptr %a70 @@ -50634,25 +54440,25 @@ inrange5762: %t77 = load ptr, ptr %a1 %t78 = load { ptr, i64, i64 }, ptr %a38 call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } { ptr @.str.3800, i64 4, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4013, i64 4, i64 0 }, ptr %a79 %t80 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4014, i64 2, i64 0 }, ptr %a82 %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5763, label %endif5765 -then5763: - store { ptr, i64, i64 } { ptr @.str.3802, i64 5, i64 0 }, ptr %a79 - br label %endif5765 -endif5765: + br i1 %t84, label %then6047, label %endif6049 +then6047: + store { ptr, i64, i64 } { ptr @.str.4015, i64 5, i64 0 }, ptr %a79 + br label %endif6049 +endif6049: %t85 = load ptr, ptr %a1 %t86 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.3803, i64 9, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.4016, i64 9, i64 0 }, ptr %a88 store { ptr, i64, i64 } %t86, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.3804, i64 3, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.4017, i64 3, i64 0 }, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 %t95 = load { ptr, i64, i64 }, ptr %a32 @@ -50661,7 +54467,7 @@ endif5765: call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3805, i64 6, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.4018, i64 6, i64 0 }, ptr %a102 call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) %t103 = load { ptr, i64, i64 }, ptr %a100 %t104 = load { ptr, i64, i64 }, ptr %a67 @@ -50670,7 +54476,7 @@ endif5765: call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) %t108 = load { ptr, i64, i64 }, ptr %a105 store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3806, i64 3, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.4019, i64 3, i64 0 }, ptr %a111 call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) %t112 = load { ptr, i64, i64 }, ptr %a109 %t113 = load { ptr, i64, i64 }, ptr %a70 @@ -50679,25 +54485,25 @@ endif5765: call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.3807, i64 2, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a120 call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) %t121 = load { ptr, i64, i64 }, ptr %a118 %t122 = call { ptr, i64, i64 } @finch.gen.op(ptr %t85, { ptr, i64, i64 } %t121) %t123 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t122, 0 - %t124 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }) + %t124 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4021, i64 4, i64 0 }) %t125 = insertvalue %S.gen.Val %t123, %S.ast.Type %t124, 1 ret %S.gen.Val %t125 -endif5755: +endif6039: %t126 = load ptr, ptr %a1 %t127 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t128 = load { ptr, i64, i64 }, ptr %t127 %t129 = extractvalue { ptr, i64, i64 } %t128, 1 %t130 = icmp uge i64 0, %t129 - br i1 %t130, label %range5766, label %inrange5767 -range5766: - call void @finch_panic_index(ptr @.str.3809, i64 3126, i64 0, i64 %t129) + br i1 %t130, label %range6050, label %inrange6051 +range6050: + call void @finch_panic_index(ptr @.str.4022, i64 3251, i64 0, i64 %t129) unreachable -inrange5767: +inrange6051: %t131 = extractvalue { ptr, i64, i64 } %t128, 0 %t132 = getelementptr inbounds %S.ast.Node, ptr %t131, i64 0 %t133 = load %S.ast.Node, ptr %t132 @@ -50708,11 +54514,11 @@ inrange5767: %t138 = load { ptr, i64, i64 }, ptr %t137 %t139 = extractvalue { ptr, i64, i64 } %t138, 1 %t140 = icmp uge i64 1, %t139 - br i1 %t140, label %range5768, label %inrange5769 -range5768: - call void @finch_panic_index(ptr @.str.3810, i64 3127, i64 1, i64 %t139) + br i1 %t140, label %range6052, label %inrange6053 +range6052: + call void @finch_panic_index(ptr @.str.4023, i64 3252, i64 1, i64 %t139) unreachable -inrange5769: +inrange6053: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 1 %t143 = load %S.ast.Node, ptr %t142 @@ -50720,81 +54526,81 @@ inrange5769: store %S.gen.Val %t144, ptr %a145 %t146 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t146, ptr %a147 - store { ptr, i64, i64 } { ptr @.str.3811, i64 2, i64 0 }, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a148 %t149 = call i32 @finch_str_eq(ptr %a147, ptr %a148) %t150 = icmp ne i32 %t149, 0 - br label %logic.from5770 -logic.from5770: - br i1 %t150, label %logic.end5772, label %logic.rhs5771 -logic.rhs5771: + br label %logic.from6054 +logic.from6054: + br i1 %t150, label %logic.end6056, label %logic.rhs6055 +logic.rhs6055: %t151 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3812, i64 2, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a153 %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) %t155 = icmp ne i32 %t154, 0 - br label %logic.rend5773 -logic.rend5773: - br label %logic.end5772 -logic.end5772: - %t156 = phi i1 [ true, %logic.from5770 ], [ %t155, %logic.rend5773 ] - br label %logic.from5774 -logic.from5774: - br i1 %t156, label %logic.end5776, label %logic.rhs5775 -logic.rhs5775: + br label %logic.rend6057 +logic.rend6057: + br label %logic.end6056 +logic.end6056: + %t156 = phi i1 [ true, %logic.from6054 ], [ %t155, %logic.rend6057 ] + br label %logic.from6058 +logic.from6058: + br i1 %t156, label %logic.end6060, label %logic.rhs6059 +logic.rhs6059: %t157 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.3813, i64 1, i64 0 }, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.4026, i64 1, i64 0 }, ptr %a159 %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) %t161 = icmp ne i32 %t160, 0 - br label %logic.rend5777 -logic.rend5777: - br label %logic.end5776 -logic.end5776: - %t162 = phi i1 [ true, %logic.from5774 ], [ %t161, %logic.rend5777 ] - br label %logic.from5778 -logic.from5778: - br i1 %t162, label %logic.end5780, label %logic.rhs5779 -logic.rhs5779: + br label %logic.rend6061 +logic.rend6061: + br label %logic.end6060 +logic.end6060: + %t162 = phi i1 [ true, %logic.from6058 ], [ %t161, %logic.rend6061 ] + br label %logic.from6062 +logic.from6062: + br i1 %t162, label %logic.end6064, label %logic.rhs6063 +logic.rhs6063: %t163 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3814, i64 2, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.4027, i64 2, i64 0 }, ptr %a165 %t166 = call i32 @finch_str_eq(ptr %a164, ptr %a165) %t167 = icmp ne i32 %t166, 0 - br label %logic.rend5781 -logic.rend5781: - br label %logic.end5780 -logic.end5780: - %t168 = phi i1 [ true, %logic.from5778 ], [ %t167, %logic.rend5781 ] - br label %logic.from5782 -logic.from5782: - br i1 %t168, label %logic.end5784, label %logic.rhs5783 -logic.rhs5783: + br label %logic.rend6065 +logic.rend6065: + br label %logic.end6064 +logic.end6064: + %t168 = phi i1 [ true, %logic.from6062 ], [ %t167, %logic.rend6065 ] + br label %logic.from6066 +logic.from6066: + br i1 %t168, label %logic.end6068, label %logic.rhs6067 +logic.rhs6067: %t169 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.3815, i64 1, i64 0 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.4028, i64 1, i64 0 }, ptr %a171 %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) %t173 = icmp ne i32 %t172, 0 - br label %logic.rend5785 -logic.rend5785: - br label %logic.end5784 -logic.end5784: - %t174 = phi i1 [ true, %logic.from5782 ], [ %t173, %logic.rend5785 ] - br label %logic.from5786 -logic.from5786: - br i1 %t174, label %logic.end5788, label %logic.rhs5787 -logic.rhs5787: + br label %logic.rend6069 +logic.rend6069: + br label %logic.end6068 +logic.end6068: + %t174 = phi i1 [ true, %logic.from6066 ], [ %t173, %logic.rend6069 ] + br label %logic.from6070 +logic.from6070: + br i1 %t174, label %logic.end6072, label %logic.rhs6071 +logic.rhs6071: %t175 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t175, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3816, i64 2, i64 0 }, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.4029, i64 2, i64 0 }, ptr %a177 %t178 = call i32 @finch_str_eq(ptr %a176, ptr %a177) %t179 = icmp ne i32 %t178, 0 - br label %logic.rend5789 -logic.rend5789: - br label %logic.end5788 -logic.end5788: - %t180 = phi i1 [ true, %logic.from5786 ], [ %t179, %logic.rend5789 ] - br i1 %t180, label %then5790, label %endif5792 -then5790: + br label %logic.rend6073 +logic.rend6073: + br label %logic.end6072 +logic.end6072: + %t180 = phi i1 [ true, %logic.from6070 ], [ %t179, %logic.rend6073 ] + br i1 %t180, label %then6074, label %endif6076 +then6074: %t181 = load ptr, ptr %a1 %t182 = load { ptr, i64, i64 }, ptr %a8 %t183 = load %S.gen.Val, ptr %a135 @@ -50802,7 +54608,7 @@ then5790: %t185 = load %S.ast.Node, ptr %a2 %t186 = call %S.gen.Val @finch.gen.compare(ptr %t181, { ptr, i64, i64 } %t182, %S.gen.Val %t183, %S.gen.Val %t184, %S.ast.Node %t185) ret %S.gen.Val %t186 -endif5792: +endif6076: %t187 = load ptr, ptr %a1 %t188 = load { ptr, i64, i64 }, ptr %a8 %t189 = load %S.gen.Val, ptr %a135 @@ -50908,25 +54714,25 @@ entry: store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3817, i64 4, i64 0 }) + %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4030, i64 4, i64 0 }) store %S.ast.Type %t4, ptr %a5 %t6 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t7 = load { ptr, i64, i64 }, ptr %t6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3818, i64 5, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4031, i64 5, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then5793, label %else5794 -then5793: + br i1 %t11, label %then6077, label %else6078 +then6077: %t12 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 %t13 = load { ptr, i64, i64 }, ptr %t12 %t14 = extractvalue { ptr, i64, i64 } %t13, 1 %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range5796, label %inrange5797 -range5796: - call void @finch_panic_index(ptr @.str.3819, i64 3137, i64 0, i64 %t14) + br i1 %t15, label %range6080, label %inrange6081 +range6080: + call void @finch_panic_index(ptr @.str.4032, i64 3262, i64 0, i64 %t14) unreachable -inrange5797: +inrange6081: %t16 = extractvalue { ptr, i64, i64 } %t13, 0 %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 %t18 = load %S.ast.Type, ptr %t17 @@ -50934,32 +54740,32 @@ inrange5797: call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) %t21 = load %S.ast.Type, ptr %a20 store %S.ast.Type %t21, ptr %a5 - br label %endif5795 -else5794: + br label %endif6079 +else6078: %t22 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load i64, ptr %t23 %t25 = icmp eq i64 %t24, 0 - br i1 %t25, label %then5798, label %endif5800 -then5798: + br i1 %t25, label %then6082, label %endif6084 +then6082: %t26 = load ptr, ptr %a1 %t27 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t26, %S.ast.Node %t27, { ptr, i64, i64 } { ptr @.str.3820, i64 47, i64 0 }) - br label %endif5800 -endif5800: - br label %endif5795 -endif5795: + call void @finch.gen.fail(ptr %t26, %S.ast.Node %t27, { ptr, i64, i64 } { ptr @.str.4033, i64 47, i64 0 }) + br label %endif6084 +endif6084: + br label %endif6079 +endif6079: store { ptr, i64, i64 } zeroinitializer, ptr %a28 %t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 store i64 0, ptr %a30 - br label %each.cond5801 -each.cond5801: + br label %each.cond6085 +each.cond6085: %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 %t32 = load i64, ptr %t31 %t33 = load i64, ptr %a30 %t34 = icmp slt i64 %t33, %t32 - br i1 %t34, label %each.body5802, label %each.end5804 -each.body5802: + br i1 %t34, label %each.body6086, label %each.end6088 +each.body6086: %t35 = load ptr, ptr %t29 %t36 = getelementptr inbounds %S.ast.Node, ptr %t35, i64 %t33 %t37 = load %S.ast.Node, ptr %t36 @@ -50968,11 +54774,11 @@ each.body5802: %t40 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 %t41 = load { ptr, i64, i64 }, ptr %t40 store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.3821, i64 4, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4034, i64 4, i64 0 }, ptr %a43 %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then5805, label %else5806 -then5805: + br i1 %t45, label %then6089, label %else6090 +then6089: %t46 = load ptr, ptr %a1 %t47 = load %S.ast.Node, ptr %a38 %t48 = call %S.gen.Val @finch.gen.expr(ptr %t46, %S.ast.Node %t47) @@ -50983,20 +54789,20 @@ then5805: call void @finch.copy.S_ast_Type(ptr %a52, ptr %a51) %t53 = load %S.ast.Type, ptr %a52 store %S.ast.Type %t53, ptr %a5 - br label %endif5807 -else5806: + br label %endif6091 +else6090: %t54 = load ptr, ptr %a1 %t55 = load %S.ast.Node, ptr %a38 %t56 = load %S.ast.Type, ptr %a5 %t57 = call %S.gen.Val @finch.gen.exprWant(ptr %t54, %S.ast.Node %t55, %S.ast.Type %t56) store %S.gen.Val %t57, ptr %a39 - br label %endif5807 -endif5807: + br label %endif6091 +endif6091: %t58 = load ptr, ptr %a1 %t59 = load %S.gen.Val, ptr %a39 %t60 = load %S.ast.Type, ptr %a5 %t61 = load %S.ast.Node, ptr %a38 - %t62 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t59, %S.ast.Type %t60, %S.ast.Node %t61, { ptr, i64, i64 } { ptr @.str.3822, i64 27, i64 0 }) + %t62 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t59, %S.ast.Type %t60, %S.ast.Node %t61, { ptr, i64, i64 } { ptr @.str.4035, i64 27, i64 0 }) store %S.gen.Val %t62, ptr %a39 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 %t64 = load ptr, ptr %a1 @@ -51009,13 +54815,13 @@ endif5807: %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 store { ptr, i64, i64 } %t66, ptr %t70 store i64 %t68, ptr %t63 - br label %each.step5803 -each.step5803: + br label %each.step6087 +each.step6087: %t71 = load i64, ptr %a30 %t72 = add i64 %t71, 1 store i64 %t72, ptr %a30 - br label %each.cond5801 -each.end5804: + br label %each.cond6085 +each.end6088: %t73 = load %S.ast.Type, ptr %a5 %t74 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t73) store %S.ast.Type %t74, ptr %a75 @@ -51024,20 +54830,20 @@ each.end5804: call void @finch_str_from_int(ptr %a78, i64 %t77) %t79 = load { ptr, i64, i64 }, ptr %a78 store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3823, i64 4, i64 0 }, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.4036, i64 4, i64 0 }, ptr %a81 %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 %t83 = load i64, ptr %t82 %t84 = icmp sgt i64 %t83, 0 - br i1 %t84, label %then5808, label %endif5810 -then5808: + br i1 %t84, label %then6092, label %endif6094 +then6092: %t85 = load ptr, ptr %a1 %t86 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3824, i64 8, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.4037, i64 8, i64 0 }, ptr %a88 store { ptr, i64, i64 } %t86, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.3825, i64 2, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.4038, i64 2, i64 0 }, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 %t95 = load ptr, ptr %a1 @@ -51051,37 +54857,37 @@ then5808: store { ptr, i64, i64 } %t102, ptr %a103 %t104 = load ptr, ptr %a1 %t105 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3826, i64 26, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4039, i64 26, i64 0 }, ptr %a107 store { ptr, i64, i64 } %t105, ptr %a108 call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) %t109 = load { ptr, i64, i64 }, ptr %a106 store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3827, i64 1, i64 0 }, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.4040, i64 1, i64 0 }, ptr %a112 call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) %t113 = load { ptr, i64, i64 }, ptr %a110 %t114 = call { ptr, i64, i64 } @finch.gen.op(ptr %t104, { ptr, i64, i64 } %t113) store { ptr, i64, i64 } %t114, ptr %a81 - br label %endif5810 -endif5810: + br label %endif6094 +endif6094: %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 %t116 = load i64, ptr %t115 store i64 0, ptr %a117 - br label %for.cond5811 -for.cond5811: + br label %for.cond6095 +for.cond6095: %t118 = load i64, ptr %a117 %t119 = icmp slt i64 %t118, %t116 - br i1 %t119, label %for.body5812, label %for.end5814 -for.body5812: + br i1 %t119, label %for.body6096, label %for.end6098 +for.body6096: %t120 = load ptr, ptr %a1 %t121 = load ptr, ptr %a1 %t122 = load %S.ast.Type, ptr %a5 %t123 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t121, %S.ast.Type %t122) - store { ptr, i64, i64 } { ptr @.str.3828, i64 23, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.4041, i64 23, i64 0 }, ptr %a125 store { ptr, i64, i64 } %t123, ptr %a126 call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) %t127 = load { ptr, i64, i64 }, ptr %a124 store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.3829, i64 6, i64 0 }, ptr %a130 + store { ptr, i64, i64 } { ptr @.str.4042, i64 6, i64 0 }, ptr %a130 call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) %t131 = load { ptr, i64, i64 }, ptr %a128 %t132 = load { ptr, i64, i64 }, ptr %a81 @@ -51090,7 +54896,7 @@ for.body5812: call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) %t136 = load { ptr, i64, i64 }, ptr %a133 store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3830, i64 6, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.4043, i64 6, i64 0 }, ptr %a139 call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) %t140 = load { ptr, i64, i64 }, ptr %a137 %t141 = load i64, ptr %a117 @@ -51110,43 +54916,43 @@ for.body5812: %t155 = load { ptr, i64, i64 }, ptr %a28 %t156 = extractvalue { ptr, i64, i64 } %t155, 1 %t157 = icmp uge i64 %t154, %t156 - br i1 %t157, label %range5815, label %inrange5816 -range5815: - call void @finch_panic_index(ptr @.str.3831, i64 3162, i64 %t154, i64 %t156) + br i1 %t157, label %range6099, label %inrange6100 +range6099: + call void @finch_panic_index(ptr @.str.4044, i64 3287, i64 %t154, i64 %t156) unreachable -inrange5816: +inrange6100: %t158 = extractvalue { ptr, i64, i64 } %t155, 0 %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t154 %t160 = load { ptr, i64, i64 }, ptr %t159 %t161 = load { ptr, i64, i64 }, ptr %a149 call void @finch.gen.store(ptr %t150, { ptr, i64, i64 } %t153, { ptr, i64, i64 } %t160, { ptr, i64, i64 } %t161) - br label %for.step5813 -for.step5813: + br label %for.step6097 +for.step6097: %t162 = load i64, ptr %a117 %t163 = add i64 %t162, 1 store i64 %t163, ptr %a117 - br label %for.cond5811 -for.end5814: + br label %for.cond6095 +for.end6098: %t164 = load ptr, ptr %a1 %t165 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3832, i64 41, i64 0 }, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.4045, i64 41, i64 0 }, ptr %a167 store { ptr, i64, i64 } %t165, ptr %a168 call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) %t169 = load { ptr, i64, i64 }, ptr %a166 store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.3833, i64 3, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.4046, i64 3, i64 0 }, ptr %a172 call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) %t173 = load { ptr, i64, i64 }, ptr %a170 %t174 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t173) store { ptr, i64, i64 } %t174, ptr %a175 %t176 = load ptr, ptr %a1 %t177 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3834, i64 30, i64 0 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.4047, i64 30, i64 0 }, ptr %a179 store { ptr, i64, i64 } %t177, ptr %a180 call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) %t181 = load { ptr, i64, i64 }, ptr %a178 store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.3835, i64 6, i64 0 }, ptr %a184 + store { ptr, i64, i64 } { ptr @.str.4048, i64 6, i64 0 }, ptr %a184 call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) %t185 = load { ptr, i64, i64 }, ptr %a182 %t186 = load { ptr, i64, i64 }, ptr %a80 @@ -51155,19 +54961,19 @@ for.end5814: call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) %t190 = load { ptr, i64, i64 }, ptr %a187 store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3836, i64 3, i64 0 }, ptr %a193 + store { ptr, i64, i64 } { ptr @.str.4049, i64 3, i64 0 }, ptr %a193 call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) %t194 = load { ptr, i64, i64 }, ptr %a191 %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t176, { ptr, i64, i64 } %t194) store { ptr, i64, i64 } %t195, ptr %a196 %t197 = load ptr, ptr %a1 %t198 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.3837, i64 30, i64 0 }, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.4050, i64 30, i64 0 }, ptr %a200 store { ptr, i64, i64 } %t198, ptr %a201 call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) %t202 = load { ptr, i64, i64 }, ptr %a199 store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.3838, i64 6, i64 0 }, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.4051, i64 6, i64 0 }, ptr %a205 call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 %t207 = load { ptr, i64, i64 }, ptr %a80 @@ -51176,7 +54982,7 @@ for.end5814: call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) %t211 = load { ptr, i64, i64 }, ptr %a208 store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.3839, i64 3, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.4052, i64 3, i64 0 }, ptr %a214 call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) %t215 = load { ptr, i64, i64 }, ptr %a212 %t216 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t215) @@ -51231,40 +55037,40 @@ entry: %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3840, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4053, i64 3, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br label %logic.from5817 -logic.from5817: - br i1 %t9, label %logic.rhs5818, label %logic.end5819 -logic.rhs5818: + br label %logic.from6101 +logic.from6101: + br i1 %t9, label %logic.rhs6102, label %logic.end6103 +logic.rhs6102: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 %t13 = call i64 @finch.gen.lookup(ptr %t10, { ptr, i64, i64 } %t12) %t14 = icmp slt i64 %t13, 0 - br label %logic.rend5820 -logic.rend5820: - br label %logic.end5819 -logic.end5819: - %t15 = phi i1 [ false, %logic.from5817 ], [ %t14, %logic.rend5820 ] - br i1 %t15, label %then5821, label %endif5823 -then5821: + br label %logic.rend6104 +logic.rend6104: + br label %logic.end6103 +logic.end6103: + %t15 = phi i1 [ false, %logic.from6101 ], [ %t14, %logic.rend6104 ] + br i1 %t15, label %then6105, label %endif6107 +then6105: %t16 = load ptr, ptr %a1 %t17 = load %S.ast.Node, ptr %a2 %t18 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t19 = load { ptr, i64, i64 }, ptr %t18 - store { ptr, i64, i64 } { ptr @.str.3841, i64 28, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4054, i64 28, i64 0 }, ptr %a21 store { ptr, i64, i64 } %t19, ptr %a22 call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) %t23 = load { ptr, i64, i64 }, ptr %a20 store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.3842, i64 1, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4055, i64 1, i64 0 }, ptr %a26 call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) %t27 = load { ptr, i64, i64 }, ptr %a24 call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t27) - br label %endif5823 -endif5823: + br label %endif6107 +endif6107: %t28 = load ptr, ptr %a1 %t29 = load %S.ast.Node, ptr %a2 %t30 = load i1, ptr %a3 @@ -51273,13 +55079,13 @@ endif5823: %t33 = getelementptr inbounds %S.gen.Ref, ptr %a32, i32 0, i32 0 %t34 = load i1, ptr %t33 %t35 = xor i1 %t34, true - br i1 %t35, label %then5824, label %endif5826 -then5824: + br i1 %t35, label %then6108, label %endif6110 +then6108: %t36 = load ptr, ptr %a1 %t37 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.3843, i64 60, i64 0 }) - br label %endif5826 -endif5826: + call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } { ptr @.str.4056, i64 60, i64 0 }) + br label %endif6110 +endif6110: %t38 = getelementptr inbounds %S.gen.Ref, ptr %a32, i32 0, i32 1 %t39 = load %S.gen.Place, ptr %t38 store %S.gen.Place %t39, ptr %a40 @@ -51382,25 +55188,37 @@ entry: %a287 = alloca { ptr, i64, i64 }, align 16 %a288 = alloca { ptr, i64, i64 }, align 16 %a293 = alloca %S.gen.Var, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.ast.Type, align 16 + %a304 = alloca { ptr, i64, i64 }, align 16 + %a305 = alloca { ptr, i64, i64 }, align 16 + %a306 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca %S.ast.Type, align 16 + %a338 = alloca %S.ast.Type, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3844, i64 3, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4057, i64 3, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br i1 %t9, label %then5827, label %endif5829 -then5827: + br i1 %t9, label %then6111, label %endif6113 +then6111: %t10 = load ptr, ptr %a1 %t11 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t12 = load { ptr, i64, i64 }, ptr %t11 @@ -51408,17 +55226,17 @@ then5827: store i64 %t13, ptr %a14 %t15 = load i64, ptr %a14 %t16 = icmp slt i64 %t15, 0 - br label %logic.from5830 -logic.from5830: - br i1 %t16, label %logic.rhs5831, label %logic.end5832 -logic.rhs5831: + br label %logic.from6114 +logic.from6114: + br i1 %t16, label %logic.rhs6115, label %logic.end6116 +logic.rhs6115: %t17 = load ptr, ptr %a1 %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic5833, label %ok5834 -panic5833: - call void @finch_panic(ptr @.str.3845, i64 3186, ptr @.str.3846) + br i1 %t18, label %panic6117, label %ok6118 +panic6117: + call void @finch_panic(ptr @.str.4058, i64 3311, ptr @.str.4059) unreachable -ok5834: +ok6118: %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 24 %t20 = getelementptr inbounds %S.cimport.CImports, ptr %t19, i32 0, i32 1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51426,20 +55244,20 @@ ok5834: store { ptr, i64, i64 } %t22, ptr %a23 %t24 = call i64 @finch_map_find(ptr %t20, ptr %a23, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t25 = icmp sge i64 %t24, 0 - br label %logic.rend5835 -logic.rend5835: - br label %logic.end5832 -logic.end5832: - %t26 = phi i1 [ false, %logic.from5830 ], [ %t25, %logic.rend5835 ] - br i1 %t26, label %then5836, label %endif5838 -then5836: + br label %logic.rend6119 +logic.rend6119: + br label %logic.end6116 +logic.end6116: + %t26 = phi i1 [ false, %logic.from6114 ], [ %t25, %logic.rend6119 ] + br i1 %t26, label %then6120, label %endif6122 +then6120: %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic5839, label %ok5840 -panic5839: - call void @finch_panic(ptr @.str.3847, i64 3187, ptr @.str.3848) + br i1 %t28, label %panic6123, label %ok6124 +panic6123: + call void @finch_panic(ptr @.str.4060, i64 3312, ptr @.str.4061) unreachable -ok5840: +ok6124: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 24 %t30 = getelementptr inbounds %S.cimport.CImports, ptr %t29, i32 0, i32 1 %t31 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51447,14 +55265,14 @@ ok5840: store { ptr, i64, i64 } %t32, ptr %a33 %t34 = call i64 @finch_map_find(ptr %t30, ptr %a33, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t35 = icmp slt i64 %t34, 0 - br i1 %t35, label %map.missing5841, label %map.found5842 -map.missing5841: + br i1 %t35, label %map.missing6125, label %map.found6126 +map.missing6125: store { ptr, i64, i64 } zeroinitializer, ptr %a36 store { ptr, i64, i64 } %t32, ptr %a37 call void @finch_buf_str(ptr %a36, ptr %a37, i32 1) - call void @finch_map_missing(ptr @.str.3849, i64 3187, ptr %a36) + call void @finch_map_missing(ptr @.str.4062, i64 3312, ptr %a36) unreachable -map.found5842: +map.found6126: %t38 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t30, i32 0, i32 0 %t39 = load ptr, ptr %t38 %t40 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t39, i64 %t34 @@ -51466,44 +55284,44 @@ map.found5842: store %S.cimport.CConst %t45, ptr %a46 %t47 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 0 %t48 = load i1, ptr %t47 - br i1 %t48, label %then5843, label %endif5845 -then5843: + br i1 %t48, label %then6127, label %endif6129 +then6127: %t49 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t50 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 3 %t51 = load { ptr, i64, i64 }, ptr %t50 %t52 = call { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %t51) %t53 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t52, 0 - %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3850, i64 5, i64 0 }) + %t54 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4063, i64 5, i64 0 }) %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 ret %S.gen.Ref %t57 -endif5845: +endif6129: %t58 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t59 = getelementptr inbounds %S.cimport.CConst, ptr %a46, i32 0, i32 1 %t60 = load i64, ptr %t59 call void @finch_str_from_int(ptr %a61, i64 %t60) %t62 = load { ptr, i64, i64 }, ptr %a61 %t63 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t62, 0 - %t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3851, i64 3, i64 0 }) + %t64 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4064, i64 3, i64 0 }) %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 ret %S.gen.Ref %t67 -endif5838: +endif6122: %t68 = load i64, ptr %a14 %t69 = icmp slt i64 %t68, 0 - br label %logic.from5846 -logic.from5846: - br i1 %t69, label %logic.rhs5847, label %logic.end5848 -logic.rhs5847: + br label %logic.from6130 +logic.from6130: + br i1 %t69, label %logic.rhs6131, label %logic.end6132 +logic.rhs6131: %t70 = load ptr, ptr %a1 %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic5849, label %ok5850 -panic5849: - call void @finch_panic(ptr @.str.3852, i64 3194, ptr @.str.3853) + br i1 %t71, label %panic6133, label %ok6134 +panic6133: + call void @finch_panic(ptr @.str.4065, i64 3319, ptr @.str.4066) unreachable -ok5850: +ok6134: %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 24 %t73 = getelementptr inbounds %S.cimport.CImports, ptr %t72, i32 0, i32 2 %t74 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51512,135 +55330,135 @@ ok5850: %t77 = call i64 @finch_map_find(ptr %t73, ptr %a76, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t78 = icmp sge i64 %t77, 0 %t79 = xor i1 %t78, true - br label %logic.rend5851 -logic.rend5851: - br label %logic.end5848 -logic.end5848: - %t80 = phi i1 [ false, %logic.from5846 ], [ %t79, %logic.rend5851 ] - br label %logic.from5852 -logic.from5852: - br i1 %t80, label %logic.rhs5853, label %logic.end5854 -logic.rhs5853: + br label %logic.rend6135 +logic.rend6135: + br label %logic.end6132 +logic.end6132: + %t80 = phi i1 [ false, %logic.from6130 ], [ %t79, %logic.rend6135 ] + br label %logic.from6136 +logic.from6136: + br i1 %t80, label %logic.rhs6137, label %logic.end6138 +logic.rhs6137: %t81 = load ptr, ptr %a1 %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5855, label %ok5856 -panic5855: - call void @finch_panic(ptr @.str.3854, i64 3194, ptr @.str.3855) + br i1 %t82, label %panic6139, label %ok6140 +panic6139: + call void @finch_panic(ptr @.str.4067, i64 3319, ptr @.str.4068) unreachable -ok5856: +ok6140: %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 24 %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.3856, i64 7, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.4069, i64 7, i64 0 }, ptr %a85 %t86 = call i64 @finch_map_find(ptr %t84, ptr %a85, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t87 = icmp sge i64 %t86, 0 - br label %logic.rend5857 -logic.rend5857: - br label %logic.end5854 -logic.end5854: - %t88 = phi i1 [ false, %logic.from5852 ], [ %t87, %logic.rend5857 ] - br label %logic.from5858 -logic.from5858: - br i1 %t88, label %logic.rhs5859, label %logic.end5860 -logic.rhs5859: + br label %logic.rend6141 +logic.rend6141: + br label %logic.end6138 +logic.end6138: + %t88 = phi i1 [ false, %logic.from6136 ], [ %t87, %logic.rend6141 ] + br label %logic.from6142 +logic.from6142: + br i1 %t88, label %logic.rhs6143, label %logic.end6144 +logic.rhs6143: %t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t90 = load { ptr, i64, i64 }, ptr %t89 store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3857, i64 5, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4070, i64 5, i64 0 }, ptr %a92 %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) %t94 = icmp ne i32 %t93, 0 - br label %logic.from5861 -logic.from5861: - br i1 %t94, label %logic.end5863, label %logic.rhs5862 -logic.rhs5862: + br label %logic.from6145 +logic.from6145: + br i1 %t94, label %logic.end6147, label %logic.rhs6146 +logic.rhs6146: %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t96 = load { ptr, i64, i64 }, ptr %t95 store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3858, i64 6, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4071, i64 6, i64 0 }, ptr %a98 %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) %t100 = icmp ne i32 %t99, 0 - br label %logic.rend5864 -logic.rend5864: - br label %logic.end5863 -logic.end5863: - %t101 = phi i1 [ true, %logic.from5861 ], [ %t100, %logic.rend5864 ] - br label %logic.from5865 -logic.from5865: - br i1 %t101, label %logic.end5867, label %logic.rhs5866 -logic.rhs5866: + br label %logic.rend6148 +logic.rend6148: + br label %logic.end6147 +logic.end6147: + %t101 = phi i1 [ true, %logic.from6145 ], [ %t100, %logic.rend6148 ] + br label %logic.from6149 +logic.from6149: + br i1 %t101, label %logic.end6151, label %logic.rhs6150 +logic.rhs6150: %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t103 = load { ptr, i64, i64 }, ptr %t102 store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3859, i64 6, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.4072, i64 6, i64 0 }, ptr %a105 %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) %t107 = icmp ne i32 %t106, 0 - br label %logic.rend5868 -logic.rend5868: - br label %logic.end5867 -logic.end5867: - %t108 = phi i1 [ true, %logic.from5865 ], [ %t107, %logic.rend5868 ] - br label %logic.rend5869 -logic.rend5869: - br label %logic.end5860 -logic.end5860: - %t109 = phi i1 [ false, %logic.from5858 ], [ %t108, %logic.rend5869 ] - br i1 %t109, label %then5870, label %endif5872 -then5870: - store { ptr, i64, i64 } { ptr @.str.3860, i64 1, i64 0 }, ptr %a110 + br label %logic.rend6152 +logic.rend6152: + br label %logic.end6151 +logic.end6151: + %t108 = phi i1 [ true, %logic.from6149 ], [ %t107, %logic.rend6152 ] + br label %logic.rend6153 +logic.rend6153: + br label %logic.end6144 +logic.end6144: + %t109 = phi i1 [ false, %logic.from6142 ], [ %t108, %logic.rend6153 ] + br i1 %t109, label %then6154, label %endif6156 +then6154: + store { ptr, i64, i64 } { ptr @.str.4073, i64 1, i64 0 }, ptr %a110 %t111 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t112 = load { ptr, i64, i64 }, ptr %t111 store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.3861, i64 5, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.4074, i64 5, i64 0 }, ptr %a114 %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then5873, label %else5874 -then5873: - store { ptr, i64, i64 } { ptr @.str.3862, i64 1, i64 0 }, ptr %a110 - br label %endif5875 -else5874: + br i1 %t116, label %then6157, label %else6158 +then6157: + store { ptr, i64, i64 } { ptr @.str.4075, i64 1, i64 0 }, ptr %a110 + br label %endif6159 +else6158: %t117 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t118 = load { ptr, i64, i64 }, ptr %t117 store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.3863, i64 6, i64 0 }, ptr %a120 + store { ptr, i64, i64 } { ptr @.str.4076, i64 6, i64 0 }, ptr %a120 %t121 = call i32 @finch_str_eq(ptr %a119, ptr %a120) %t122 = icmp ne i32 %t121, 0 - br i1 %t122, label %then5876, label %endif5878 -then5876: - store { ptr, i64, i64 } { ptr @.str.3864, i64 1, i64 0 }, ptr %a110 - br label %endif5878 -endif5878: - br label %endif5875 -endif5875: + br i1 %t122, label %then6160, label %endif6162 +then6160: + store { ptr, i64, i64 } { ptr @.str.4077, i64 1, i64 0 }, ptr %a110 + br label %endif6162 +endif6162: + br label %endif6159 +endif6159: %t123 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t124 = load ptr, ptr %a1 %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3865, i64 31, i64 0 }, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4078, i64 31, i64 0 }, ptr %a127 store { ptr, i64, i64 } %t125, ptr %a128 call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) %t129 = load { ptr, i64, i64 }, ptr %a126 store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.3866, i64 1, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4079, i64 1, i64 0 }, ptr %a132 call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t133) %t135 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t136 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3867, i64 3, i64 0 }) + %t136 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4080, i64 3, i64 0 }) %t137 = insertvalue %S.gen.Val %t135, %S.ast.Type %t136, 1 %t138 = insertvalue %S.gen.Ref %t123, %S.gen.Val %t137, 2 ret %S.gen.Ref %t138 -endif5872: +endif6156: %t139 = load i64, ptr %a14 %t140 = icmp slt i64 %t139, 0 - br label %logic.from5879 -logic.from5879: - br i1 %t140, label %logic.rhs5880, label %logic.end5881 -logic.rhs5880: + br label %logic.from6163 +logic.from6163: + br i1 %t140, label %logic.rhs6164, label %logic.end6165 +logic.rhs6164: %t141 = load ptr, ptr %a1 %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5882, label %ok5883 -panic5882: - call void @finch_panic(ptr @.str.3868, i64 3203, ptr @.str.3869) + br i1 %t142, label %panic6166, label %ok6167 +panic6166: + call void @finch_panic(ptr @.str.4081, i64 3328, ptr @.str.4082) unreachable -ok5883: +ok6167: %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 24 %t144 = getelementptr inbounds %S.cimport.CImports, ptr %t143, i32 0, i32 2 %t145 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51648,21 +55466,21 @@ ok5883: store { ptr, i64, i64 } %t146, ptr %a147 %t148 = call i64 @finch_map_find(ptr %t144, ptr %a147, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t149 = icmp sge i64 %t148, 0 - br label %logic.rend5884 -logic.rend5884: - br label %logic.end5881 -logic.end5881: - %t150 = phi i1 [ false, %logic.from5879 ], [ %t149, %logic.rend5884 ] - br i1 %t150, label %then5885, label %endif5887 -then5885: + br label %logic.rend6168 +logic.rend6168: + br label %logic.end6165 +logic.end6165: + %t150 = phi i1 [ false, %logic.from6163 ], [ %t149, %logic.rend6168 ] + br i1 %t150, label %then6169, label %endif6171 +then6169: %t151 = load ptr, ptr %a1 %t152 = load ptr, ptr %a1 %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic5888, label %ok5889 -panic5888: - call void @finch_panic(ptr @.str.3870, i64 3204, ptr @.str.3871) + br i1 %t153, label %panic6172, label %ok6173 +panic6172: + call void @finch_panic(ptr @.str.4083, i64 3329, ptr @.str.4084) unreachable -ok5889: +ok6173: %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 24 %t155 = getelementptr inbounds %S.cimport.CImports, ptr %t154, i32 0, i32 2 %t156 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51670,14 +55488,14 @@ ok5889: store { ptr, i64, i64 } %t157, ptr %a158 %t159 = call i64 @finch_map_find(ptr %t155, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t160 = icmp slt i64 %t159, 0 - br i1 %t160, label %map.missing5890, label %map.found5891 -map.missing5890: + br i1 %t160, label %map.missing6174, label %map.found6175 +map.missing6174: store { ptr, i64, i64 } zeroinitializer, ptr %a161 store { ptr, i64, i64 } %t157, ptr %a162 call void @finch_buf_str(ptr %a161, ptr %a162, i32 1) - call void @finch_map_missing(ptr @.str.3872, i64 3204, ptr %a161) + call void @finch_map_missing(ptr @.str.4085, i64 3329, ptr %a161) unreachable -map.found5891: +map.found6175: %t163 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t155, i32 0, i32 0 %t164 = load ptr, ptr %t163 %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t164, i64 %t159 @@ -51688,16 +55506,16 @@ map.found5891: store %S.ast.Type %t169, ptr %a170 %t171 = load ptr, ptr %a1 %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5892, label %ok5893 -panic5892: - call void @finch_panic(ptr @.str.3873, i64 3205, ptr @.str.3874) + br i1 %t172, label %panic6176, label %ok6177 +panic6176: + call void @finch_panic(ptr @.str.4086, i64 3330, ptr @.str.4087) unreachable -ok5893: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 36 +ok6177: + %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 38 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 %t175 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } { ptr @.str.3875, i64 2, i64 0 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4088, i64 2, i64 0 }, ptr %a178 store { ptr, i64, i64 } %t176, ptr %a179 call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) %t180 = load { ptr, i64, i64 }, ptr %a177 @@ -51705,44 +55523,44 @@ ok5893: %t182 = load i64, ptr %t174 %t183 = load ptr, ptr %t173 store i64 0, ptr %a184 - br label %find.cond5894 -find.cond5894: + br label %find.cond6178 +find.cond6178: %t185 = load i64, ptr %a184 %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body5895, label %find.end5898 -find.body5895: + br i1 %t186, label %find.body6179, label %find.end6182 +find.body6179: %t187 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i64 %t185 %t188 = load { ptr, i64, i64 }, ptr %t187 store { ptr, i64, i64 } %t188, ptr %a189 store { ptr, i64, i64 } %t180, ptr %a190 %t191 = call i32 @finch_str_eq(ptr %a189, ptr %a190) %t192 = icmp ne i32 %t191, 0 - br i1 %t192, label %find.hit5896, label %find.next5897 -find.hit5896: + br i1 %t192, label %find.hit6180, label %find.next6181 +find.hit6180: store i64 %t185, ptr %a181 - br label %find.end5898 -find.next5897: + br label %find.end6182 +find.next6181: %t193 = add i64 %t185, 1 store i64 %t193, ptr %a184 - br label %find.cond5894 -find.end5898: + br label %find.cond6178 +find.end6182: %t194 = load i64, ptr %a181 %t195 = icmp sge i64 %t194, 0 %t196 = xor i1 %t195, true - br i1 %t196, label %then5899, label %endif5901 -then5899: + br i1 %t196, label %then6183, label %endif6185 +then6183: %t197 = load ptr, ptr %a1 %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3876, i64 3206, ptr @.str.3877) + br i1 %t198, label %panic6186, label %ok6187 +panic6186: + call void @finch_panic(ptr @.str.4089, i64 3331, ptr @.str.4090) unreachable -ok5903: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 36 +ok6187: + %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 38 %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i32 0, i32 1 %t201 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } { ptr @.str.3878, i64 2, i64 0 }, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.4091, i64 2, i64 0 }, ptr %a204 store { ptr, i64, i64 } %t202, ptr %a205 call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 @@ -51755,21 +55573,21 @@ ok5903: store i64 %t208, ptr %t200 %t211 = load ptr, ptr %a1 %t212 = icmp eq ptr %t211, null - br i1 %t212, label %panic5904, label %ok5905 -panic5904: - call void @finch_panic(ptr @.str.3879, i64 3207, ptr @.str.3880) + br i1 %t212, label %panic6188, label %ok6189 +panic6188: + call void @finch_panic(ptr @.str.4092, i64 3332, ptr @.str.4093) unreachable -ok5905: +ok6189: %t213 = getelementptr inbounds %S.gen.Gen, ptr %t211, i32 0, i32 2 %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t213, i32 0, i32 1 %t215 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t216 = load { ptr, i64, i64 }, ptr %t215 - store { ptr, i64, i64 } { ptr @.str.3881, i64 1, i64 0 }, ptr %a218 + store { ptr, i64, i64 } { ptr @.str.4094, i64 1, i64 0 }, ptr %a218 store { ptr, i64, i64 } %t216, ptr %a219 call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 store { ptr, i64, i64 } %t220, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.3882, i64 19, i64 0 }, ptr %a223 + store { ptr, i64, i64 } { ptr @.str.4095, i64 19, i64 0 }, ptr %a223 call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) %t224 = load { ptr, i64, i64 }, ptr %a221 %t225 = load ptr, ptr %a1 @@ -51786,12 +55604,12 @@ ok5905: %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i64 %t232 store { ptr, i64, i64 } %t231, ptr %t235 store i64 %t233, ptr %t214 - br label %endif5901 -endif5901: + br label %endif6185 +endif6185: %t236 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 %t237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } { ptr @.str.3883, i64 1, i64 0 }, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.4096, i64 1, i64 0 }, ptr %a240 store { ptr, i64, i64 } %t238, ptr %a241 call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) %t242 = load { ptr, i64, i64 }, ptr %a239 @@ -51803,27 +55621,27 @@ endif5901: %t248 = insertvalue %S.gen.Place %t243, %S.ast.Type %t247, 1 %t249 = insertvalue %S.gen.Ref %t236, %S.gen.Place %t248, 1 ret %S.gen.Ref %t249 -endif5887: +endif6171: %t250 = load i64, ptr %a14 %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then5906, label %endif5908 -then5906: + br i1 %t251, label %then6190, label %endif6192 +then6190: %t252 = load ptr, ptr %a1 %t253 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t254 = load { ptr, i64, i64 }, ptr %t253 %t255 = call i1 @finch.gen.imports(ptr %t252, { ptr, i64, i64 } %t254) - br i1 %t255, label %then5909, label %endif5911 -then5909: + br i1 %t255, label %then6193, label %endif6195 +then6193: %t256 = load ptr, ptr %a1 %t257 = load %S.ast.Node, ptr %a2 %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } { ptr @.str.3884, i64 1, i64 0 }, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.4097, i64 1, i64 0 }, ptr %a261 store { ptr, i64, i64 } %t259, ptr %a262 call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) %t263 = load { ptr, i64, i64 }, ptr %a260 store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3885, i64 43, i64 0 }, ptr %a266 + store { ptr, i64, i64 } { ptr @.str.4098, i64 43, i64 0 }, ptr %a266 call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) %t267 = load { ptr, i64, i64 }, ptr %a264 %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -51833,81 +55651,116 @@ then5909: call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) %t273 = load { ptr, i64, i64 }, ptr %a270 store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3886, i64 10, i64 0 }, ptr %a276 + store { ptr, i64, i64 } { ptr @.str.4099, i64 10, i64 0 }, ptr %a276 call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) %t277 = load { ptr, i64, i64 }, ptr %a274 call void @finch.gen.fail(ptr %t256, %S.ast.Node %t257, { ptr, i64, i64 } %t277) - br label %endif5911 -endif5911: + br label %endif6195 +endif6195: %t278 = load ptr, ptr %a1 %t279 = load %S.ast.Node, ptr %a2 %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } { ptr @.str.3887, i64 28, i64 0 }, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.4100, i64 28, i64 0 }, ptr %a283 store { ptr, i64, i64 } %t281, ptr %a284 call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) %t285 = load { ptr, i64, i64 }, ptr %a282 store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.3888, i64 1, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4101, i64 1, i64 0 }, ptr %a288 call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) %t289 = load { ptr, i64, i64 }, ptr %a286 call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } %t289) - br label %endif5908 -endif5908: + br label %endif6192 +endif6192: %t290 = load ptr, ptr %a1 %t291 = load i64, ptr %a14 %t292 = call %S.gen.Var @finch.gen.varAt(ptr %t290, i64 %t291) store %S.gen.Var %t292, ptr %a293 - %t294 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t295 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 2 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - %t300 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t299, 0 + %t294 = load ptr, ptr %a1 + %t295 = load %S.ast.Node, ptr %a2 + %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t297 = load i64, ptr %t296 + %t298 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 + %t300 = load i64, ptr %t299 %t301 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 1 %t302 = load %S.ast.Type, ptr %t301 - store %S.ast.Type %t302, ptr %a303 - call void @finch.copy.S_ast_Type(ptr %a304, ptr %a303) - %t305 = load %S.ast.Type, ptr %a304 - %t306 = insertvalue %S.gen.Place %t300, %S.ast.Type %t305, 1 - %t307 = insertvalue %S.gen.Ref %t294, %S.gen.Place %t306, 1 - ret %S.gen.Ref %t307 -endif5829: - %t308 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t309 = load { ptr, i64, i64 }, ptr %t308 - store { ptr, i64, i64 } %t309, ptr %a310 - store { ptr, i64, i64 } { ptr @.str.3889, i64 6, i64 0 }, ptr %a311 - %t312 = call i32 @finch_str_eq(ptr %a310, ptr %a311) - %t313 = icmp ne i32 %t312, 0 - br i1 %t313, label %then5912, label %endif5914 -then5912: - %t314 = load ptr, ptr %a1 - %t315 = load %S.ast.Node, ptr %a2 - %t316 = load i1, ptr %a3 - %t317 = call %S.gen.Ref @finch.gen.member(ptr %t314, %S.ast.Node %t315, i1 %t316) - ret %S.gen.Ref %t317 -endif5914: - %t318 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3890, i64 5, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br i1 %t323, label %then5915, label %endif5917 -then5915: - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load i1, ptr %a3 - %t327 = call %S.gen.Ref @finch.gen.index(ptr %t324, %S.ast.Node %t325, i1 %t326) - ret %S.gen.Ref %t327 -endif5917: - %t328 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t329 = load ptr, ptr %a1 - %t330 = load %S.ast.Node, ptr %a2 - %t331 = call %S.gen.Val @finch.gen.expr(ptr %t329, %S.ast.Node %t330) - %t332 = insertvalue %S.gen.Ref %t328, %S.gen.Val %t331, 2 - ret %S.gen.Ref %t332 + %t303 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t302) + store { ptr, i64, i64 } { ptr @.str.4102, i64 9, i64 0 }, ptr %a305 + store { ptr, i64, i64 } %t303, ptr %a306 + call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) + %t307 = load { ptr, i64, i64 }, ptr %a304 + store { ptr, i64, i64 } %t307, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.4103, i64 1, i64 0 }, ptr %a310 + call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) + %t311 = load { ptr, i64, i64 }, ptr %a308 + %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t313 = load { ptr, i64, i64 }, ptr %t312 + store { ptr, i64, i64 } %t311, ptr %a315 + store { ptr, i64, i64 } %t313, ptr %a316 + call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) + %t317 = load { ptr, i64, i64 }, ptr %a314 + store { ptr, i64, i64 } %t317, ptr %a319 + store { ptr, i64, i64 } { ptr @.str.4104, i64 4, i64 0 }, ptr %a320 + call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) + %t321 = load { ptr, i64, i64 }, ptr %a318 + %t322 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 5 + %t323 = load { ptr, i64, i64 }, ptr %t322 + %t324 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 6 + %t325 = load i64, ptr %t324 + %t326 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 7 + %t327 = load i64, ptr %t326 + call void @finch.gen.noteRef(ptr %t294, %S.ast.Node %t295, i64 %t297, i64 %t300, { ptr, i64, i64 } %t321, { ptr, i64, i64 } %t323, i64 %t325, i64 %t327) + %t328 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t329 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 2 + %t330 = load { ptr, i64, i64 }, ptr %t329 + store { ptr, i64, i64 } %t330, ptr %a331 + call void @finch_str_copy(ptr %a332, ptr %a331) + %t333 = load { ptr, i64, i64 }, ptr %a332 + %t334 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t333, 0 + %t335 = getelementptr inbounds %S.gen.Var, ptr %a293, i32 0, i32 1 + %t336 = load %S.ast.Type, ptr %t335 + store %S.ast.Type %t336, ptr %a337 + call void @finch.copy.S_ast_Type(ptr %a338, ptr %a337) + %t339 = load %S.ast.Type, ptr %a338 + %t340 = insertvalue %S.gen.Place %t334, %S.ast.Type %t339, 1 + %t341 = insertvalue %S.gen.Ref %t328, %S.gen.Place %t340, 1 + ret %S.gen.Ref %t341 +endif6113: + %t342 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t343, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.4105, i64 6, i64 0 }, ptr %a345 + %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) + %t347 = icmp ne i32 %t346, 0 + br i1 %t347, label %then6196, label %endif6198 +then6196: + %t348 = load ptr, ptr %a1 + %t349 = load %S.ast.Node, ptr %a2 + %t350 = load i1, ptr %a3 + %t351 = call %S.gen.Ref @finch.gen.member(ptr %t348, %S.ast.Node %t349, i1 %t350) + ret %S.gen.Ref %t351 +endif6198: + %t352 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 + %t353 = load { ptr, i64, i64 }, ptr %t352 + store { ptr, i64, i64 } %t353, ptr %a354 + store { ptr, i64, i64 } { ptr @.str.4106, i64 5, i64 0 }, ptr %a355 + %t356 = call i32 @finch_str_eq(ptr %a354, ptr %a355) + %t357 = icmp ne i32 %t356, 0 + br i1 %t357, label %then6199, label %endif6201 +then6199: + %t358 = load ptr, ptr %a1 + %t359 = load %S.ast.Node, ptr %a2 + %t360 = load i1, ptr %a3 + %t361 = call %S.gen.Ref @finch.gen.index(ptr %t358, %S.ast.Node %t359, i1 %t360) + ret %S.gen.Ref %t361 +endif6201: + %t362 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t363 = load ptr, ptr %a1 + %t364 = load %S.ast.Node, ptr %a2 + %t365 = call %S.gen.Val @finch.gen.expr(ptr %t363, %S.ast.Node %t364) + %t366 = insertvalue %S.gen.Ref %t362, %S.gen.Val %t365, 2 + ret %S.gen.Ref %t366 } define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { @@ -51955,61 +55808,61 @@ entry: store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3892, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.4108, i64 1, i64 0 }, ptr %a10 %t11 = call i32 @finch_str_starts(ptr %a8, ptr %a10) %t12 = icmp ne i32 %t11, 0 - br i1 %t12, label %then5918, label %endif5920 -then5918: + br i1 %t12, label %then6202, label %endif6204 +then6202: %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.4109, i64 1, i64 0 }, ptr %a15 store { ptr, i64, i64 } %t13, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a6 - br label %endif5920 -endif5920: + br label %endif6204 +endif6204: %t18 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.3895, i64 1, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4111, i64 1, i64 0 }, ptr %a21 %t22 = call i64 @finch_str_find(ptr %a19, ptr %a21) %t23 = icmp sge i64 %t22, 0 %t24 = xor i1 %t23, true - br i1 %t24, label %then5921, label %endif5923 -then5921: + br i1 %t24, label %then6205, label %endif6207 +then6205: %t25 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3897, i64 1, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4113, i64 1, i64 0 }, ptr %a28 %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) store i64 %t29, ptr %a30 %t31 = load i64, ptr %a30 %t32 = icmp slt i64 %t31, 0 - br i1 %t32, label %then5924, label %endif5926 -then5924: + br i1 %t32, label %then6208, label %endif6210 +then6208: %t33 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3899, i64 1, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.4115, i64 1, i64 0 }, ptr %a36 %t37 = call i64 @finch_str_find(ptr %a34, ptr %a36) store i64 %t37, ptr %a30 - br label %endif5926 -endif5926: + br label %endif6210 +endif6210: %t38 = load i64, ptr %a30 %t39 = icmp slt i64 %t38, 0 - br i1 %t39, label %then5927, label %endif5929 -then5927: + br i1 %t39, label %then6211, label %endif6213 +then6211: %t40 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.3900, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4116, i64 2, i64 0 }, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 ret { ptr, i64, i64 } %t44 -endif5929: +endif6213: %t45 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t45, ptr %a46 %t48 = load i64, ptr %a30 - call void @finch_str_sub(ptr %a47, ptr %a46, i64 0, i64 %t48, ptr @.str.3901, i64 3243) + call void @finch_str_sub(ptr %a47, ptr %a46, i64 0, i64 %t48, ptr @.str.4117, i64 3369) %t49 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3902, i64 2, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.4118, i64 2, i64 0 }, ptr %a52 call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) %t53 = load { ptr, i64, i64 }, ptr %a50 %t54 = load { ptr, i64, i64 }, ptr %a6 @@ -52017,14 +55870,14 @@ endif5929: %t57 = load i64, ptr %a30 %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t59 = load i64, ptr %t58 - call void @finch_str_sub(ptr %a56, ptr %a55, i64 %t57, i64 %t59, ptr @.str.3903, i64 3243) + call void @finch_str_sub(ptr %a56, ptr %a55, i64 %t57, i64 %t59, ptr @.str.4119, i64 3369) %t60 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t53, ptr %a62 store { ptr, i64, i64 } %t60, ptr %a63 call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) %t64 = load { ptr, i64, i64 }, ptr %a61 ret { ptr, i64, i64 } %t64 -endif5923: +endif6207: %t65 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t65, ptr %a66 call void @finch_str_copy(ptr %a67, ptr %a66) @@ -52047,133 +55900,133 @@ entry: %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3904, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4120, i64 3, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br label %logic.from5930 -logic.from5930: - br i1 %t8, label %logic.rhs5931, label %logic.end5932 -logic.rhs5931: + br label %logic.from6214 +logic.from6214: + br i1 %t8, label %logic.rhs6215, label %logic.end6216 +logic.rhs6215: %t9 = load ptr, ptr %a1 %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t11 = load { ptr, i64, i64 }, ptr %t10 %t12 = call i64 @finch.gen.lookup(ptr %t9, { ptr, i64, i64 } %t11) %t13 = icmp slt i64 %t12, 0 - br label %logic.rend5933 -logic.rend5933: - br label %logic.end5932 -logic.end5932: - %t14 = phi i1 [ false, %logic.from5930 ], [ %t13, %logic.rend5933 ] - br i1 %t14, label %then5934, label %endif5936 -then5934: + br label %logic.rend6217 +logic.rend6217: + br label %logic.end6216 +logic.end6216: + %t14 = phi i1 [ false, %logic.from6214 ], [ %t13, %logic.rend6217 ] + br i1 %t14, label %then6218, label %endif6220 +then6218: %t15 = load ptr, ptr %a1 %t16 = load ptr, ptr %a1 %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic5937, label %ok5938 -panic5937: - call void @finch_panic(ptr @.str.3905, i64 3251, ptr @.str.3906) + br i1 %t17, label %panic6221, label %ok6222 +panic6221: + call void @finch_panic(ptr @.str.4121, i64 3377, ptr @.str.4122) unreachable -ok5938: +ok6222: %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 13 %t19 = load { ptr, i64, i64 }, ptr %t18 %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t21 = load { ptr, i64, i64 }, ptr %t20 %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) ret i64 %t22 -endif5936: +endif6220: %t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 %t24 = load { ptr, i64, i64 }, ptr %t23 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.3907, i64 6, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4123, i64 6, i64 0 }, ptr %a26 %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) %t28 = icmp ne i32 %t27, 0 - br label %logic.from5939 -logic.from5939: - br i1 %t28, label %logic.rhs5940, label %logic.end5941 -logic.rhs5940: + br label %logic.from6223 +logic.from6223: + br i1 %t28, label %logic.rhs6224, label %logic.end6225 +logic.rhs6224: %t29 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t30 = load { ptr, i64, i64 }, ptr %t29 %t31 = extractvalue { ptr, i64, i64 } %t30, 1 %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range5942, label %inrange5943 -range5942: - call void @finch_panic_index(ptr @.str.3908, i64 3253, i64 0, i64 %t31) + br i1 %t32, label %range6226, label %inrange6227 +range6226: + call void @finch_panic_index(ptr @.str.4124, i64 3379, i64 0, i64 %t31) unreachable -inrange5943: +inrange6227: %t33 = extractvalue { ptr, i64, i64 } %t30, 0 %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 0 %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i32 0, i32 0 %t36 = load { ptr, i64, i64 }, ptr %t35 store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3909, i64 3, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4125, i64 3, i64 0 }, ptr %a38 %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) %t40 = icmp ne i32 %t39, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5941 -logic.end5941: - %t41 = phi i1 [ false, %logic.from5939 ], [ %t40, %logic.rend5944 ] - br label %logic.from5945 -logic.from5945: - br i1 %t41, label %logic.rhs5946, label %logic.end5947 -logic.rhs5946: + br label %logic.rend6228 +logic.rend6228: + br label %logic.end6225 +logic.end6225: + %t41 = phi i1 [ false, %logic.from6223 ], [ %t40, %logic.rend6228 ] + br label %logic.from6229 +logic.from6229: + br i1 %t41, label %logic.rhs6230, label %logic.end6231 +logic.rhs6230: %t42 = load ptr, ptr %a1 %t43 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t44 = load { ptr, i64, i64 }, ptr %t43 %t45 = extractvalue { ptr, i64, i64 } %t44, 1 %t46 = icmp uge i64 0, %t45 - br i1 %t46, label %range5948, label %inrange5949 -range5948: - call void @finch_panic_index(ptr @.str.3910, i64 3253, i64 0, i64 %t45) + br i1 %t46, label %range6232, label %inrange6233 +range6232: + call void @finch_panic_index(ptr @.str.4126, i64 3379, i64 0, i64 %t45) unreachable -inrange5949: +inrange6233: %t47 = extractvalue { ptr, i64, i64 } %t44, 0 %t48 = getelementptr inbounds %S.ast.Node, ptr %t47, i64 0 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i32 0, i32 1 %t50 = load { ptr, i64, i64 }, ptr %t49 %t51 = call i64 @finch.gen.lookup(ptr %t42, { ptr, i64, i64 } %t50) %t52 = icmp slt i64 %t51, 0 - br label %logic.rend5950 -logic.rend5950: - br label %logic.end5947 -logic.end5947: - %t53 = phi i1 [ false, %logic.from5945 ], [ %t52, %logic.rend5950 ] - br label %logic.from5951 -logic.from5951: - br i1 %t53, label %logic.rhs5952, label %logic.end5953 -logic.rhs5952: + br label %logic.rend6234 +logic.rend6234: + br label %logic.end6231 +logic.end6231: + %t53 = phi i1 [ false, %logic.from6229 ], [ %t52, %logic.rend6234 ] + br label %logic.from6235 +logic.from6235: + br i1 %t53, label %logic.rhs6236, label %logic.end6237 +logic.rhs6236: %t54 = load ptr, ptr %a1 %t55 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t56 = load { ptr, i64, i64 }, ptr %t55 %t57 = extractvalue { ptr, i64, i64 } %t56, 1 %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range5954, label %inrange5955 -range5954: - call void @finch_panic_index(ptr @.str.3911, i64 3253, i64 0, i64 %t57) + br i1 %t58, label %range6238, label %inrange6239 +range6238: + call void @finch_panic_index(ptr @.str.4127, i64 3379, i64 0, i64 %t57) unreachable -inrange5955: +inrange6239: %t59 = extractvalue { ptr, i64, i64 } %t56, 0 %t60 = getelementptr inbounds %S.ast.Node, ptr %t59, i64 0 %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i32 0, i32 1 %t62 = load { ptr, i64, i64 }, ptr %t61 %t63 = call i1 @finch.gen.imports(ptr %t54, { ptr, i64, i64 } %t62) - br label %logic.rend5956 -logic.rend5956: - br label %logic.end5953 -logic.end5953: - %t64 = phi i1 [ false, %logic.from5951 ], [ %t63, %logic.rend5956 ] - br i1 %t64, label %then5957, label %endif5959 -then5957: + br label %logic.rend6240 +logic.rend6240: + br label %logic.end6237 +logic.end6237: + %t64 = phi i1 [ false, %logic.from6235 ], [ %t63, %logic.rend6240 ] + br i1 %t64, label %then6241, label %endif6243 +then6241: %t65 = load ptr, ptr %a1 %t66 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t67 = load { ptr, i64, i64 }, ptr %t66 %t68 = extractvalue { ptr, i64, i64 } %t67, 1 %t69 = icmp uge i64 0, %t68 - br i1 %t69, label %range5960, label %inrange5961 -range5960: - call void @finch_panic_index(ptr @.str.3912, i64 3254, i64 0, i64 %t68) + br i1 %t69, label %range6244, label %inrange6245 +range6244: + call void @finch_panic_index(ptr @.str.4128, i64 3380, i64 0, i64 %t68) unreachable -inrange5961: +inrange6245: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 %t72 = getelementptr inbounds %S.ast.Node, ptr %t71, i32 0, i32 1 @@ -52182,7 +56035,7 @@ inrange5961: %t75 = load { ptr, i64, i64 }, ptr %t74 %t76 = call i64 @finch.gen.findEnum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) ret i64 %t76 -endif5959: +endif6243: ret i64 -1 } @@ -52219,31 +56072,50 @@ entry: %a70 = alloca { ptr, i64, i64 }, align 16 %a71 = alloca { ptr, i64, i64 }, align 16 %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a86 = alloca { ptr, i64, i64 }, align 16 %a88 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a94 = alloca { ptr, i64, i64 }, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 + %a100 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i64 %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic5962, label %ok5963 -panic5962: - call void @finch_panic(ptr @.str.3913, i64 3261, ptr @.str.3914) + br i1 %t5, label %panic6246, label %ok6247 +panic6246: + call void @finch_panic(ptr @.str.4129, i64 3387, ptr @.str.4130) unreachable -ok5963: +ok6247: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = load i64, ptr %a3 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range5964, label %inrange5965 -range5964: - call void @finch_panic_index(ptr @.str.3915, i64 3261, i64 %t7, i64 %t9) + br i1 %t10, label %range6248, label %inrange6249 +range6248: + call void @finch_panic_index(ptr @.str.4131, i64 3387, i64 %t7, i64 %t9) unreachable -inrange5965: +inrange6249: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -52259,43 +56131,43 @@ inrange5965: %t23 = load i64, ptr %t19 %t24 = load ptr, ptr %t18 store i64 0, ptr %a25 - br label %find.cond5966 -find.cond5966: + br label %find.cond6250 +find.cond6250: %t26 = load i64, ptr %a25 %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body5967, label %find.end5970 -find.body5967: + br i1 %t27, label %find.body6251, label %find.end6254 +find.body6251: %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i64 %t26 %t29 = load { ptr, i64, i64 }, ptr %t28 store { ptr, i64, i64 } %t29, ptr %a30 store { ptr, i64, i64 } %t21, ptr %a31 %t32 = call i32 @finch_str_eq(ptr %a30, ptr %a31) %t33 = icmp ne i32 %t32, 0 - br i1 %t33, label %find.hit5968, label %find.next5969 -find.hit5968: + br i1 %t33, label %find.hit6252, label %find.next6253 +find.hit6252: store i64 %t26, ptr %a22 - br label %find.end5970 -find.next5969: + br label %find.end6254 +find.next6253: %t34 = add i64 %t26, 1 store i64 %t34, ptr %a25 - br label %find.cond5966 -find.end5970: + br label %find.cond6250 +find.end6254: %t35 = load i64, ptr %a22 store i64 %t35, ptr %a36 %t37 = load i64, ptr %a36 %t38 = icmp slt i64 %t37, 0 - br i1 %t38, label %then5971, label %endif5973 -then5971: + br i1 %t38, label %then6255, label %endif6257 +then6255: %t39 = load ptr, ptr %a1 %t40 = load %S.ast.Node, ptr %a2 %t41 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.3916, i64 9, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.4132, i64 9, i64 0 }, ptr %a44 store { ptr, i64, i64 } %t42, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.3917, i64 17, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4133, i64 17, i64 0 }, ptr %a49 call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) %t50 = load { ptr, i64, i64 }, ptr %a47 %t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -52305,12 +56177,12 @@ then5971: call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.3918, i64 11, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4134, i64 11, i64 0 }, ptr %a59 call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) %t60 = load { ptr, i64, i64 }, ptr %a57 %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3919, i64 2, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.4135, i64 2, i64 0 }, ptr %a63 call void @finch_str_join(ptr %a64, ptr %t61, ptr %a63) %t65 = load { ptr, i64, i64 }, ptr %a64 store { ptr, i64, i64 } %t60, ptr %a67 @@ -52318,43 +56190,95 @@ then5971: call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) %t69 = load { ptr, i64, i64 }, ptr %a66 store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3920, i64 1, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.4136, i64 1, i64 0 }, ptr %a72 call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t73) - br label %endif5973 -endif5973: - %t74 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t75 = load i64, ptr %a36 - %t76 = load { ptr, i64, i64 }, ptr %t74 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range5974, label %inrange5975 -range5974: - call void @finch_panic_index(ptr @.str.3921, i64 3266, i64 %t75, i64 %t77) - unreachable -inrange5975: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i64, ptr %t79, i64 %t75 + br label %endif6257 +endif6257: + %t74 = load ptr, ptr %a1 + %t75 = load %S.ast.Node, ptr %a2 + %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t77 = load i64, ptr %t76 + %t78 = add i64 %t77, 1 + %t79 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 %t81 = load i64, ptr %t80 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t83, 0 - %t85 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.3922, i64 4, i64 0 }, 0 - %t86 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t87, ptr %a88 - call void @finch_str_copy(ptr %a89, ptr %a88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - %t91 = insertvalue %S.ast.Type %t85, { ptr, i64, i64 } %t90, 2 - %t92 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t82 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t83 = load { ptr, i64, i64 }, ptr %t82 + store { ptr, i64, i64 } { ptr @.str.4137, i64 9, i64 0 }, ptr %a85 + store { ptr, i64, i64 } %t83, ptr %a86 + call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) + %t87 = load { ptr, i64, i64 }, ptr %a84 + store { ptr, i64, i64 } %t87, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.4138, i64 1, i64 0 }, ptr %a90 + call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) + %t91 = load { ptr, i64, i64 }, ptr %a88 + %t92 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t93 = load { ptr, i64, i64 }, ptr %t92 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_copy(ptr %a95, ptr %a94) - %t96 = load { ptr, i64, i64 }, ptr %a95 - %t97 = insertvalue %S.ast.Type %t91, { ptr, i64, i64 } %t96, 3 - %t98 = insertvalue %S.gen.Val %t84, %S.ast.Type %t97, 1 - ret %S.gen.Val %t98 + store { ptr, i64, i64 } %t91, ptr %a95 + store { ptr, i64, i64 } %t93, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a94 + store { ptr, i64, i64 } %t97, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.4139, i64 3, i64 0 }, ptr %a100 + call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) + %t101 = load { ptr, i64, i64 }, ptr %a98 + %t102 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t103 = load i64, ptr %a36 + %t104 = load { ptr, i64, i64 }, ptr %t102 + %t105 = extractvalue { ptr, i64, i64 } %t104, 1 + %t106 = icmp uge i64 %t103, %t105 + br i1 %t106, label %range6258, label %inrange6259 +range6258: + call void @finch_panic_index(ptr @.str.4140, i64 3392, i64 %t103, i64 %t105) + unreachable +inrange6259: + %t107 = extractvalue { ptr, i64, i64 } %t104, 0 + %t108 = getelementptr inbounds i64, ptr %t107, i64 %t103 + %t109 = load i64, ptr %t108 + call void @finch_str_from_int(ptr %a110, i64 %t109) + %t111 = load { ptr, i64, i64 }, ptr %a110 + store { ptr, i64, i64 } %t101, ptr %a113 + store { ptr, i64, i64 } %t111, ptr %a114 + call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) + %t115 = load { ptr, i64, i64 }, ptr %a112 + store { ptr, i64, i64 } %t115, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.4141, i64 4, i64 0 }, ptr %a118 + call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) + %t119 = load { ptr, i64, i64 }, ptr %a116 + call void @finch.gen.noteRef(ptr %t74, %S.ast.Node %t75, i64 %t78, i64 %t81, { ptr, i64, i64 } %t119, { ptr, i64, i64 } { ptr @.str.4142, i64 0, i64 0 }, i64 0, i64 0) + %t120 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 + %t121 = load i64, ptr %a36 + %t122 = load { ptr, i64, i64 }, ptr %t120 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range6260, label %inrange6261 +range6260: + call void @finch_panic_index(ptr @.str.4143, i64 3393, i64 %t121, i64 %t123) + unreachable +inrange6261: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds i64, ptr %t125, i64 %t121 + %t127 = load i64, ptr %t126 + call void @finch_str_from_int(ptr %a128, i64 %t127) + %t129 = load { ptr, i64, i64 }, ptr %a128 + %t130 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t129, 0 + %t131 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4144, i64 4, i64 0 }, 0 + %t132 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 + %t133 = load { ptr, i64, i64 }, ptr %t132 + store { ptr, i64, i64 } %t133, ptr %a134 + call void @finch_str_copy(ptr %a135, ptr %a134) + %t136 = load { ptr, i64, i64 }, ptr %a135 + %t137 = insertvalue %S.ast.Type %t131, { ptr, i64, i64 } %t136, 2 + %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 + %t139 = load { ptr, i64, i64 }, ptr %t138 + store { ptr, i64, i64 } %t139, ptr %a140 + call void @finch_str_copy(ptr %a141, ptr %a140) + %t142 = load { ptr, i64, i64 }, ptr %a141 + %t143 = insertvalue %S.ast.Type %t137, { ptr, i64, i64 } %t142, 3 + %t144 = insertvalue %S.gen.Val %t130, %S.ast.Type %t143, 1 + ret %S.gen.Val %t144 } define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -52538,53 +56462,65 @@ entry: %a588 = alloca %S.ast.Type, align 16 %a589 = alloca %S.ast.Type, align 16 %a591 = alloca %S.ast.Type, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 %a602 = alloca { ptr, i64, i64 }, align 16 %a603 = alloca { ptr, i64, i64 }, align 16 %a604 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 + %a606 = alloca { ptr, i64, i64 }, align 16 + %a607 = alloca { ptr, i64, i64 }, align 16 + %a608 = alloca { ptr, i64, i64 }, align 16 + %a612 = alloca { ptr, i64, i64 }, align 16 %a613 = alloca { ptr, i64, i64 }, align 16 %a614 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 + %a616 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca { ptr, i64, i64 }, align 16 + %a626 = alloca { ptr, i64, i64 }, align 16 %a627 = alloca { ptr, i64, i64 }, align 16 %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a631 = alloca { ptr, i64, i64 }, align 16 %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca %S.ast.Type, align 16 - %a641 = alloca %S.ast.Type, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a638 = alloca { ptr, i64, i64 }, align 16 + %a639 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a643 = alloca { ptr, i64, i64 }, align 16 %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 %a655 = alloca { ptr, i64, i64 }, align 16 + %a656 = alloca { ptr, i64, i64 }, align 16 + %a657 = alloca { ptr, i64, i64 }, align 16 %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 + %a663 = alloca { ptr, i64, i64 }, align 16 %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 + %a668 = alloca %S.ast.Type, align 16 + %a669 = alloca %S.ast.Type, align 16 + %a677 = alloca { ptr, i64, i64 }, align 16 %a678 = alloca { ptr, i64, i64 }, align 16 %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 + %a681 = alloca { ptr, i64, i64 }, align 16 + %a682 = alloca { ptr, i64, i64 }, align 16 %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca %S.ast.Type, align 16 - %a691 = alloca %S.ast.Type, align 16 - %a694 = alloca %S.gen.Val, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a709 = alloca %S.ast.Type, align 16 - %a715 = alloca %S.gen.Val, align 16 - %a716 = alloca %S.gen.Val, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a692 = alloca { ptr, i64, i64 }, align 16 + %a693 = alloca { ptr, i64, i64 }, align 16 + %a694 = alloca { ptr, i64, i64 }, align 16 + %a704 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a707 = alloca { ptr, i64, i64 }, align 16 + %a708 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a714 = alloca { ptr, i64, i64 }, align 16 + %a718 = alloca %S.ast.Type, align 16 + %a719 = alloca %S.ast.Type, align 16 + %a722 = alloca %S.gen.Val, align 16 + %a736 = alloca %S.ast.Type, align 16 + %a737 = alloca %S.ast.Type, align 16 + %a743 = alloca %S.gen.Val, align 16 + %a744 = alloca %S.gen.Val, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store i1 %p2, ptr %a3 @@ -52593,11 +56529,11 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range5976, label %inrange5977 -range5976: - call void @finch_panic_index(ptr @.str.3923, i64 3270, i64 0, i64 %t7) + br i1 %t8, label %range6262, label %inrange6263 +range6262: + call void @finch_panic_index(ptr @.str.4145, i64 3397, i64 0, i64 %t7) unreachable -inrange5977: +inrange6263: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -52605,16 +56541,16 @@ inrange5977: store i64 %t12, ptr %a13 %t14 = load i64, ptr %a13 %t15 = icmp sge i64 %t14, 0 - br i1 %t15, label %then5978, label %endif5980 -then5978: + br i1 %t15, label %then6264, label %endif6266 +then6264: %t16 = load i1, ptr %a3 - br i1 %t16, label %then5981, label %endif5983 -then5981: + br i1 %t16, label %then6267, label %endif6269 +then6267: %t17 = load ptr, ptr %a1 %t18 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.3924, i64 37, i64 0 }) - br label %endif5983 -endif5983: + call void @finch.gen.fail(ptr %t17, %S.ast.Node %t18, { ptr, i64, i64 } { ptr @.str.4146, i64 37, i64 0 }) + br label %endif6269 +endif6269: %t19 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t20 = load ptr, ptr %a1 %t21 = load %S.ast.Node, ptr %a2 @@ -52622,17 +56558,17 @@ endif5983: %t23 = call %S.gen.Val @finch.gen.enumValue(ptr %t20, %S.ast.Node %t21, i64 %t22) %t24 = insertvalue %S.gen.Ref %t19, %S.gen.Val %t23, 2 ret %S.gen.Ref %t24 -endif5980: +endif6266: %t25 = load ptr, ptr %a1 %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t27 = load { ptr, i64, i64 }, ptr %t26 %t28 = extractvalue { ptr, i64, i64 } %t27, 1 %t29 = icmp uge i64 0, %t28 - br i1 %t29, label %range5984, label %inrange5985 -range5984: - call void @finch_panic_index(ptr @.str.3925, i64 3277, i64 0, i64 %t28) + br i1 %t29, label %range6270, label %inrange6271 +range6270: + call void @finch_panic_index(ptr @.str.4147, i64 3404, i64 0, i64 %t28) unreachable -inrange5985: +inrange6271: %t30 = extractvalue { ptr, i64, i64 } %t27, 0 %t31 = getelementptr inbounds %S.ast.Node, ptr %t30, i64 0 %t32 = load %S.ast.Node, ptr %t31 @@ -52648,8 +56584,8 @@ inrange5985: store %S.ast.Type %t41, ptr %a42 %t43 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t44 = load i1, ptr %t43 - br i1 %t44, label %then5986, label %endif5988 -then5986: + br i1 %t44, label %then6272, label %endif6274 +then6272: %t45 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 %t46 = getelementptr inbounds %S.gen.Place, ptr %t45, i32 0, i32 1 %t47 = load %S.ast.Type, ptr %t46 @@ -52657,16 +56593,16 @@ then5986: call void @finch.copy.S_ast_Type(ptr %a49, ptr %a48) %t50 = load %S.ast.Type, ptr %a49 store %S.ast.Type %t50, ptr %a42 - br label %endif5988 -endif5988: + br label %endif6274 +endif6274: %t51 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t52 = load { ptr, i64, i64 }, ptr %t51 store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3926, i64 3, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.4148, i64 3, i64 0 }, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5989, label %endif5991 -then5989: + br i1 %t56, label %then6275, label %endif6277 +then6275: %t57 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 %t58 = getelementptr inbounds %S.gen.Val, ptr %t57, i32 0, i32 0 %t59 = load { ptr, i64, i64 }, ptr %t58 @@ -52676,47 +56612,47 @@ then5989: store { ptr, i64, i64 } %t62, ptr %a63 %t64 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t65 = load i1, ptr %t64 - br i1 %t65, label %then5992, label %endif5994 -then5992: + br i1 %t65, label %then6278, label %endif6280 +then6278: %t66 = load ptr, ptr %a1 %t67 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 %t68 = getelementptr inbounds %S.gen.Place, ptr %t67, i32 0, i32 0 %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } { ptr @.str.3927, i64 3, i64 0 }, { ptr, i64, i64 } %t69) + %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } { ptr @.str.4149, i64 3, i64 0 }, { ptr, i64, i64 } %t69) store { ptr, i64, i64 } %t70, ptr %a63 - br label %endif5994 -endif5994: + br label %endif6280 +endif6280: %t71 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 1 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 %t73 = load i64, ptr %t72 %t74 = icmp eq i64 %t73, 0 - br i1 %t74, label %then5995, label %endif5997 -then5995: + br i1 %t74, label %then6281, label %endif6283 +then6281: %t75 = load ptr, ptr %a1 %t76 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.3928, i64 57, i64 0 }) - br label %endif5997 -endif5997: + call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.4150, i64 57, i64 0 }) + br label %endif6283 +endif6283: %t77 = load ptr, ptr %a1 %t78 = load ptr, ptr %a1 %t79 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3929, i64 12, i64 0 }, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.4151, i64 12, i64 0 }, ptr %a81 store { ptr, i64, i64 } %t79, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.3930, i64 6, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.4152, i64 6, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 %t88 = call { ptr, i64, i64 } @finch.gen.op(ptr %t78, { ptr, i64, i64 } %t87) %t89 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.3931, i64 6, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4153, i64 6, i64 0 }, ptr %a92 store { ptr, i64, i64 } %t90, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3932, i64 18, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4154, i64 18, i64 0 }, ptr %a97 call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) %t98 = load { ptr, i64, i64 }, ptr %a95 %t99 = load %S.ast.Node, ptr %a2 @@ -52725,11 +56661,11 @@ endif5997: %t101 = load { ptr, i64, i64 }, ptr %t100 %t102 = extractvalue { ptr, i64, i64 } %t101, 1 %t103 = icmp uge i64 0, %t102 - br i1 %t103, label %range5998, label %inrange5999 -range5998: - call void @finch_panic_index(ptr @.str.3933, i64 3291, i64 0, i64 %t102) + br i1 %t103, label %range6284, label %inrange6285 +range6284: + call void @finch_panic_index(ptr @.str.4155, i64 3418, i64 0, i64 %t102) unreachable -inrange5999: +inrange6285: %t104 = extractvalue { ptr, i64, i64 } %t101, 0 %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 0 %t106 = load %S.ast.Type, ptr %t105 @@ -52741,18 +56677,18 @@ inrange5999: %t112 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 0 %t113 = load { ptr, i64, i64 }, ptr %t112 store { ptr, i64, i64 } %t113, ptr %a114 - store { ptr, i64, i64 } { ptr @.str.3934, i64 6, i64 0 }, ptr %a115 + store { ptr, i64, i64 } { ptr @.str.4156, i64 6, i64 0 }, ptr %a115 %t116 = call i32 @finch_str_eq(ptr %a114, ptr %a115) %t117 = icmp ne i32 %t116, 0 - br i1 %t117, label %then6000, label %endif6002 -then6000: + br i1 %t117, label %then6286, label %endif6288 +then6286: %t118 = load ptr, ptr %a1 %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6003, label %ok6004 -panic6003: - call void @finch_panic(ptr @.str.3935, i64 3294, ptr @.str.3936) + br i1 %t119, label %panic6289, label %ok6290 +panic6289: + call void @finch_panic(ptr @.str.4157, i64 3421, ptr @.str.4158) unreachable -ok6004: +ok6290: %t120 = getelementptr inbounds %S.gen.Gen, ptr %t118, i32 0, i32 15 %t121 = load ptr, ptr %a1 %t122 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 3 @@ -52763,11 +56699,11 @@ ok6004: %t127 = load { ptr, i64, i64 }, ptr %t120 %t128 = extractvalue { ptr, i64, i64 } %t127, 1 %t129 = icmp uge i64 %t126, %t128 - br i1 %t129, label %range6005, label %inrange6006 -range6005: - call void @finch_panic_index(ptr @.str.3937, i64 3294, i64 %t126, i64 %t128) + br i1 %t129, label %range6291, label %inrange6292 +range6291: + call void @finch_panic_index(ptr @.str.4159, i64 3421, i64 %t126, i64 %t128) unreachable -inrange6006: +inrange6292: %t130 = extractvalue { ptr, i64, i64 } %t127, 0 %t131 = getelementptr inbounds %S.gen.StructDef, ptr %t130, i64 %t126 %t132 = getelementptr inbounds %S.gen.StructDef, ptr %t131, i32 0, i32 11 @@ -52776,51 +56712,51 @@ inrange6006: %t135 = load i64, ptr %t133 %t136 = load ptr, ptr %t132 store i64 0, ptr %a137 - br label %find.cond6007 -find.cond6007: + br label %find.cond6293 +find.cond6293: %t138 = load i64, ptr %a137 %t139 = icmp slt i64 %t138, %t135 - br i1 %t139, label %find.body6008, label %find.end6011 -find.body6008: + br i1 %t139, label %find.body6294, label %find.end6297 +find.body6294: %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i64 %t138 %t141 = load { ptr, i64, i64 }, ptr %t140 store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.3938, i64 5, i64 0 }, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.4160, i64 5, i64 0 }, ptr %a143 %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) %t145 = icmp ne i32 %t144, 0 - br i1 %t145, label %find.hit6009, label %find.next6010 -find.hit6009: + br i1 %t145, label %find.hit6295, label %find.next6296 +find.hit6295: store i64 %t138, ptr %a134 - br label %find.end6011 -find.next6010: + br label %find.end6297 +find.next6296: %t146 = add i64 %t138, 1 store i64 %t146, ptr %a137 - br label %find.cond6007 -find.end6011: + br label %find.cond6293 +find.end6297: %t147 = load i64, ptr %a134 %t148 = icmp sge i64 %t147, 0 store i1 %t148, ptr %a111 - br label %endif6002 -endif6002: + br label %endif6288 +endif6288: %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t150 = load { ptr, i64, i64 }, ptr %t149 store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.3939, i64 5, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.4161, i64 5, i64 0 }, ptr %a152 %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) %t154 = icmp ne i32 %t153, 0 - br label %logic.from6012 -logic.from6012: - br i1 %t154, label %logic.rhs6013, label %logic.end6014 -logic.rhs6013: + br label %logic.from6298 +logic.from6298: + br i1 %t154, label %logic.rhs6299, label %logic.end6300 +logic.rhs6299: %t155 = load i1, ptr %a111 %t156 = xor i1 %t155, true - br label %logic.rend6015 -logic.rend6015: - br label %logic.end6014 -logic.end6014: - %t157 = phi i1 [ false, %logic.from6012 ], [ %t156, %logic.rend6015 ] - br i1 %t157, label %then6016, label %endif6018 -then6016: + br label %logic.rend6301 +logic.rend6301: + br label %logic.end6300 +logic.end6300: + %t157 = phi i1 [ false, %logic.from6298 ], [ %t156, %logic.rend6301 ] + br i1 %t157, label %then6302, label %endif6304 +then6302: %t158 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 %t159 = load { ptr, i64, i64 }, ptr %a63 store { ptr, i64, i64 } %t159, ptr %a160 @@ -52834,30 +56770,30 @@ then6016: %t168 = insertvalue %S.gen.Place %t163, %S.ast.Type %t167, 1 %t169 = insertvalue %S.gen.Ref %t158, %S.gen.Place %t168, 1 ret %S.gen.Ref %t169 -endif6018: +endif6304: %t170 = getelementptr inbounds %S.ast.Type, ptr %a110, i32 0, i32 0 %t171 = load { ptr, i64, i64 }, ptr %t170 store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.4162, i64 6, i64 0 }, ptr %a173 %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) %t175 = icmp eq i32 %t174, 0 - br i1 %t175, label %then6019, label %endif6021 -then6019: + br i1 %t175, label %then6305, label %endif6307 +then6305: %t176 = load ptr, ptr %a1 %t177 = load %S.ast.Node, ptr %a2 %t178 = load %S.ast.Type, ptr %a42 %t179 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t178) - store { ptr, i64, i64 } { ptr @.str.3941, i64 2, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4163, i64 2, i64 0 }, ptr %a181 store { ptr, i64, i64 } %t179, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 store { ptr, i64, i64 } %t183, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.3942, i64 43, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.4164, i64 43, i64 0 }, ptr %a186 call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) %t187 = load { ptr, i64, i64 }, ptr %a184 call void @finch.gen.fail(ptr %t176, %S.ast.Node %t177, { ptr, i64, i64 } %t187) - br label %endif6021 -endif6021: + br label %endif6307 +endif6307: %t188 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 %t189 = load { ptr, i64, i64 }, ptr %a63 store { ptr, i64, i64 } %t189, ptr %a190 @@ -52876,87 +56812,87 @@ endif6021: call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) %t203 = load %S.ast.Type, ptr %a202 store %S.ast.Type %t203, ptr %a42 - br label %endif5991 -endif5991: + br label %endif6277 +endif6277: %t204 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t205 = load { ptr, i64, i64 }, ptr %t204 store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.3943, i64 5, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.4165, i64 5, i64 0 }, ptr %a207 %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then6022, label %endif6024 -then6022: + br i1 %t209, label %then6308, label %endif6310 +then6308: %t210 = load i1, ptr %a3 - br i1 %t210, label %then6025, label %endif6027 -then6025: + br i1 %t210, label %then6311, label %endif6313 +then6311: %t211 = load ptr, ptr %a1 %t212 = load %S.ast.Node, ptr %a2 %t213 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } { ptr @.str.3944, i64 1, i64 0 }, ptr %a216 + store { ptr, i64, i64 } { ptr @.str.4166, i64 1, i64 0 }, ptr %a216 store { ptr, i64, i64 } %t214, ptr %a217 call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) %t218 = load { ptr, i64, i64 }, ptr %a215 store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.3945, i64 26, i64 0 }, ptr %a221 + store { ptr, i64, i64 } { ptr @.str.4167, i64 26, i64 0 }, ptr %a221 call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) %t222 = load { ptr, i64, i64 }, ptr %a219 call void @finch.gen.fail(ptr %t211, %S.ast.Node %t212, { ptr, i64, i64 } %t222) - br label %endif6027 -endif6027: + br label %endif6313 +endif6313: %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t224 = load { ptr, i64, i64 }, ptr %t223 store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3946, i64 3, i64 0 }, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %a226 %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6028, label %endif6030 -then6028: + br i1 %t228, label %then6314, label %endif6316 +then6314: %t229 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t230 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 4 %t231 = load i64, ptr %t230 call void @finch_str_from_int(ptr %a232, i64 %t231) %t233 = load { ptr, i64, i64 }, ptr %a232 %t234 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t233, 0 - %t235 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3947, i64 3, i64 0 }) + %t235 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4169, i64 3, i64 0 }) %t236 = insertvalue %S.gen.Val %t234, %S.ast.Type %t235, 1 %t237 = insertvalue %S.gen.Val %t236, i1 true, 3 %t238 = insertvalue %S.gen.Ref %t229, %S.gen.Val %t237, 2 ret %S.gen.Ref %t238 -endif6030: +endif6316: %t239 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t240 = load { ptr, i64, i64 }, ptr %t239 store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3948, i64 3, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %a242 %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) %t244 = icmp eq i32 %t243, 0 - br i1 %t244, label %then6031, label %endif6033 -then6031: + br i1 %t244, label %then6317, label %endif6319 +then6317: %t245 = load ptr, ptr %a1 %t246 = load %S.ast.Node, ptr %a2 %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.3949, i64 34, i64 0 }, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.4171, i64 34, i64 0 }, ptr %a250 store { ptr, i64, i64 } %t248, ptr %a251 call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) %t252 = load { ptr, i64, i64 }, ptr %a249 store { ptr, i64, i64 } %t252, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.3950, i64 1, i64 0 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.4172, i64 1, i64 0 }, ptr %a255 call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t256) - br label %endif6033 -endif6033: + br label %endif6319 +endif6319: %t257 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t258 = load i1, ptr %t257 %t259 = xor i1 %t258, true - br i1 %t259, label %then6034, label %endif6036 -then6034: + br i1 %t259, label %then6320, label %endif6322 +then6320: %t260 = load ptr, ptr %a1 %t261 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.3951, i64 48, i64 0 }) - br label %endif6036 -endif6036: + call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.4173, i64 48, i64 0 }) + br label %endif6322 +endif6322: %t262 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t263 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 %t264 = getelementptr inbounds %S.gen.Place, ptr %t263, i32 0, i32 0 @@ -52969,11 +56905,11 @@ endif6036: %t271 = load { ptr, i64, i64 }, ptr %t270 %t272 = extractvalue { ptr, i64, i64 } %t271, 1 %t273 = icmp uge i64 0, %t272 - br i1 %t273, label %range6037, label %inrange6038 -range6037: - call void @finch_panic_index(ptr @.str.3952, i64 3318, i64 0, i64 %t272) + br i1 %t273, label %range6323, label %inrange6324 +range6323: + call void @finch_panic_index(ptr @.str.4174, i64 3445, i64 0, i64 %t272) unreachable -inrange6038: +inrange6324: %t274 = extractvalue { ptr, i64, i64 } %t271, 0 %t275 = getelementptr inbounds %S.ast.Type, ptr %t274, i64 0 %t276 = load %S.ast.Type, ptr %t275 @@ -52981,91 +56917,91 @@ inrange6038: %t278 = insertvalue %S.gen.Val %t269, %S.ast.Type %t277, 1 %t279 = insertvalue %S.gen.Ref %t262, %S.gen.Val %t278, 2 ret %S.gen.Ref %t279 -endif6024: +endif6310: %t280 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t281 = load { ptr, i64, i64 }, ptr %t280 store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.3953, i64 5, i64 0 }, ptr %a283 + store { ptr, i64, i64 } { ptr @.str.4175, i64 5, i64 0 }, ptr %a283 %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) %t285 = icmp ne i32 %t284, 0 - br label %logic.from6039 -logic.from6039: - br i1 %t285, label %logic.end6041, label %logic.rhs6040 -logic.rhs6040: + br label %logic.from6325 +logic.from6325: + br i1 %t285, label %logic.end6327, label %logic.rhs6326 +logic.rhs6326: %t286 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t287 = load { ptr, i64, i64 }, ptr %t286 store { ptr, i64, i64 } %t287, ptr %a288 - store { ptr, i64, i64 } { ptr @.str.3954, i64 3, i64 0 }, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.4176, i64 3, i64 0 }, ptr %a289 %t290 = call i32 @finch_str_eq(ptr %a288, ptr %a289) %t291 = icmp ne i32 %t290, 0 - br label %logic.rend6042 -logic.rend6042: - br label %logic.end6041 -logic.end6041: - %t292 = phi i1 [ true, %logic.from6039 ], [ %t291, %logic.rend6042 ] - br label %logic.from6043 -logic.from6043: - br i1 %t292, label %logic.rhs6044, label %logic.end6045 -logic.rhs6044: + br label %logic.rend6328 +logic.rend6328: + br label %logic.end6327 +logic.end6327: + %t292 = phi i1 [ true, %logic.from6325 ], [ %t291, %logic.rend6328 ] + br label %logic.from6329 +logic.from6329: + br i1 %t292, label %logic.rhs6330, label %logic.end6331 +logic.rhs6330: %t293 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t294 = load { ptr, i64, i64 }, ptr %t293 store { ptr, i64, i64 } %t294, ptr %a295 - store { ptr, i64, i64 } { ptr @.str.3955, i64 3, i64 0 }, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.4177, i64 3, i64 0 }, ptr %a296 %t297 = call i32 @finch_str_eq(ptr %a295, ptr %a296) %t298 = icmp ne i32 %t297, 0 - br label %logic.rend6046 -logic.rend6046: - br label %logic.end6045 -logic.end6045: - %t299 = phi i1 [ false, %logic.from6043 ], [ %t298, %logic.rend6046 ] - br i1 %t299, label %then6047, label %endif6049 -then6047: + br label %logic.rend6332 +logic.rend6332: + br label %logic.end6331 +logic.end6331: + %t299 = phi i1 [ false, %logic.from6329 ], [ %t298, %logic.rend6332 ] + br i1 %t299, label %then6333, label %endif6335 +then6333: %t300 = load i1, ptr %a3 - br i1 %t300, label %then6050, label %endif6052 -then6050: + br i1 %t300, label %then6336, label %endif6338 +then6336: %t301 = load ptr, ptr %a1 %t302 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t301, %S.ast.Node %t302, { ptr, i64, i64 } { ptr @.str.3956, i64 30, i64 0 }) - br label %endif6052 -endif6052: + call void @finch.gen.fail(ptr %t301, %S.ast.Node %t302, { ptr, i64, i64 } { ptr @.str.4178, i64 30, i64 0 }) + br label %endif6338 +endif6338: %t303 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t304 = load i1, ptr %t303 %t305 = xor i1 %t304, true - br label %logic.from6053 -logic.from6053: - br i1 %t305, label %logic.rhs6054, label %logic.end6055 -logic.rhs6054: + br label %logic.from6339 +logic.from6339: + br i1 %t305, label %logic.rhs6340, label %logic.end6341 +logic.rhs6340: %t306 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 %t307 = getelementptr inbounds %S.gen.Val, ptr %t306, i32 0, i32 2 %t308 = load i1, ptr %t307 - br label %logic.rend6056 -logic.rend6056: - br label %logic.end6055 -logic.end6055: - %t309 = phi i1 [ false, %logic.from6053 ], [ %t308, %logic.rend6056 ] - br label %logic.from6057 -logic.from6057: - br i1 %t309, label %logic.rhs6058, label %logic.end6059 -logic.rhs6058: + br label %logic.rend6342 +logic.rend6342: + br label %logic.end6341 +logic.end6341: + %t309 = phi i1 [ false, %logic.from6339 ], [ %t308, %logic.rend6342 ] + br label %logic.from6343 +logic.from6343: + br i1 %t309, label %logic.rhs6344, label %logic.end6345 +logic.rhs6344: %t310 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 %t311 = getelementptr inbounds %S.gen.Val, ptr %t310, i32 0, i32 0 %t312 = load { ptr, i64, i64 }, ptr %t311 store { ptr, i64, i64 } %t312, ptr %a313 - store { ptr, i64, i64 } { ptr @.str.3958, i64 1, i64 0 }, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.4180, i64 1, i64 0 }, ptr %a315 %t316 = call i32 @finch_str_starts(ptr %a313, ptr %a315) %t317 = icmp ne i32 %t316, 0 - br label %logic.rend6060 -logic.rend6060: - br label %logic.end6059 -logic.end6059: - %t318 = phi i1 [ false, %logic.from6057 ], [ %t317, %logic.rend6060 ] - br i1 %t318, label %then6061, label %endif6063 -then6061: + br label %logic.rend6346 +logic.rend6346: + br label %logic.end6345 +logic.end6345: + %t318 = phi i1 [ false, %logic.from6343 ], [ %t317, %logic.rend6346 ] + br i1 %t318, label %then6347, label %endif6349 +then6347: %t319 = load ptr, ptr %a1 %t320 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } { ptr @.str.3959, i64 53, i64 0 }) - br label %endif6063 -endif6063: + call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } { ptr @.str.4181, i64 53, i64 0 }) + br label %endif6349 +endif6349: %t321 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 %t322 = getelementptr inbounds %S.gen.Val, ptr %t321, i32 0, i32 0 %t323 = load { ptr, i64, i64 }, ptr %t322 @@ -53075,8 +57011,8 @@ endif6063: store { ptr, i64, i64 } %t326, ptr %a327 %t328 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t329 = load i1, ptr %t328 - br i1 %t329, label %then6064, label %endif6066 -then6064: + br i1 %t329, label %then6350, label %endif6352 +then6350: %t330 = load ptr, ptr %a1 %t331 = load ptr, ptr %a1 %t332 = load %S.ast.Type, ptr %a42 @@ -53086,36 +57022,36 @@ then6064: %t336 = load { ptr, i64, i64 }, ptr %t335 %t337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t330, { ptr, i64, i64 } %t333, { ptr, i64, i64 } %t336) store { ptr, i64, i64 } %t337, ptr %a327 - br label %endif6066 -endif6066: + br label %endif6352 +endif6352: %t338 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t339 = load { ptr, i64, i64 }, ptr %t338 store { ptr, i64, i64 } %t339, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.3960, i64 3, i64 0 }, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.4182, i64 3, i64 0 }, ptr %a341 %t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341) %t343 = icmp ne i32 %t342, 0 - br i1 %t343, label %then6067, label %endif6069 -then6067: + br i1 %t343, label %then6353, label %endif6355 +then6353: %t344 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t345 = load ptr, ptr %a1 %t346 = load { ptr, i64, i64 }, ptr %a327 %t347 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t345, { ptr, i64, i64 } %t346) %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t347, 0 - %t349 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3961, i64 4, i64 0 }) + %t349 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4183, i64 4, i64 0 }) %t350 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t349) %t351 = insertvalue %S.gen.Val %t348, %S.ast.Type %t350, 1 %t352 = insertvalue %S.gen.Ref %t344, %S.gen.Val %t351, 2 ret %S.gen.Ref %t352 -endif6069: +endif6355: %t353 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t354 = load ptr, ptr %a1 %t355 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.3962, i64 31, i64 0 }, ptr %a357 + store { ptr, i64, i64 } { ptr @.str.4184, i64 31, i64 0 }, ptr %a357 store { ptr, i64, i64 } %t355, ptr %a358 call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) %t359 = load { ptr, i64, i64 }, ptr %a356 store { ptr, i64, i64 } %t359, ptr %a361 - store { ptr, i64, i64 } { ptr @.str.3963, i64 3, i64 0 }, ptr %a362 + store { ptr, i64, i64 } { ptr @.str.4185, i64 3, i64 0 }, ptr %a362 call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) %t363 = load { ptr, i64, i64 }, ptr %a360 %t364 = call { ptr, i64, i64 } @finch.gen.op(ptr %t354, { ptr, i64, i64 } %t363) @@ -53124,11 +57060,11 @@ endif6069: %t367 = load { ptr, i64, i64 }, ptr %t366 %t368 = extractvalue { ptr, i64, i64 } %t367, 1 %t369 = icmp uge i64 0, %t368 - br i1 %t369, label %range6070, label %inrange6071 -range6070: - call void @finch_panic_index(ptr @.str.3964, i64 3336, i64 0, i64 %t368) + br i1 %t369, label %range6356, label %inrange6357 +range6356: + call void @finch_panic_index(ptr @.str.4186, i64 3463, i64 0, i64 %t368) unreachable -inrange6071: +inrange6357: %t370 = extractvalue { ptr, i64, i64 } %t367, 0 %t371 = getelementptr inbounds %S.ast.Type, ptr %t370, i64 0 %t372 = load %S.ast.Type, ptr %t371 @@ -53136,90 +57072,90 @@ inrange6071: %t374 = insertvalue %S.gen.Val %t365, %S.ast.Type %t373, 1 %t375 = insertvalue %S.gen.Ref %t353, %S.gen.Val %t374, 2 ret %S.gen.Ref %t375 -endif6049: +endif6335: %t376 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t377 = load { ptr, i64, i64 }, ptr %t376 store { ptr, i64, i64 } %t377, ptr %a378 - store { ptr, i64, i64 } { ptr @.str.3965, i64 5, i64 0 }, ptr %a379 + store { ptr, i64, i64 } { ptr @.str.4187, i64 5, i64 0 }, ptr %a379 %t380 = call i32 @finch_str_eq(ptr %a378, ptr %a379) %t381 = icmp ne i32 %t380, 0 - br label %logic.from6072 -logic.from6072: - br i1 %t381, label %logic.end6074, label %logic.rhs6073 -logic.rhs6073: + br label %logic.from6358 +logic.from6358: + br i1 %t381, label %logic.end6360, label %logic.rhs6359 +logic.rhs6359: %t382 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t383 = load { ptr, i64, i64 }, ptr %t382 store { ptr, i64, i64 } %t383, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3966, i64 3, i64 0 }, ptr %a385 + store { ptr, i64, i64 } { ptr @.str.4188, i64 3, i64 0 }, ptr %a385 %t386 = call i32 @finch_str_eq(ptr %a384, ptr %a385) %t387 = icmp ne i32 %t386, 0 - br label %logic.rend6075 -logic.rend6075: - br label %logic.end6074 -logic.end6074: - %t388 = phi i1 [ true, %logic.from6072 ], [ %t387, %logic.rend6075 ] - br label %logic.from6076 -logic.from6076: - br i1 %t388, label %logic.end6078, label %logic.rhs6077 -logic.rhs6077: + br label %logic.rend6361 +logic.rend6361: + br label %logic.end6360 +logic.end6360: + %t388 = phi i1 [ true, %logic.from6358 ], [ %t387, %logic.rend6361 ] + br label %logic.from6362 +logic.from6362: + br i1 %t388, label %logic.end6364, label %logic.rhs6363 +logic.rhs6363: %t389 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t390 = load { ptr, i64, i64 }, ptr %t389 store { ptr, i64, i64 } %t390, ptr %a391 - store { ptr, i64, i64 } { ptr @.str.3967, i64 3, i64 0 }, ptr %a392 + store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a392 %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) %t394 = icmp ne i32 %t393, 0 - br label %logic.rend6079 -logic.rend6079: - br label %logic.end6078 -logic.end6078: - %t395 = phi i1 [ true, %logic.from6076 ], [ %t394, %logic.rend6079 ] - br i1 %t395, label %then6080, label %endif6082 -then6080: + br label %logic.rend6365 +logic.rend6365: + br label %logic.end6364 +logic.end6364: + %t395 = phi i1 [ true, %logic.from6362 ], [ %t394, %logic.rend6365 ] + br i1 %t395, label %then6366, label %endif6368 +then6366: %t396 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t397 = load { ptr, i64, i64 }, ptr %t396 store { ptr, i64, i64 } %t397, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.3968, i64 3, i64 0 }, ptr %a399 + store { ptr, i64, i64 } { ptr @.str.4190, i64 3, i64 0 }, ptr %a399 %t400 = call i32 @finch_str_eq(ptr %a398, ptr %a399) %t401 = icmp eq i32 %t400, 0 - br i1 %t401, label %then6083, label %endif6085 -then6083: + br i1 %t401, label %then6369, label %endif6371 +then6369: %t402 = load ptr, ptr %a1 %t403 = load %S.ast.Node, ptr %a2 %t404 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } { ptr @.str.3969, i64 37, i64 0 }, ptr %a407 + store { ptr, i64, i64 } { ptr @.str.4191, i64 37, i64 0 }, ptr %a407 store { ptr, i64, i64 } %t405, ptr %a408 call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) %t409 = load { ptr, i64, i64 }, ptr %a406 store { ptr, i64, i64 } %t409, ptr %a411 - store { ptr, i64, i64 } { ptr @.str.3970, i64 1, i64 0 }, ptr %a412 + store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a412 call void @finch_str_concat(ptr %a410, ptr %a411, ptr %a412) %t413 = load { ptr, i64, i64 }, ptr %a410 call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } %t413) - br label %endif6085 -endif6085: + br label %endif6371 +endif6371: %t414 = load i1, ptr %a3 - br i1 %t414, label %then6086, label %endif6088 -then6086: + br i1 %t414, label %then6372, label %endif6374 +then6372: %t415 = load ptr, ptr %a1 %t416 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t415, %S.ast.Node %t416, { ptr, i64, i64 } { ptr @.str.3971, i64 48, i64 0 }) - br label %endif6088 -endif6088: + call void @finch.gen.fail(ptr %t415, %S.ast.Node %t416, { ptr, i64, i64 } { ptr @.str.4193, i64 48, i64 0 }) + br label %endif6374 +endif6374: %t417 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 %t418 = load i1, ptr %t417 - br i1 %t418, label %then6089, label %endif6091 -then6089: + br i1 %t418, label %then6375, label %endif6377 +then6375: %t419 = load ptr, ptr %a1 %t420 = load ptr, ptr %a1 %t421 = load %S.ast.Type, ptr %a42 %t422 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t420, %S.ast.Type %t421) - store { ptr, i64, i64 } { ptr @.str.3972, i64 23, i64 0 }, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.4194, i64 23, i64 0 }, ptr %a424 store { ptr, i64, i64 } %t422, ptr %a425 call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) %t426 = load { ptr, i64, i64 }, ptr %a423 store { ptr, i64, i64 } %t426, ptr %a428 - store { ptr, i64, i64 } { ptr @.str.3973, i64 6, i64 0 }, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.4195, i64 6, i64 0 }, ptr %a429 call void @finch_str_concat(ptr %a427, ptr %a428, ptr %a429) %t430 = load { ptr, i64, i64 }, ptr %a427 %t431 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 @@ -53230,7 +57166,7 @@ then6089: call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) %t437 = load { ptr, i64, i64 }, ptr %a434 store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3974, i64 14, i64 0 }, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.4196, i64 14, i64 0 }, ptr %a440 call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) %t441 = load { ptr, i64, i64 }, ptr %a438 %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t419, { ptr, i64, i64 } %t441) @@ -53238,24 +57174,24 @@ then6089: %t444 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t445 = load ptr, ptr %a1 %t446 = load { ptr, i64, i64 }, ptr %a443 - %t447 = call { ptr, i64, i64 } @finch.gen.load(ptr %t445, { ptr, i64, i64 } { ptr @.str.3975, i64 3, i64 0 }, { ptr, i64, i64 } %t446) + %t447 = call { ptr, i64, i64 } @finch.gen.load(ptr %t445, { ptr, i64, i64 } { ptr @.str.4197, i64 3, i64 0 }, { ptr, i64, i64 } %t446) %t448 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t447, 0 - %t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 3, i64 0 }) + %t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4198, i64 3, i64 0 }) %t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1 %t451 = insertvalue %S.gen.Ref %t444, %S.gen.Val %t450, 2 ret %S.gen.Ref %t451 -endif6091: +endif6377: %t452 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t453 = load ptr, ptr %a1 %t454 = load ptr, ptr %a1 %t455 = load %S.ast.Type, ptr %a42 %t456 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t454, %S.ast.Type %t455) - store { ptr, i64, i64 } { ptr @.str.3977, i64 13, i64 0 }, ptr %a458 + store { ptr, i64, i64 } { ptr @.str.4199, i64 13, i64 0 }, ptr %a458 store { ptr, i64, i64 } %t456, ptr %a459 call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) %t460 = load { ptr, i64, i64 }, ptr %a457 store { ptr, i64, i64 } %t460, ptr %a462 - store { ptr, i64, i64 } { ptr @.str.3978, i64 1, i64 0 }, ptr %a463 + store { ptr, i64, i64 } { ptr @.str.4200, i64 1, i64 0 }, ptr %a463 call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) %t464 = load { ptr, i64, i64 }, ptr %a461 %t465 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 @@ -53266,30 +57202,30 @@ endif6091: call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) %t471 = load { ptr, i64, i64 }, ptr %a468 store { ptr, i64, i64 } %t471, ptr %a473 - store { ptr, i64, i64 } { ptr @.str.3979, i64 3, i64 0 }, ptr %a474 + store { ptr, i64, i64 } { ptr @.str.4201, i64 3, i64 0 }, ptr %a474 call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) %t475 = load { ptr, i64, i64 }, ptr %a472 %t476 = call { ptr, i64, i64 } @finch.gen.op(ptr %t453, { ptr, i64, i64 } %t475) %t477 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t476, 0 - %t478 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3980, i64 3, i64 0 }) + %t478 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4202, i64 3, i64 0 }) %t479 = insertvalue %S.gen.Val %t477, %S.ast.Type %t478, 1 %t480 = insertvalue %S.gen.Ref %t452, %S.gen.Val %t479, 2 ret %S.gen.Ref %t480 -endif6082: +endif6368: %t481 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 0 %t482 = load { ptr, i64, i64 }, ptr %t481 store { ptr, i64, i64 } %t482, ptr %a483 - store { ptr, i64, i64 } { ptr @.str.3981, i64 6, i64 0 }, ptr %a484 + store { ptr, i64, i64 } { ptr @.str.4203, i64 6, i64 0 }, ptr %a484 %t485 = call i32 @finch_str_eq(ptr %a483, ptr %a484) %t486 = icmp eq i32 %t485, 0 - br i1 %t486, label %then6092, label %endif6094 -then6092: + br i1 %t486, label %then6378, label %endif6380 +then6378: %t487 = load ptr, ptr %a1 %t488 = load %S.ast.Node, ptr %a2 %t489 = load %S.ast.Type, ptr %a42 %t490 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t489) store { ptr, i64, i64 } %t490, ptr %a492 - store { ptr, i64, i64 } { ptr @.str.3982, i64 21, i64 0 }, ptr %a493 + store { ptr, i64, i64 } { ptr @.str.4204, i64 21, i64 0 }, ptr %a493 call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493) %t494 = load { ptr, i64, i64 }, ptr %a491 %t495 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -53299,19 +57235,19 @@ then6092: call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) %t500 = load { ptr, i64, i64 }, ptr %a497 store { ptr, i64, i64 } %t500, ptr %a502 - store { ptr, i64, i64 } { ptr @.str.3983, i64 2, i64 0 }, ptr %a503 + store { ptr, i64, i64 } { ptr @.str.4205, i64 2, i64 0 }, ptr %a503 call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) %t504 = load { ptr, i64, i64 }, ptr %a501 call void @finch.gen.fail(ptr %t487, %S.ast.Node %t488, { ptr, i64, i64 } %t504) - br label %endif6094 -endif6094: + br label %endif6380 +endif6380: %t505 = load ptr, ptr %a1 %t506 = icmp eq ptr %t505, null - br i1 %t506, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3984, i64 3354, ptr @.str.3985) + br i1 %t506, label %panic6381, label %ok6382 +panic6381: + call void @finch_panic(ptr @.str.4206, i64 3481, ptr @.str.4207) unreachable -ok6096: +ok6382: %t507 = getelementptr inbounds %S.gen.Gen, ptr %t505, i32 0, i32 15 %t508 = load ptr, ptr %a1 %t509 = getelementptr inbounds %S.ast.Type, ptr %a42, i32 0, i32 3 @@ -53322,11 +57258,11 @@ ok6096: %t514 = load { ptr, i64, i64 }, ptr %t507 %t515 = extractvalue { ptr, i64, i64 } %t514, 1 %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range6097, label %inrange6098 -range6097: - call void @finch_panic_index(ptr @.str.3986, i64 3354, i64 %t513, i64 %t515) + br i1 %t516, label %range6383, label %inrange6384 +range6383: + call void @finch_panic_index(ptr @.str.4208, i64 3481, i64 %t513, i64 %t515) unreachable -inrange6098: +inrange6384: %t517 = extractvalue { ptr, i64, i64 } %t514, 0 %t518 = getelementptr inbounds %S.gen.StructDef, ptr %t517, i64 %t513 %t519 = load %S.gen.StructDef, ptr %t518 @@ -53342,43 +57278,43 @@ inrange6098: %t529 = load i64, ptr %t525 %t530 = load ptr, ptr %t524 store i64 0, ptr %a531 - br label %find.cond6099 -find.cond6099: + br label %find.cond6385 +find.cond6385: %t532 = load i64, ptr %a531 %t533 = icmp slt i64 %t532, %t529 - br i1 %t533, label %find.body6100, label %find.end6103 -find.body6100: + br i1 %t533, label %find.body6386, label %find.end6389 +find.body6386: %t534 = getelementptr inbounds { ptr, i64, i64 }, ptr %t530, i64 %t532 %t535 = load { ptr, i64, i64 }, ptr %t534 store { ptr, i64, i64 } %t535, ptr %a536 store { ptr, i64, i64 } %t527, ptr %a537 %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) %t539 = icmp ne i32 %t538, 0 - br i1 %t539, label %find.hit6101, label %find.next6102 -find.hit6101: + br i1 %t539, label %find.hit6387, label %find.next6388 +find.hit6387: store i64 %t532, ptr %a528 - br label %find.end6103 -find.next6102: + br label %find.end6389 +find.next6388: %t540 = add i64 %t532, 1 store i64 %t540, ptr %a531 - br label %find.cond6099 -find.end6103: + br label %find.cond6385 +find.end6389: %t541 = load i64, ptr %a528 store i64 %t541, ptr %a542 %t543 = load i64, ptr %a542 %t544 = icmp slt i64 %t543, 0 - br i1 %t544, label %then6104, label %endif6106 -then6104: + br i1 %t544, label %then6390, label %endif6392 +then6390: %t545 = load ptr, ptr %a1 %t546 = load %S.ast.Node, ptr %a2 %t547 = load %S.ast.Type, ptr %a42 %t548 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t547) - store { ptr, i64, i64 } { ptr @.str.3987, i64 11, i64 0 }, ptr %a550 + store { ptr, i64, i64 } { ptr @.str.4209, i64 11, i64 0 }, ptr %a550 store { ptr, i64, i64 } %t548, ptr %a551 call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) %t552 = load { ptr, i64, i64 }, ptr %a549 store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3988, i64 15, i64 0 }, ptr %a555 + store { ptr, i64, i64 } { ptr @.str.4210, i64 15, i64 0 }, ptr %a555 call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) %t556 = load { ptr, i64, i64 }, ptr %a553 %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -53388,12 +57324,12 @@ then6104: call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) %t562 = load { ptr, i64, i64 }, ptr %a559 store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.3989, i64 11, i64 0 }, ptr %a565 + store { ptr, i64, i64 } { ptr @.str.4211, i64 11, i64 0 }, ptr %a565 call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) %t566 = load { ptr, i64, i64 }, ptr %a563 %t567 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 11 %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3990, i64 2, i64 0 }, ptr %a569 + store { ptr, i64, i64 } { ptr @.str.4212, i64 2, i64 0 }, ptr %a569 call void @finch_str_join(ptr %a570, ptr %t567, ptr %a569) %t571 = load { ptr, i64, i64 }, ptr %a570 store { ptr, i64, i64 } %t566, ptr %a573 @@ -53401,22 +57337,22 @@ then6104: call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) %t575 = load { ptr, i64, i64 }, ptr %a572 store { ptr, i64, i64 } %t575, ptr %a577 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a578 + store { ptr, i64, i64 } { ptr @.str.4213, i64 1, i64 0 }, ptr %a578 call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) %t579 = load { ptr, i64, i64 }, ptr %a576 call void @finch.gen.fail(ptr %t545, %S.ast.Node %t546, { ptr, i64, i64 } %t579) - br label %endif6106 -endif6106: + br label %endif6392 +endif6392: %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 12 %t581 = load i64, ptr %a542 %t582 = load { ptr, i64, i64 }, ptr %t580 %t583 = extractvalue { ptr, i64, i64 } %t582, 1 %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range6107, label %inrange6108 -range6107: - call void @finch_panic_index(ptr @.str.3992, i64 3359, i64 %t581, i64 %t583) + br i1 %t584, label %range6393, label %inrange6394 +range6393: + call void @finch_panic_index(ptr @.str.4214, i64 3486, i64 %t581, i64 %t583) unreachable -inrange6108: +inrange6394: %t585 = extractvalue { ptr, i64, i64 } %t582, 0 %t586 = getelementptr inbounds %S.ast.Type, ptr %t585, i64 %t581 %t587 = load %S.ast.Type, ptr %t586 @@ -53424,161 +57360,190 @@ inrange6108: call void @finch.copy.S_ast_Type(ptr %a589, ptr %a588) %t590 = load %S.ast.Type, ptr %a589 store %S.ast.Type %t590, ptr %a591 - %t592 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 - %t593 = load i1, ptr %t592 - br i1 %t593, label %then6109, label %endif6111 -then6109: - %t594 = load ptr, ptr %a1 - %t595 = load ptr, ptr %a1 - %t596 = load %S.ast.Type, ptr %a42 - %t597 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t595, %S.ast.Type %t596) - store { ptr, i64, i64 } { ptr @.str.3993, i64 23, i64 0 }, ptr %a599 - store { ptr, i64, i64 } %t597, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - %t601 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t601, ptr %a603 - store { ptr, i64, i64 } { ptr @.str.3994, i64 6, i64 0 }, ptr %a604 + %t592 = load ptr, ptr %a1 + %t593 = load %S.ast.Node, ptr %a2 + %t594 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t595 = load i64, ptr %t594 + %t596 = add i64 %t595, 1 + %t597 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i32 0, i32 1 + %t599 = load i64, ptr %t598 + %t600 = load %S.ast.Type, ptr %a591 + %t601 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t600) + store { ptr, i64, i64 } { ptr @.str.4215, i64 9, i64 0 }, ptr %a603 + store { ptr, i64, i64 } %t601, ptr %a604 call void @finch_str_concat(ptr %a602, ptr %a603, ptr %a604) %t605 = load { ptr, i64, i64 }, ptr %a602 - %t606 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 - %t607 = getelementptr inbounds %S.gen.Place, ptr %t606, i32 0, i32 0 - %t608 = load { ptr, i64, i64 }, ptr %t607 - store { ptr, i64, i64 } %t605, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a609 - store { ptr, i64, i64 } %t612, ptr %a614 - store { ptr, i64, i64 } { ptr @.str.3995, i64 13, i64 0 }, ptr %a615 - call void @finch_str_concat(ptr %a613, ptr %a614, ptr %a615) - %t616 = load { ptr, i64, i64 }, ptr %a613 - %t617 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 - %t618 = load i64, ptr %a542 - %t619 = load { ptr, i64, i64 }, ptr %t617 - %t620 = extractvalue { ptr, i64, i64 } %t619, 1 - %t621 = icmp uge i64 %t618, %t620 - br i1 %t621, label %range6112, label %inrange6113 -range6112: - call void @finch_panic_index(ptr @.str.3996, i64 3361, i64 %t618, i64 %t620) + store { ptr, i64, i64 } %t605, ptr %a607 + store { ptr, i64, i64 } { ptr @.str.4216, i64 1, i64 0 }, ptr %a608 + call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) + %t609 = load { ptr, i64, i64 }, ptr %a606 + %t610 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t611 = load { ptr, i64, i64 }, ptr %t610 + store { ptr, i64, i64 } %t609, ptr %a613 + store { ptr, i64, i64 } %t611, ptr %a614 + call void @finch_str_concat(ptr %a612, ptr %a613, ptr %a614) + %t615 = load { ptr, i64, i64 }, ptr %a612 + store { ptr, i64, i64 } %t615, ptr %a617 + store { ptr, i64, i64 } { ptr @.str.4217, i64 4, i64 0 }, ptr %a618 + call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) + %t619 = load { ptr, i64, i64 }, ptr %a616 + call void @finch.gen.noteRef(ptr %t592, %S.ast.Node %t593, i64 %t596, i64 %t599, { ptr, i64, i64 } %t619, { ptr, i64, i64 } { ptr @.str.4218, i64 0, i64 0 }, i64 0, i64 0) + %t620 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 0 + %t621 = load i1, ptr %t620 + br i1 %t621, label %then6395, label %endif6397 +then6395: + %t622 = load ptr, ptr %a1 + %t623 = load ptr, ptr %a1 + %t624 = load %S.ast.Type, ptr %a42 + %t625 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t623, %S.ast.Type %t624) + store { ptr, i64, i64 } { ptr @.str.4219, i64 23, i64 0 }, ptr %a627 + store { ptr, i64, i64 } %t625, ptr %a628 + call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) + %t629 = load { ptr, i64, i64 }, ptr %a626 + store { ptr, i64, i64 } %t629, ptr %a631 + store { ptr, i64, i64 } { ptr @.str.4220, i64 6, i64 0 }, ptr %a632 + call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) + %t633 = load { ptr, i64, i64 }, ptr %a630 + %t634 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 1 + %t635 = getelementptr inbounds %S.gen.Place, ptr %t634, i32 0, i32 0 + %t636 = load { ptr, i64, i64 }, ptr %t635 + store { ptr, i64, i64 } %t633, ptr %a638 + store { ptr, i64, i64 } %t636, ptr %a639 + call void @finch_str_concat(ptr %a637, ptr %a638, ptr %a639) + %t640 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } %t640, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4221, i64 13, i64 0 }, ptr %a643 + call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) + %t644 = load { ptr, i64, i64 }, ptr %a641 + %t645 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 + %t646 = load i64, ptr %a542 + %t647 = load { ptr, i64, i64 }, ptr %t645 + %t648 = extractvalue { ptr, i64, i64 } %t647, 1 + %t649 = icmp uge i64 %t646, %t648 + br i1 %t649, label %range6398, label %inrange6399 +range6398: + call void @finch_panic_index(ptr @.str.4222, i64 3489, i64 %t646, i64 %t648) unreachable -inrange6113: - %t622 = extractvalue { ptr, i64, i64 } %t619, 0 - %t623 = getelementptr inbounds i64, ptr %t622, i64 %t618 - %t624 = load i64, ptr %t623 - call void @finch_str_from_int(ptr %a625, i64 %t624) - %t626 = load { ptr, i64, i64 }, ptr %a625 - store { ptr, i64, i64 } %t616, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a627 - %t631 = call { ptr, i64, i64 } @finch.gen.op(ptr %t594, { ptr, i64, i64 } %t630) - store { ptr, i64, i64 } %t631, ptr %a632 - %t633 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t634 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch_str_copy(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - %t638 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t637, 0 - %t639 = load %S.ast.Type, ptr %a591 - store %S.ast.Type %t639, ptr %a640 - call void @finch.copy.S_ast_Type(ptr %a641, ptr %a640) - %t642 = load %S.ast.Type, ptr %a641 - %t643 = insertvalue %S.gen.Place %t638, %S.ast.Type %t642, 1 - %t644 = insertvalue %S.gen.Ref %t633, %S.gen.Place %t643, 1 - ret %S.gen.Ref %t644 -endif6111: - %t645 = load ptr, ptr %a1 - %t646 = load ptr, ptr %a1 - %t647 = load %S.ast.Type, ptr %a42 - %t648 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t646, %S.ast.Type %t647) - store { ptr, i64, i64 } { ptr @.str.3997, i64 13, i64 0 }, ptr %a650 - store { ptr, i64, i64 } %t648, ptr %a651 - call void @finch_str_concat(ptr %a649, ptr %a650, ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a649 - store { ptr, i64, i64 } %t652, ptr %a654 - store { ptr, i64, i64 } { ptr @.str.3998, i64 1, i64 0 }, ptr %a655 - call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a653 - %t657 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 - %t658 = getelementptr inbounds %S.gen.Val, ptr %t657, i32 0, i32 0 - %t659 = load { ptr, i64, i64 }, ptr %t658 - store { ptr, i64, i64 } %t656, ptr %a661 - store { ptr, i64, i64 } %t659, ptr %a662 - call void @finch_str_concat(ptr %a660, ptr %a661, ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a660 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.3999, i64 2, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - %t668 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 - %t669 = load i64, ptr %a542 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range6114, label %inrange6115 -range6114: - call void @finch_panic_index(ptr @.str.4000, i64 3364, i64 %t669, i64 %t671) +inrange6399: + %t650 = extractvalue { ptr, i64, i64 } %t647, 0 + %t651 = getelementptr inbounds i64, ptr %t650, i64 %t646 + %t652 = load i64, ptr %t651 + call void @finch_str_from_int(ptr %a653, i64 %t652) + %t654 = load { ptr, i64, i64 }, ptr %a653 + store { ptr, i64, i64 } %t644, ptr %a656 + store { ptr, i64, i64 } %t654, ptr %a657 + call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) + %t658 = load { ptr, i64, i64 }, ptr %a655 + %t659 = call { ptr, i64, i64 } @finch.gen.op(ptr %t622, { ptr, i64, i64 } %t658) + store { ptr, i64, i64 } %t659, ptr %a660 + %t661 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 + %t662 = load { ptr, i64, i64 }, ptr %a660 + store { ptr, i64, i64 } %t662, ptr %a663 + call void @finch_str_copy(ptr %a664, ptr %a663) + %t665 = load { ptr, i64, i64 }, ptr %a664 + %t666 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t665, 0 + %t667 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t667, ptr %a668 + call void @finch.copy.S_ast_Type(ptr %a669, ptr %a668) + %t670 = load %S.ast.Type, ptr %a669 + %t671 = insertvalue %S.gen.Place %t666, %S.ast.Type %t670, 1 + %t672 = insertvalue %S.gen.Ref %t661, %S.gen.Place %t671, 1 + ret %S.gen.Ref %t672 +endif6397: + %t673 = load ptr, ptr %a1 + %t674 = load ptr, ptr %a1 + %t675 = load %S.ast.Type, ptr %a42 + %t676 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t674, %S.ast.Type %t675) + store { ptr, i64, i64 } { ptr @.str.4223, i64 13, i64 0 }, ptr %a678 + store { ptr, i64, i64 } %t676, ptr %a679 + call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) + %t680 = load { ptr, i64, i64 }, ptr %a677 + store { ptr, i64, i64 } %t680, ptr %a682 + store { ptr, i64, i64 } { ptr @.str.4224, i64 1, i64 0 }, ptr %a683 + call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) + %t684 = load { ptr, i64, i64 }, ptr %a681 + %t685 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t686 = getelementptr inbounds %S.gen.Val, ptr %t685, i32 0, i32 0 + %t687 = load { ptr, i64, i64 }, ptr %t686 + store { ptr, i64, i64 } %t684, ptr %a689 + store { ptr, i64, i64 } %t687, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + %t691 = load { ptr, i64, i64 }, ptr %a688 + store { ptr, i64, i64 } %t691, ptr %a693 + store { ptr, i64, i64 } { ptr @.str.4225, i64 2, i64 0 }, ptr %a694 + call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694) + %t695 = load { ptr, i64, i64 }, ptr %a692 + %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a523, i32 0, i32 3 + %t697 = load i64, ptr %a542 + %t698 = load { ptr, i64, i64 }, ptr %t696 + %t699 = extractvalue { ptr, i64, i64 } %t698, 1 + %t700 = icmp uge i64 %t697, %t699 + br i1 %t700, label %range6400, label %inrange6401 +range6400: + call void @finch_panic_index(ptr @.str.4226, i64 3492, i64 %t697, i64 %t699) unreachable -inrange6115: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds i64, ptr %t673, i64 %t669 - %t675 = load i64, ptr %t674 - call void @finch_str_from_int(ptr %a676, i64 %t675) - %t677 = load { ptr, i64, i64 }, ptr %a676 - store { ptr, i64, i64 } %t667, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a678 - %t682 = call { ptr, i64, i64 } @finch.gen.op(ptr %t645, { ptr, i64, i64 } %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load { ptr, i64, i64 }, ptr %a683 - store { ptr, i64, i64 } %t684, ptr %a685 - call void @finch_str_copy(ptr %a686, ptr %a685) - %t687 = load { ptr, i64, i64 }, ptr %a686 - %t688 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t687, 0 - %t689 = load %S.ast.Type, ptr %a591 - store %S.ast.Type %t689, ptr %a690 - call void @finch.copy.S_ast_Type(ptr %a691, ptr %a690) - %t692 = load %S.ast.Type, ptr %a691 - %t693 = insertvalue %S.gen.Val %t688, %S.ast.Type %t692, 1 - store %S.gen.Val %t693, ptr %a694 - %t695 = load ptr, ptr %a1 - %t696 = load %S.ast.Type, ptr %a591 - %t697 = call i1 @finch.gen.owning(ptr %t695, %S.ast.Type %t696) - br label %logic.from6116 -logic.from6116: - br i1 %t697, label %logic.rhs6117, label %logic.end6118 -logic.rhs6117: - %t698 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 - %t699 = getelementptr inbounds %S.gen.Val, ptr %t698, i32 0, i32 2 - %t700 = load i1, ptr %t699 - br label %logic.rend6119 -logic.rend6119: - br label %logic.end6118 -logic.end6118: - %t701 = phi i1 [ false, %logic.from6116 ], [ %t700, %logic.rend6119 ] - br i1 %t701, label %then6120, label %endif6122 -then6120: - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a683 - %t704 = load %S.ast.Type, ptr %a591 - %t705 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t702, { ptr, i64, i64 } %t703, %S.ast.Type %t704) - %t706 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t705, 0 - %t707 = load %S.ast.Type, ptr %a591 - store %S.ast.Type %t707, ptr %a708 - call void @finch.copy.S_ast_Type(ptr %a709, ptr %a708) - %t710 = load %S.ast.Type, ptr %a709 - %t711 = insertvalue %S.gen.Val %t706, %S.ast.Type %t710, 1 - %t712 = insertvalue %S.gen.Val %t711, i1 true, 2 - store %S.gen.Val %t712, ptr %a694 - br label %endif6122 -endif6122: - %t713 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t714 = load %S.gen.Val, ptr %a694 - store %S.gen.Val %t714, ptr %a715 - call void @finch.copy.S_gen_Val(ptr %a716, ptr %a715) - %t717 = load %S.gen.Val, ptr %a716 - %t718 = insertvalue %S.gen.Ref %t713, %S.gen.Val %t717, 2 - ret %S.gen.Ref %t718 +inrange6401: + %t701 = extractvalue { ptr, i64, i64 } %t698, 0 + %t702 = getelementptr inbounds i64, ptr %t701, i64 %t697 + %t703 = load i64, ptr %t702 + call void @finch_str_from_int(ptr %a704, i64 %t703) + %t705 = load { ptr, i64, i64 }, ptr %a704 + store { ptr, i64, i64 } %t695, ptr %a707 + store { ptr, i64, i64 } %t705, ptr %a708 + call void @finch_str_concat(ptr %a706, ptr %a707, ptr %a708) + %t709 = load { ptr, i64, i64 }, ptr %a706 + %t710 = call { ptr, i64, i64 } @finch.gen.op(ptr %t673, { ptr, i64, i64 } %t709) + store { ptr, i64, i64 } %t710, ptr %a711 + %t712 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t712, ptr %a713 + call void @finch_str_copy(ptr %a714, ptr %a713) + %t715 = load { ptr, i64, i64 }, ptr %a714 + %t716 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t715, 0 + %t717 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t717, ptr %a718 + call void @finch.copy.S_ast_Type(ptr %a719, ptr %a718) + %t720 = load %S.ast.Type, ptr %a719 + %t721 = insertvalue %S.gen.Val %t716, %S.ast.Type %t720, 1 + store %S.gen.Val %t721, ptr %a722 + %t723 = load ptr, ptr %a1 + %t724 = load %S.ast.Type, ptr %a591 + %t725 = call i1 @finch.gen.owning(ptr %t723, %S.ast.Type %t724) + br label %logic.from6402 +logic.from6402: + br i1 %t725, label %logic.rhs6403, label %logic.end6404 +logic.rhs6403: + %t726 = getelementptr inbounds %S.gen.Ref, ptr %a35, i32 0, i32 2 + %t727 = getelementptr inbounds %S.gen.Val, ptr %t726, i32 0, i32 2 + %t728 = load i1, ptr %t727 + br label %logic.rend6405 +logic.rend6405: + br label %logic.end6404 +logic.end6404: + %t729 = phi i1 [ false, %logic.from6402 ], [ %t728, %logic.rend6405 ] + br i1 %t729, label %then6406, label %endif6408 +then6406: + %t730 = load ptr, ptr %a1 + %t731 = load { ptr, i64, i64 }, ptr %a711 + %t732 = load %S.ast.Type, ptr %a591 + %t733 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t730, { ptr, i64, i64 } %t731, %S.ast.Type %t732) + %t734 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t733, 0 + %t735 = load %S.ast.Type, ptr %a591 + store %S.ast.Type %t735, ptr %a736 + call void @finch.copy.S_ast_Type(ptr %a737, ptr %a736) + %t738 = load %S.ast.Type, ptr %a737 + %t739 = insertvalue %S.gen.Val %t734, %S.ast.Type %t738, 1 + %t740 = insertvalue %S.gen.Val %t739, i1 true, 2 + store %S.gen.Val %t740, ptr %a722 + br label %endif6408 +endif6408: + %t741 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 + %t742 = load %S.gen.Val, ptr %a722 + store %S.gen.Val %t742, ptr %a743 + call void @finch.copy.S_gen_Val(ptr %a744, ptr %a743) + %t745 = load %S.gen.Val, ptr %a744 + %t746 = insertvalue %S.gen.Ref %t741, %S.gen.Val %t745, 2 + ret %S.gen.Ref %t746 } define internal %S.gen.Ref @finch.gen.index(ptr %p0, %S.ast.Node %p1, i1 %p2) { @@ -53723,11 +57688,11 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range6123, label %inrange6124 -range6123: - call void @finch_panic_index(ptr @.str.4001, i64 3373, i64 0, i64 %t7) + br i1 %t8, label %range6409, label %inrange6410 +range6409: + call void @finch_panic_index(ptr @.str.4227, i64 3501, i64 0, i64 %t7) unreachable -inrange6124: +inrange6410: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Node, ptr %t9, i64 0 %t11 = load %S.ast.Node, ptr %t10 @@ -53743,8 +57708,8 @@ inrange6124: store %S.ast.Type %t20, ptr %a21 %t22 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t23 = load i1, ptr %t22 - br i1 %t23, label %then6125, label %endif6127 -then6125: + br i1 %t23, label %then6411, label %endif6413 +then6411: %t24 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1 %t25 = getelementptr inbounds %S.gen.Place, ptr %t24, i32 0, i32 1 %t26 = load %S.ast.Type, ptr %t25 @@ -53752,16 +57717,16 @@ then6125: call void @finch.copy.S_ast_Type(ptr %a28, ptr %a27) %t29 = load %S.ast.Type, ptr %a28 store %S.ast.Type %t29, ptr %a21 - br label %endif6127 -endif6127: + br label %endif6413 +endif6413: %t30 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t31 = load { ptr, i64, i64 }, ptr %t30 store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.4002, i64 3, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.4228, i64 3, i64 0 }, ptr %a33 %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then6128, label %endif6130 -then6128: + br i1 %t35, label %then6414, label %endif6416 +then6414: %t36 = load ptr, ptr %a1 %t37 = load %S.ast.Node, ptr %a2 %t38 = load %S.gen.Ref, ptr %a14 @@ -53769,36 +57734,36 @@ then6128: %t40 = load i1, ptr %a3 %t41 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t36, %S.ast.Node %t37, %S.gen.Ref %t38, %S.ast.Type %t39, i1 %t40) ret %S.gen.Ref %t41 -endif6130: +endif6416: %t42 = load ptr, ptr %a1 %t43 = load ptr, ptr %a1 %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t45 = load { ptr, i64, i64 }, ptr %t44 %t46 = extractvalue { ptr, i64, i64 } %t45, 1 %t47 = icmp uge i64 1, %t46 - br i1 %t47, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.4003, i64 3381, i64 1, i64 %t46) + br i1 %t47, label %range6417, label %inrange6418 +range6417: + call void @finch_panic_index(ptr @.str.4229, i64 3509, i64 1, i64 %t46) unreachable -inrange6132: +inrange6418: %t48 = extractvalue { ptr, i64, i64 } %t45, 0 %t49 = getelementptr inbounds %S.ast.Node, ptr %t48, i64 1 %t50 = load %S.ast.Node, ptr %t49 %t51 = call %S.gen.Val @finch.gen.expr(ptr %t43, %S.ast.Node %t50) - %t52 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4004, i64 3, i64 0 }) + %t52 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4230, i64 3, i64 0 }) %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t54 = load { ptr, i64, i64 }, ptr %t53 %t55 = extractvalue { ptr, i64, i64 } %t54, 1 %t56 = icmp uge i64 1, %t55 - br i1 %t56, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.4005, i64 3381, i64 1, i64 %t55) + br i1 %t56, label %range6419, label %inrange6420 +range6419: + call void @finch_panic_index(ptr @.str.4231, i64 3509, i64 1, i64 %t55) unreachable -inrange6134: +inrange6420: %t57 = extractvalue { ptr, i64, i64 } %t54, 0 %t58 = getelementptr inbounds %S.ast.Node, ptr %t57, i64 1 %t59 = load %S.ast.Node, ptr %t58 - %t60 = call %S.gen.Val @finch.gen.coerce(ptr %t42, %S.gen.Val %t51, %S.ast.Type %t52, %S.ast.Node %t59, { ptr, i64, i64 } { ptr @.str.4006, i64 8, i64 0 }) + %t60 = call %S.gen.Val @finch.gen.coerce(ptr %t42, %S.gen.Val %t51, %S.ast.Type %t52, %S.ast.Node %t59, { ptr, i64, i64 } { ptr @.str.4232, i64 8, i64 0 }) %t61 = extractvalue %S.gen.Val %t60, 0 store { ptr, i64, i64 } %t61, ptr %a62 call void @finch_str_copy(ptr %a63, ptr %a62) @@ -53807,16 +57772,16 @@ inrange6134: %t66 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t67 = load { ptr, i64, i64 }, ptr %t66 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.4007, i64 5, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a69 %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then6135, label %endif6137 -then6135: - store { ptr, i64, i64 } { ptr @.str.4008, i64 0, i64 0 }, ptr %a72 + br i1 %t71, label %then6421, label %endif6423 +then6421: + store { ptr, i64, i64 } { ptr @.str.4234, i64 0, i64 0 }, ptr %a72 %t73 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t74 = load i1, ptr %t73 - br i1 %t74, label %then6138, label %else6139 -then6138: + br i1 %t74, label %then6424, label %else6425 +then6424: %t75 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1 %t76 = getelementptr inbounds %S.gen.Place, ptr %t75, i32 0, i32 0 %t77 = load { ptr, i64, i64 }, ptr %t76 @@ -53824,15 +57789,15 @@ then6138: call void @finch_str_copy(ptr %a79, ptr %a78) %t80 = load { ptr, i64, i64 }, ptr %a79 store { ptr, i64, i64 } %t80, ptr %a72 - br label %endif6140 -else6139: + br label %endif6426 +else6425: %t81 = load ptr, ptr %a1 %t82 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 %t83 = load %S.gen.Val, ptr %t82 %t84 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t81, %S.gen.Val %t83) store { ptr, i64, i64 } %t84, ptr %a72 - br label %endif6140 -endif6140: + br label %endif6426 +endif6426: %t85 = load ptr, ptr %a1 %t86 = load { ptr, i64, i64 }, ptr %a65 %t87 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 4 @@ -53845,12 +57810,12 @@ endif6140: %t93 = load ptr, ptr %a1 %t94 = load %S.ast.Type, ptr %a21 %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4009, i64 23, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.4235, i64 23, i64 0 }, ptr %a97 store { ptr, i64, i64 } %t95, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.4010, i64 6, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.4236, i64 6, i64 0 }, ptr %a102 call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) %t103 = load { ptr, i64, i64 }, ptr %a100 %t104 = load { ptr, i64, i64 }, ptr %a72 @@ -53859,7 +57824,7 @@ endif6140: call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) %t108 = load { ptr, i64, i64 }, ptr %a105 store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4011, i64 13, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.4237, i64 13, i64 0 }, ptr %a111 call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) %t112 = load { ptr, i64, i64 }, ptr %a109 %t113 = load { ptr, i64, i64 }, ptr %a65 @@ -53879,11 +57844,11 @@ endif6140: %t127 = load { ptr, i64, i64 }, ptr %t126 %t128 = extractvalue { ptr, i64, i64 } %t127, 1 %t129 = icmp uge i64 0, %t128 - br i1 %t129, label %range6141, label %inrange6142 -range6141: - call void @finch_panic_index(ptr @.str.4012, i64 3391, i64 0, i64 %t128) + br i1 %t129, label %range6427, label %inrange6428 +range6427: + call void @finch_panic_index(ptr @.str.4238, i64 3519, i64 0, i64 %t128) unreachable -inrange6142: +inrange6428: %t130 = extractvalue { ptr, i64, i64 } %t127, 0 %t131 = getelementptr inbounds %S.ast.Type, ptr %t130, i64 0 %t132 = load %S.ast.Type, ptr %t131 @@ -53893,26 +57858,26 @@ inrange6142: %t136 = insertvalue %S.gen.Place %t125, %S.ast.Type %t135, 1 %t137 = insertvalue %S.gen.Ref %t120, %S.gen.Place %t136, 1 ret %S.gen.Ref %t137 -endif6137: +endif6423: %t138 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t139 = load { ptr, i64, i64 }, ptr %t138 store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.4013, i64 3, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4239, i64 3, i64 0 }, ptr %a141 %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then6143, label %endif6145 -then6143: + br i1 %t143, label %then6429, label %endif6431 +then6429: %t144 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1 %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 %t146 = load i64, ptr %t145 %t147 = icmp eq i64 %t146, 0 - br i1 %t147, label %then6146, label %endif6148 -then6146: + br i1 %t147, label %then6432, label %endif6434 +then6432: %t148 = load ptr, ptr %a1 %t149 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t148, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.4014, i64 57, i64 0 }) - br label %endif6148 -endif6148: + call void @finch.gen.fail(ptr %t148, %S.ast.Node %t149, { ptr, i64, i64 } { ptr @.str.4240, i64 57, i64 0 }) + br label %endif6434 +endif6434: %t150 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 %t151 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 0 %t152 = load { ptr, i64, i64 }, ptr %t151 @@ -53922,25 +57887,25 @@ endif6148: store { ptr, i64, i64 } %t155, ptr %a156 %t157 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t158 = load i1, ptr %t157 - br i1 %t158, label %then6149, label %endif6151 -then6149: + br i1 %t158, label %then6435, label %endif6437 +then6435: %t159 = load ptr, ptr %a1 %t160 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1 %t161 = getelementptr inbounds %S.gen.Place, ptr %t160, i32 0, i32 0 %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.4015, i64 3, i64 0 }, { ptr, i64, i64 } %t162) + %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.4241, i64 3, i64 0 }, { ptr, i64, i64 } %t162) store { ptr, i64, i64 } %t163, ptr %a156 - br label %endif6151 -endif6151: + br label %endif6437 +endif6437: %t164 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1 %t165 = load { ptr, i64, i64 }, ptr %t164 %t166 = extractvalue { ptr, i64, i64 } %t165, 1 %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range6152, label %inrange6153 -range6152: - call void @finch_panic_index(ptr @.str.4016, i64 3401, i64 0, i64 %t166) + br i1 %t167, label %range6438, label %inrange6439 +range6438: + call void @finch_panic_index(ptr @.str.4242, i64 3529, i64 0, i64 %t166) unreachable -inrange6153: +inrange6439: %t168 = extractvalue { ptr, i64, i64 } %t165, 0 %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 %t170 = load %S.ast.Type, ptr %t169 @@ -53953,12 +57918,12 @@ inrange6153: %t177 = load ptr, ptr %a1 %t178 = load %S.ast.Type, ptr %a174 %t179 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t177, %S.ast.Type %t178) - store { ptr, i64, i64 } { ptr @.str.4017, i64 23, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4243, i64 23, i64 0 }, ptr %a181 store { ptr, i64, i64 } %t179, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 store { ptr, i64, i64 } %t183, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4018, i64 6, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.4244, i64 6, i64 0 }, ptr %a186 call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) %t187 = load { ptr, i64, i64 }, ptr %a184 %t188 = load { ptr, i64, i64 }, ptr %a156 @@ -53967,7 +57932,7 @@ inrange6153: call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4019, i64 6, i64 0 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4245, i64 6, i64 0 }, ptr %a195 call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) %t196 = load { ptr, i64, i64 }, ptr %a193 %t197 = load { ptr, i64, i64 }, ptr %a65 @@ -53984,60 +57949,60 @@ inrange6153: %t208 = insertvalue %S.gen.Place %t203, %S.ast.Type %t207, 1 %t209 = insertvalue %S.gen.Ref %t175, %S.gen.Place %t208, 1 ret %S.gen.Ref %t209 -endif6145: +endif6431: %t210 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t211 = load { ptr, i64, i64 }, ptr %t210 store { ptr, i64, i64 } %t211, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4020, i64 5, i64 0 }, ptr %a213 + store { ptr, i64, i64 } { ptr @.str.4246, i64 5, i64 0 }, ptr %a213 %t214 = call i32 @finch_str_eq(ptr %a212, ptr %a213) %t215 = icmp eq i32 %t214, 0 - br label %logic.from6154 -logic.from6154: - br i1 %t215, label %logic.rhs6155, label %logic.end6156 -logic.rhs6155: + br label %logic.from6440 +logic.from6440: + br i1 %t215, label %logic.rhs6441, label %logic.end6442 +logic.rhs6441: %t216 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t217 = load { ptr, i64, i64 }, ptr %t216 store { ptr, i64, i64 } %t217, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.4021, i64 3, i64 0 }, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.4247, i64 3, i64 0 }, ptr %a219 %t220 = call i32 @finch_str_eq(ptr %a218, ptr %a219) %t221 = icmp eq i32 %t220, 0 - br label %logic.rend6157 -logic.rend6157: - br label %logic.end6156 -logic.end6156: - %t222 = phi i1 [ false, %logic.from6154 ], [ %t221, %logic.rend6157 ] - br i1 %t222, label %then6158, label %endif6160 -then6158: + br label %logic.rend6443 +logic.rend6443: + br label %logic.end6442 +logic.end6442: + %t222 = phi i1 [ false, %logic.from6440 ], [ %t221, %logic.rend6443 ] + br i1 %t222, label %then6444, label %endif6446 +then6444: %t223 = load ptr, ptr %a1 %t224 = load %S.ast.Node, ptr %a2 %t225 = load %S.ast.Type, ptr %a21 %t226 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.4022, i64 46, i64 0 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.4248, i64 46, i64 0 }, ptr %a228 store { ptr, i64, i64 } %t226, ptr %a229 call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) %t230 = load { ptr, i64, i64 }, ptr %a227 call void @finch.gen.fail(ptr %t223, %S.ast.Node %t224, { ptr, i64, i64 } %t230) - br label %endif6160 -endif6160: - %t231 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4023, i64 4, i64 0 }) + br label %endif6446 +endif6446: + %t231 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4249, i64 4, i64 0 }) store %S.ast.Type %t231, ptr %a232 %t233 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t234 = load { ptr, i64, i64 }, ptr %t233 store { ptr, i64, i64 } %t234, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.4024, i64 5, i64 0 }, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.4250, i64 5, i64 0 }, ptr %a236 %t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236) %t238 = icmp ne i32 %t237, 0 - br i1 %t238, label %then6161, label %endif6163 -then6161: + br i1 %t238, label %then6447, label %endif6449 +then6447: %t239 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 1 %t240 = load { ptr, i64, i64 }, ptr %t239 %t241 = extractvalue { ptr, i64, i64 } %t240, 1 %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range6164, label %inrange6165 -range6164: - call void @finch_panic_index(ptr @.str.4025, i64 3409, i64 0, i64 %t241) + br i1 %t242, label %range6450, label %inrange6451 +range6450: + call void @finch_panic_index(ptr @.str.4251, i64 3537, i64 0, i64 %t241) unreachable -inrange6165: +inrange6451: %t243 = extractvalue { ptr, i64, i64 } %t240, 0 %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 %t245 = load %S.ast.Type, ptr %t244 @@ -54045,51 +58010,51 @@ inrange6165: call void @finch.copy.S_ast_Type(ptr %a247, ptr %a246) %t248 = load %S.ast.Type, ptr %a247 store %S.ast.Type %t248, ptr %a232 - br label %endif6163 -endif6163: + br label %endif6449 +endif6449: %t249 = getelementptr inbounds %S.ast.Type, ptr %a21, i32 0, i32 0 %t250 = load { ptr, i64, i64 }, ptr %t249 store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4026, i64 3, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %a252 %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) %t254 = icmp ne i32 %t253, 0 - br label %logic.from6166 -logic.from6166: - br i1 %t254, label %logic.rhs6167, label %logic.end6168 -logic.rhs6167: + br label %logic.from6452 +logic.from6452: + br i1 %t254, label %logic.rhs6453, label %logic.end6454 +logic.rhs6453: %t255 = load i1, ptr %a3 - br label %logic.rend6169 -logic.rend6169: - br label %logic.end6168 -logic.end6168: - %t256 = phi i1 [ false, %logic.from6166 ], [ %t255, %logic.rend6169 ] - br i1 %t256, label %then6170, label %endif6172 -then6170: + br label %logic.rend6455 +logic.rend6455: + br label %logic.end6454 +logic.end6454: + %t256 = phi i1 [ false, %logic.from6452 ], [ %t255, %logic.rend6455 ] + br i1 %t256, label %then6456, label %endif6458 +then6456: %t257 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t258 = load i1, ptr %t257 %t259 = xor i1 %t258, true - br i1 %t259, label %then6173, label %endif6175 -then6173: + br i1 %t259, label %then6459, label %endif6461 +then6459: %t260 = load ptr, ptr %a1 %t261 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.4027, i64 44, i64 0 }) - br label %endif6175 -endif6175: + call void @finch.gen.fail(ptr %t260, %S.ast.Node %t261, { ptr, i64, i64 } { ptr @.str.4253, i64 44, i64 0 }) + br label %endif6461 +endif6461: %t262 = load ptr, ptr %a1 %t263 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1 %t264 = getelementptr inbounds %S.gen.Place, ptr %t263, i32 0, i32 0 %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } { ptr @.str.4028, i64 29, i64 0 }, ptr %a267 + store { ptr, i64, i64 } { ptr @.str.4254, i64 29, i64 0 }, ptr %a267 store { ptr, i64, i64 } %t265, ptr %a268 call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) %t269 = load { ptr, i64, i64 }, ptr %a266 store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.4029, i64 1, i64 0 }, ptr %a272 + store { ptr, i64, i64 } { ptr @.str.4255, i64 1, i64 0 }, ptr %a272 call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) %t273 = load { ptr, i64, i64 }, ptr %a270 call void @finch.gen.emit(ptr %t262, { ptr, i64, i64 } %t273) - br label %endif6172 -endif6172: + br label %endif6458 +endif6458: %t274 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 %t275 = getelementptr inbounds %S.gen.Val, ptr %t274, i32 0, i32 0 %t276 = load { ptr, i64, i64 }, ptr %t275 @@ -54099,24 +58064,24 @@ endif6172: store { ptr, i64, i64 } %t279, ptr %a280 %t281 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t282 = load i1, ptr %t281 - br i1 %t282, label %then6176, label %endif6178 -then6176: + br i1 %t282, label %then6462, label %endif6464 +then6462: %t283 = load ptr, ptr %a1 %t284 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 1 %t285 = getelementptr inbounds %S.gen.Place, ptr %t284, i32 0, i32 0 %t286 = load { ptr, i64, i64 }, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.gen.load(ptr %t283, { ptr, i64, i64 } { ptr @.str.4030, i64 17, i64 0 }, { ptr, i64, i64 } %t286) + %t287 = call { ptr, i64, i64 } @finch.gen.load(ptr %t283, { ptr, i64, i64 } { ptr @.str.4256, i64 17, i64 0 }, { ptr, i64, i64 } %t286) store { ptr, i64, i64 } %t287, ptr %a280 - br label %endif6178 -endif6178: + br label %endif6464 +endif6464: %t288 = load ptr, ptr %a1 %t289 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4031, i64 31, i64 0 }, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.4257, i64 31, i64 0 }, ptr %a291 store { ptr, i64, i64 } %t289, ptr %a292 call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) %t293 = load { ptr, i64, i64 }, ptr %a290 store { ptr, i64, i64 } %t293, ptr %a295 - store { ptr, i64, i64 } { ptr @.str.4032, i64 3, i64 0 }, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.4258, i64 3, i64 0 }, ptr %a296 call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) %t297 = load { ptr, i64, i64 }, ptr %a294 %t298 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t297) @@ -54128,12 +58093,12 @@ endif6178: call void @finch.gen.boundsCheck(ptr %t300, { ptr, i64, i64 } %t301, { ptr, i64, i64 } %t302, %S.ast.Node %t303) %t304 = load ptr, ptr %a1 %t305 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4033, i64 31, i64 0 }, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.4259, i64 31, i64 0 }, ptr %a307 store { ptr, i64, i64 } %t305, ptr %a308 call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) %t309 = load { ptr, i64, i64 }, ptr %a306 store { ptr, i64, i64 } %t309, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.4034, i64 3, i64 0 }, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.4260, i64 3, i64 0 }, ptr %a312 call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) %t313 = load { ptr, i64, i64 }, ptr %a310 %t314 = call { ptr, i64, i64 } @finch.gen.op(ptr %t304, { ptr, i64, i64 } %t313) @@ -54142,12 +58107,12 @@ endif6178: %t317 = load ptr, ptr %a1 %t318 = load %S.ast.Type, ptr %a232 %t319 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t317, %S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4035, i64 23, i64 0 }, ptr %a321 + store { ptr, i64, i64 } { ptr @.str.4261, i64 23, i64 0 }, ptr %a321 store { ptr, i64, i64 } %t319, ptr %a322 call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) %t323 = load { ptr, i64, i64 }, ptr %a320 store { ptr, i64, i64 } %t323, ptr %a325 - store { ptr, i64, i64 } { ptr @.str.4036, i64 6, i64 0 }, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.4262, i64 6, i64 0 }, ptr %a326 call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) %t327 = load { ptr, i64, i64 }, ptr %a324 %t328 = load { ptr, i64, i64 }, ptr %a315 @@ -54156,7 +58121,7 @@ endif6178: call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) %t332 = load { ptr, i64, i64 }, ptr %a329 store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.4037, i64 6, i64 0 }, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.4263, i64 6, i64 0 }, ptr %a335 call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) %t336 = load { ptr, i64, i64 }, ptr %a333 %t337 = load { ptr, i64, i64 }, ptr %a65 @@ -54168,8 +58133,8 @@ endif6178: store { ptr, i64, i64 } %t342, ptr %a343 %t344 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 %t345 = load i1, ptr %t344 - br i1 %t345, label %then6179, label %endif6181 -then6179: + br i1 %t345, label %then6465, label %endif6467 +then6465: %t346 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 %t347 = load { ptr, i64, i64 }, ptr %a343 store { ptr, i64, i64 } %t347, ptr %a348 @@ -54183,7 +58148,7 @@ then6179: %t356 = insertvalue %S.gen.Place %t351, %S.ast.Type %t355, 1 %t357 = insertvalue %S.gen.Ref %t346, %S.gen.Place %t356, 1 ret %S.gen.Ref %t357 -endif6181: +endif6467: %t358 = load ptr, ptr %a1 %t359 = load ptr, ptr %a1 %t360 = load %S.ast.Type, ptr %a232 @@ -54205,20 +58170,20 @@ endif6181: %t376 = load ptr, ptr %a1 %t377 = load %S.ast.Type, ptr %a232 %t378 = call i1 @finch.gen.owning(ptr %t376, %S.ast.Type %t377) - br label %logic.from6182 -logic.from6182: - br i1 %t378, label %logic.rhs6183, label %logic.end6184 -logic.rhs6183: + br label %logic.from6468 +logic.from6468: + br i1 %t378, label %logic.rhs6469, label %logic.end6470 +logic.rhs6469: %t379 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 %t380 = getelementptr inbounds %S.gen.Val, ptr %t379, i32 0, i32 2 %t381 = load i1, ptr %t380 - br label %logic.rend6185 -logic.rend6185: - br label %logic.end6184 -logic.end6184: - %t382 = phi i1 [ false, %logic.from6182 ], [ %t381, %logic.rend6185 ] - br i1 %t382, label %then6186, label %endif6188 -then6186: + br label %logic.rend6471 +logic.rend6471: + br label %logic.end6470 +logic.end6470: + %t382 = phi i1 [ false, %logic.from6468 ], [ %t381, %logic.rend6471 ] + br i1 %t382, label %then6472, label %endif6474 +then6472: %t383 = load ptr, ptr %a1 %t384 = load { ptr, i64, i64 }, ptr %a364 %t385 = load %S.ast.Type, ptr %a232 @@ -54231,8 +58196,8 @@ then6186: %t392 = insertvalue %S.gen.Val %t387, %S.ast.Type %t391, 1 %t393 = insertvalue %S.gen.Val %t392, i1 true, 2 store %S.gen.Val %t393, ptr %a375 - br label %endif6188 -endif6188: + br label %endif6474 +endif6474: %t394 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 %t395 = load %S.gen.Val, ptr %a375 store %S.gen.Val %t395, ptr %a396 @@ -54288,14 +58253,14 @@ entry: store i64 %t10, ptr %a11 %t12 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 store i64 0, ptr %a13 - br label %each.cond6189 -each.cond6189: + br label %each.cond6475 +each.cond6475: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = load i64, ptr %a13 %t17 = icmp slt i64 %t16, %t15 - br i1 %t17, label %each.body6190, label %each.end6192 -each.body6190: + br i1 %t17, label %each.body6476, label %each.end6478 +each.body6476: %t18 = load ptr, ptr %t12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -54303,43 +58268,43 @@ each.body6190: %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 %t23 = load i64, ptr %t22 %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then6193, label %endif6195 -then6193: + br i1 %t24, label %then6479, label %endif6481 +then6479: %t25 = load ptr, ptr %a1 %t26 = load %S.ast.Node, ptr %a2 %t27 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4038, i64 17, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4264, i64 17, i64 0 }, ptr %a29 store { ptr, i64, i64 } %t27, ptr %a30 call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t31, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.4039, i64 36, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.4265, i64 36, i64 0 }, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t35) - br label %endif6195 -endif6195: - br label %each.step6191 -each.step6191: + br label %endif6481 +endif6481: + br label %each.step6477 +each.step6477: %t36 = load i64, ptr %a13 %t37 = add i64 %t36, 1 store i64 %t37, ptr %a13 - br label %each.cond6189 -each.end6192: + br label %each.cond6475 +each.end6478: %t38 = load i64, ptr %a11 %t39 = load i64, ptr %a4 %t40 = icmp ne i64 %t38, %t39 - br i1 %t40, label %then6196, label %endif6198 -then6196: + br i1 %t40, label %then6482, label %endif6484 +then6482: %t41 = load ptr, ptr %a1 %t42 = load %S.ast.Node, ptr %a2 %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4040, i64 1, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.4266, i64 1, i64 0 }, ptr %a45 store { ptr, i64, i64 } %t43, ptr %a46 call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4041, i64 8, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.4267, i64 8, i64 0 }, ptr %a50 call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) %t51 = load { ptr, i64, i64 }, ptr %a48 %t52 = load i64, ptr %a4 @@ -54350,7 +58315,7 @@ then6196: call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) %t58 = load { ptr, i64, i64 }, ptr %a55 store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4042, i64 22, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.4268, i64 22, i64 0 }, ptr %a61 call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) %t62 = load { ptr, i64, i64 }, ptr %a59 %t63 = load i64, ptr %a11 @@ -54361,8 +58326,8 @@ then6196: call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) %t69 = load { ptr, i64, i64 }, ptr %a66 call void @finch.gen.fail(ptr %t41, %S.ast.Node %t42, { ptr, i64, i64 } %t69) - br label %endif6198 -endif6198: + br label %endif6484 +endif6484: ret void } @@ -54378,7 +58343,7 @@ entry: %t5 = load ptr, ptr %a1 %t6 = load %S.ast.Node, ptr %a2 %t7 = call %S.gen.Val @finch.gen.expr(ptr %t5, %S.ast.Node %t6) - %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4043, i64 3, i64 0 }) + %t8 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4269, i64 3, i64 0 }) %t9 = load %S.ast.Node, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %a3 %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) @@ -54390,7 +58355,7 @@ entry: %a1 = alloca ptr, align 16 store ptr %p0, ptr %a1 %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t2, { ptr, i64, i64 } { ptr @.str.4044, i64 17, i64 0 }) + %t3 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t2, { ptr, i64, i64 } { ptr @.str.4270, i64 17, i64 0 }) ret { ptr, i64, i64 } %t3 } @@ -54411,50 +58376,50 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4045, i64 3, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.4271, i64 3, i64 0 }, ptr %a4 %t5 = call i32 @finch_str_eq(ptr %a3, ptr %a4) %t6 = icmp ne i32 %t5, 0 - br i1 %t6, label %then6199, label %endif6201 -then6199: - ret { ptr, i64, i64 } { ptr @.str.4046, i64 3, i64 0 } -endif6201: + br i1 %t6, label %then6485, label %endif6487 +then6485: + ret { ptr, i64, i64 } { ptr @.str.4272, i64 3, i64 0 } +endif6487: %t7 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4047, i64 3, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4273, i64 3, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then6202, label %endif6204 -then6202: - ret { ptr, i64, i64 } { ptr @.str.4048, i64 5, i64 0 } -endif6204: + br i1 %t11, label %then6488, label %endif6490 +then6488: + ret { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 } +endif6490: %t12 = mul i64 13, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t13 = call ptr @finch_alloc(i64 %t12) %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 0 - store { ptr, i64, i64 } { ptr @.str.4049, i64 3, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4275, i64 3, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4050, i64 5, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4276, i64 5, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4051, i64 4, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4277, i64 4, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4052, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4053, i64 2, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4054, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4280, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4055, i64 3, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4281, i64 3, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4056, i64 2, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4057, i64 3, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4283, i64 3, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4058, i64 3, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4284, i64 3, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4059, i64 3, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4285, i64 3, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4060, i64 3, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4286, i64 3, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4061, i64 3, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t26 %t27 = insertvalue { ptr, i64, i64 } undef, ptr %t13, 0 %t28 = insertvalue { ptr, i64, i64 } %t27, i64 13, 1 %t29 = insertvalue { ptr, i64, i64 } %t28, i64 13, 2 @@ -54465,38 +58430,38 @@ endif6204: %t34 = load i64, ptr %t31 %t35 = load ptr, ptr %a30 store i64 0, ptr %a36 - br label %find.cond6205 -find.cond6205: + br label %find.cond6491 +find.cond6491: %t37 = load i64, ptr %a36 %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body6206, label %find.end6209 -find.body6206: + br i1 %t38, label %find.body6492, label %find.end6495 +find.body6492: %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t37 %t40 = load { ptr, i64, i64 }, ptr %t39 store { ptr, i64, i64 } %t40, ptr %a41 store { ptr, i64, i64 } %t32, ptr %a42 %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %find.hit6207, label %find.next6208 -find.hit6207: + br i1 %t44, label %find.hit6493, label %find.next6494 +find.hit6493: store i64 %t37, ptr %a33 - br label %find.end6209 -find.next6208: + br label %find.end6495 +find.next6494: %t45 = add i64 %t37, 1 store i64 %t45, ptr %a36 - br label %find.cond6205 -find.end6209: + br label %find.cond6491 +find.end6495: %t46 = load i64, ptr %a33 %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then6210, label %endif6212 -then6210: + br i1 %t47, label %then6496, label %endif6498 +then6496: %t48 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t48, ptr %a49 call void @finch_str_copy(ptr %a50, ptr %a49) %t51 = load { ptr, i64, i64 }, ptr %a50 ret { ptr, i64, i64 } %t51 -endif6212: - ret { ptr, i64, i64 } { ptr @.str.4062, i64 0, i64 0 } +endif6498: + ret { ptr, i64, i64 } { ptr @.str.4288, i64 0, i64 0 } } define internal %S.gen.Val @finch.gen.convert(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { @@ -54743,11 +58708,11 @@ entry: %t10 = load { ptr, i64, i64 }, ptr %t9 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 0, %t11 - br i1 %t12, label %range6213, label %inrange6214 -range6213: - call void @finch_panic_index(ptr @.str.4063, i64 3478, i64 0, i64 %t11) + br i1 %t12, label %range6499, label %inrange6500 +range6499: + call void @finch_panic_index(ptr @.str.4289, i64 3606, i64 0, i64 %t11) unreachable -inrange6214: +inrange6500: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.ast.Node, ptr %t13, i64 0 %t15 = load %S.ast.Node, ptr %t14 @@ -54762,43 +58727,43 @@ inrange6214: %t24 = load %S.ast.Type, ptr %a23 %t25 = load %S.ast.Type, ptr %a3 %t26 = call i1 @finch.ast.same(%S.ast.Type %t24, %S.ast.Type %t25) - br i1 %t26, label %then6215, label %endif6217 -then6215: + br i1 %t26, label %then6501, label %endif6503 +then6501: %t27 = load %S.gen.Val, ptr %a17 store %S.gen.Val %t27, ptr %a28 call void @finch.copy.S_gen_Val(ptr %a29, ptr %a28) %t30 = load %S.gen.Val, ptr %a29 ret %S.gen.Val %t30 -endif6217: +endif6503: %t31 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t32 = load { ptr, i64, i64 }, ptr %t31 store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.4064, i64 3, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.4290, i64 3, i64 0 }, ptr %a34 %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) %t36 = icmp ne i32 %t35, 0 - br label %logic.from6218 -logic.from6218: - br i1 %t36, label %logic.rhs6219, label %logic.end6220 -logic.rhs6219: + br label %logic.from6504 +logic.from6504: + br i1 %t36, label %logic.rhs6505, label %logic.end6506 +logic.rhs6505: %t37 = load %S.ast.Type, ptr %a3 %t38 = call i1 @finch.gen.isNumber(%S.ast.Type %t37) - br label %logic.rend6221 -logic.rend6221: - br label %logic.end6220 -logic.end6220: - %t39 = phi i1 [ false, %logic.from6218 ], [ %t38, %logic.rend6221 ] - br label %logic.from6222 -logic.from6222: - br i1 %t39, label %logic.rhs6223, label %logic.end6224 -logic.rhs6223: + br label %logic.rend6507 +logic.rend6507: + br label %logic.end6506 +logic.end6506: + %t39 = phi i1 [ false, %logic.from6504 ], [ %t38, %logic.rend6507 ] + br label %logic.from6508 +logic.from6508: + br i1 %t39, label %logic.rhs6509, label %logic.end6510 +logic.rhs6509: %t40 = load ptr, ptr %a1 %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic6225, label %ok6226 -panic6225: - call void @finch_panic(ptr @.str.4065, i64 3483, ptr @.str.4066) + br i1 %t41, label %panic6511, label %ok6512 +panic6511: + call void @finch_panic(ptr @.str.4291, i64 3611, ptr @.str.4292) unreachable -ok6226: - %t42 = getelementptr inbounds %S.gen.Gen, ptr %t40, i32 0, i32 37 +ok6512: + %t42 = getelementptr inbounds %S.gen.Gen, ptr %t40, i32 0, i32 39 %t43 = load { ptr, i64, i64 }, ptr %t42 %t44 = load %S.ast.Node, ptr %a2 %t45 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t44) @@ -54806,39 +58771,39 @@ ok6226: store { ptr, i64, i64 } %t45, ptr %a47 %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) %t49 = icmp ne i32 %t48, 0 - br label %logic.rend6227 -logic.rend6227: - br label %logic.end6224 -logic.end6224: - %t50 = phi i1 [ false, %logic.from6222 ], [ %t49, %logic.rend6227 ] - br i1 %t50, label %then6228, label %endif6230 -then6228: + br label %logic.rend6513 +logic.rend6513: + br label %logic.end6510 +logic.end6510: + %t50 = phi i1 [ false, %logic.from6508 ], [ %t49, %logic.rend6513 ] + br i1 %t50, label %then6514, label %endif6516 +then6514: %t51 = load ptr, ptr %a1 - %t52 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t51, { ptr, i64, i64 } { ptr @.str.4067, i64 17, i64 0 }) + %t52 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t51, { ptr, i64, i64 } { ptr @.str.4293, i64 17, i64 0 }) store { ptr, i64, i64 } %t52, ptr %a53 %t54 = load ptr, ptr %a1 %t55 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.store(ptr %t54, { ptr, i64, i64 } { ptr @.str.4068, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4069, i64 15, i64 0 }, { ptr, i64, i64 } %t55) + call void @finch.gen.store(ptr %t54, { ptr, i64, i64 } { ptr @.str.4294, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4295, i64 15, i64 0 }, { ptr, i64, i64 } %t55) %t56 = load %S.ast.Type, ptr %a3 %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - br i1 %t57, label %then6231, label %endif6233 -then6231: + br i1 %t57, label %then6517, label %endif6519 +then6517: %t58 = load ptr, ptr %a1 - %t59 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t58, { ptr, i64, i64 } { ptr @.str.4070, i64 3, i64 0 }) + %t59 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t58, { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }) store { ptr, i64, i64 } %t59, ptr %a60 %t61 = load ptr, ptr %a1 %t62 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.store(ptr %t61, { ptr, i64, i64 } { ptr @.str.4071, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4072, i64 1, i64 0 }, { ptr, i64, i64 } %t62) + call void @finch.gen.store(ptr %t61, { ptr, i64, i64 } { ptr @.str.4297, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4298, i64 1, i64 0 }, { ptr, i64, i64 } %t62) %t63 = load ptr, ptr %a1 %t64 = load ptr, ptr %a1 %t65 = load %S.gen.Val, ptr %a17 %t66 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t64, %S.gen.Val %t65) - store { ptr, i64, i64 } { ptr @.str.4073, i64 32, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.4299, i64 32, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.4074, i64 6, i64 0 }, ptr %a73 + store { ptr, i64, i64 } { ptr @.str.4300, i64 6, i64 0 }, ptr %a73 call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 %t75 = load { ptr, i64, i64 }, ptr %a60 @@ -54847,7 +58812,7 @@ then6231: call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) %t79 = load { ptr, i64, i64 }, ptr %a76 store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.4075, i64 6, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4301, i64 6, i64 0 }, ptr %a82 call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 %t84 = load { ptr, i64, i64 }, ptr %a53 @@ -54856,48 +58821,48 @@ then6231: call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4076, i64 1, i64 0 }, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.4302, i64 1, i64 0 }, ptr %a91 call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) %t92 = load { ptr, i64, i64 }, ptr %a89 %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t63, { ptr, i64, i64 } %t92) store { ptr, i64, i64 } %t93, ptr %a94 %t95 = load ptr, ptr %a1 %t96 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4077, i64 12, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4303, i64 12, i64 0 }, ptr %a98 store { ptr, i64, i64 } %t96, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4078, i64 3, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.4304, i64 3, i64 0 }, ptr %a103 call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) %t104 = load { ptr, i64, i64 }, ptr %a101 %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t104) %t106 = load ptr, ptr %a1 %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic6234, label %ok6235 -panic6234: - call void @finch_panic(ptr @.str.4079, i64 3491, ptr @.str.4080) + br i1 %t107, label %panic6520, label %ok6521 +panic6520: + call void @finch_panic(ptr @.str.4305, i64 3619, ptr @.str.4306) unreachable -ok6235: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 38 +ok6521: + %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 40 store { ptr, i64, i64 } %t105, ptr %t108 %t109 = load ptr, ptr %a1 %t110 = load { ptr, i64, i64 }, ptr %a53 - %t111 = call { ptr, i64, i64 } @finch.gen.load(ptr %t109, { ptr, i64, i64 } { ptr @.str.4081, i64 17, i64 0 }, { ptr, i64, i64 } %t110) + %t111 = call { ptr, i64, i64 } @finch.gen.load(ptr %t109, { ptr, i64, i64 } { ptr @.str.4307, i64 17, i64 0 }, { ptr, i64, i64 } %t110) %t112 = load ptr, ptr %a1 %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6236, label %ok6237 -panic6236: - call void @finch_panic(ptr @.str.4082, i64 3492, ptr @.str.4083) + br i1 %t113, label %panic6522, label %ok6523 +panic6522: + call void @finch_panic(ptr @.str.4308, i64 3620, ptr @.str.4309) unreachable -ok6237: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 39 +ok6523: + %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 41 store { ptr, i64, i64 } %t111, ptr %t114 %t115 = load ptr, ptr %a1 %t116 = load ptr, ptr %a1 %t117 = load { ptr, i64, i64 }, ptr %a60 - %t118 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.4084, i64 3, i64 0 }, { ptr, i64, i64 } %t117) - %t119 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4085, i64 3, i64 0 }) + %t118 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.4310, i64 3, i64 0 }, { ptr, i64, i64 } %t117) + %t119 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }) %t120 = load %S.ast.Type, ptr %a3 %t121 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t115, { ptr, i64, i64 } %t118, %S.ast.Type %t119, %S.ast.Type %t120) %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 @@ -54907,23 +58872,23 @@ ok6237: %t126 = load %S.ast.Type, ptr %a125 %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 ret %S.gen.Val %t127 -endif6233: +endif6519: %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.4086, i64 6, i64 0 }) + %t129 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t128, { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }) store { ptr, i64, i64 } %t129, ptr %a130 %t131 = load ptr, ptr %a1 %t132 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.4087, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4088, i64 3, i64 0 }, { ptr, i64, i64 } %t132) + call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } { ptr @.str.4313, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4314, i64 3, i64 0 }, { ptr, i64, i64 } %t132) %t133 = load ptr, ptr %a1 %t134 = load ptr, ptr %a1 %t135 = load %S.gen.Val, ptr %a17 %t136 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t134, %S.gen.Val %t135) - store { ptr, i64, i64 } { ptr @.str.4089, i64 34, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.4315, i64 34, i64 0 }, ptr %a138 store { ptr, i64, i64 } %t136, ptr %a139 call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) %t140 = load { ptr, i64, i64 }, ptr %a137 store { ptr, i64, i64 } %t140, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.4090, i64 6, i64 0 }, ptr %a143 + store { ptr, i64, i64 } { ptr @.str.4316, i64 6, i64 0 }, ptr %a143 call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) %t144 = load { ptr, i64, i64 }, ptr %a141 %t145 = load { ptr, i64, i64 }, ptr %a130 @@ -54932,7 +58897,7 @@ endif6233: call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) %t149 = load { ptr, i64, i64 }, ptr %a146 store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.4091, i64 6, i64 0 }, ptr %a152 + store { ptr, i64, i64 } { ptr @.str.4317, i64 6, i64 0 }, ptr %a152 call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) %t153 = load { ptr, i64, i64 }, ptr %a150 %t154 = load { ptr, i64, i64 }, ptr %a53 @@ -54941,48 +58906,48 @@ endif6233: call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) %t158 = load { ptr, i64, i64 }, ptr %a155 store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4092, i64 1, i64 0 }, ptr %a161 + store { ptr, i64, i64 } { ptr @.str.4318, i64 1, i64 0 }, ptr %a161 call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) %t162 = load { ptr, i64, i64 }, ptr %a159 %t163 = call { ptr, i64, i64 } @finch.gen.op(ptr %t133, { ptr, i64, i64 } %t162) store { ptr, i64, i64 } %t163, ptr %a164 %t165 = load ptr, ptr %a1 %t166 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.4093, i64 12, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.4319, i64 12, i64 0 }, ptr %a168 store { ptr, i64, i64 } %t166, ptr %a169 call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4094, i64 3, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.4320, i64 3, i64 0 }, ptr %a173 call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t165, { ptr, i64, i64 } %t174) %t176 = load ptr, ptr %a1 %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic6238, label %ok6239 -panic6238: - call void @finch_panic(ptr @.str.4095, i64 3498, ptr @.str.4096) + br i1 %t177, label %panic6524, label %ok6525 +panic6524: + call void @finch_panic(ptr @.str.4321, i64 3626, ptr @.str.4322) unreachable -ok6239: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 38 +ok6525: + %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 40 store { ptr, i64, i64 } %t175, ptr %t178 %t179 = load ptr, ptr %a1 %t180 = load { ptr, i64, i64 }, ptr %a53 - %t181 = call { ptr, i64, i64 } @finch.gen.load(ptr %t179, { ptr, i64, i64 } { ptr @.str.4097, i64 17, i64 0 }, { ptr, i64, i64 } %t180) + %t181 = call { ptr, i64, i64 } @finch.gen.load(ptr %t179, { ptr, i64, i64 } { ptr @.str.4323, i64 17, i64 0 }, { ptr, i64, i64 } %t180) %t182 = load ptr, ptr %a1 %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6240, label %ok6241 -panic6240: - call void @finch_panic(ptr @.str.4098, i64 3499, ptr @.str.4099) + br i1 %t183, label %panic6526, label %ok6527 +panic6526: + call void @finch_panic(ptr @.str.4324, i64 3627, ptr @.str.4325) unreachable -ok6241: - %t184 = getelementptr inbounds %S.gen.Gen, ptr %t182, i32 0, i32 39 +ok6527: + %t184 = getelementptr inbounds %S.gen.Gen, ptr %t182, i32 0, i32 41 store { ptr, i64, i64 } %t181, ptr %t184 %t185 = load ptr, ptr %a1 %t186 = load ptr, ptr %a1 %t187 = load { ptr, i64, i64 }, ptr %a130 - %t188 = call { ptr, i64, i64 } @finch.gen.load(ptr %t186, { ptr, i64, i64 } { ptr @.str.4100, i64 6, i64 0 }, { ptr, i64, i64 } %t187) - %t189 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4101, i64 5, i64 0 }) + %t188 = call { ptr, i64, i64 } @finch.gen.load(ptr %t186, { ptr, i64, i64 } { ptr @.str.4326, i64 6, i64 0 }, { ptr, i64, i64 } %t187) + %t189 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4327, i64 5, i64 0 }) %t190 = load %S.ast.Type, ptr %a3 %t191 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t185, { ptr, i64, i64 } %t188, %S.ast.Type %t189, %S.ast.Type %t190) %t192 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t191, 0 @@ -54992,45 +58957,45 @@ ok6241: %t196 = load %S.ast.Type, ptr %a195 %t197 = insertvalue %S.gen.Val %t192, %S.ast.Type %t196, 1 ret %S.gen.Val %t197 -endif6230: +endif6516: %t198 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t199 = load { ptr, i64, i64 }, ptr %t198 store { ptr, i64, i64 } %t199, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.4102, i64 3, i64 0 }, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.4328, i64 3, i64 0 }, ptr %a201 %t202 = call i32 @finch_str_eq(ptr %a200, ptr %a201) %t203 = icmp ne i32 %t202, 0 - br label %logic.from6242 -logic.from6242: - br i1 %t203, label %logic.rhs6243, label %logic.end6244 -logic.rhs6243: + br label %logic.from6528 +logic.from6528: + br i1 %t203, label %logic.rhs6529, label %logic.end6530 +logic.rhs6529: %t204 = load %S.ast.Type, ptr %a3 %t205 = call i1 @finch.gen.isNumber(%S.ast.Type %t204) - br label %logic.rend6245 -logic.rend6245: - br label %logic.end6244 -logic.end6244: - %t206 = phi i1 [ false, %logic.from6242 ], [ %t205, %logic.rend6245 ] - br i1 %t206, label %then6246, label %endif6248 -then6246: + br label %logic.rend6531 +logic.rend6531: + br label %logic.end6530 +logic.end6530: + %t206 = phi i1 [ false, %logic.from6528 ], [ %t205, %logic.rend6531 ] + br i1 %t206, label %then6532, label %endif6534 +then6532: %t207 = load ptr, ptr %a1 %t208 = load ptr, ptr %a1 %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6249, label %ok6250 -panic6249: - call void @finch_panic(ptr @.str.4103, i64 3503, ptr @.str.4104) + br i1 %t209, label %panic6535, label %ok6536 +panic6535: + call void @finch_panic(ptr @.str.4329, i64 3631, ptr @.str.4330) unreachable -ok6250: +ok6536: %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 1 %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t212 = load i64, ptr %t211 %t213 = load { ptr, i64, i64 }, ptr %t210 %t214 = extractvalue { ptr, i64, i64 } %t213, 1 %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range6251, label %inrange6252 -range6251: - call void @finch_panic_index(ptr @.str.4105, i64 3503, i64 %t212, i64 %t214) + br i1 %t215, label %range6537, label %inrange6538 +range6537: + call void @finch_panic_index(ptr @.str.4331, i64 3631, i64 %t212, i64 %t214) unreachable -inrange6252: +inrange6538: %t216 = extractvalue { ptr, i64, i64 } %t213, 0 %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t212 %t218 = load { ptr, i64, i64 }, ptr %t217 @@ -55038,18 +59003,18 @@ inrange6252: store { ptr, i64, i64 } %t219, ptr %a220 %t221 = load %S.ast.Type, ptr %a3 %t222 = call i1 @finch.gen.isInt(%S.ast.Type %t221) - br i1 %t222, label %then6253, label %endif6255 -then6253: + br i1 %t222, label %then6539, label %endif6541 +then6539: %t223 = load ptr, ptr %a1 %t224 = load ptr, ptr %a1 %t225 = load %S.gen.Val, ptr %a17 %t226 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t224, %S.gen.Val %t225) - store { ptr, i64, i64 } { ptr @.str.4106, i64 31, i64 0 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.4332, i64 31, i64 0 }, ptr %a228 store { ptr, i64, i64 } %t226, ptr %a229 call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) %t230 = load { ptr, i64, i64 }, ptr %a227 store { ptr, i64, i64 } %t230, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4107, i64 6, i64 0 }, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.4333, i64 6, i64 0 }, ptr %a233 call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) %t234 = load { ptr, i64, i64 }, ptr %a231 %t235 = load { ptr, i64, i64 }, ptr %a220 @@ -55058,7 +59023,7 @@ then6253: call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) %t239 = load { ptr, i64, i64 }, ptr %a236 store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4108, i64 6, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.4334, i64 6, i64 0 }, ptr %a242 call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) %t243 = load { ptr, i64, i64 }, ptr %a240 %t244 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -55070,14 +59035,14 @@ then6253: call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) %t251 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4109, i64 1, i64 0 }, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.4335, i64 1, i64 0 }, ptr %a254 call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) %t255 = load { ptr, i64, i64 }, ptr %a252 %t256 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t255) store { ptr, i64, i64 } %t256, ptr %a257 %t258 = load ptr, ptr %a1 %t259 = load { ptr, i64, i64 }, ptr %a257 - %t260 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4110, i64 3, i64 0 }) + %t260 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4336, i64 3, i64 0 }) %t261 = load %S.ast.Type, ptr %a3 %t262 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t258, { ptr, i64, i64 } %t259, %S.ast.Type %t260, %S.ast.Type %t261) %t263 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t262, 0 @@ -55087,17 +59052,17 @@ then6253: %t267 = load %S.ast.Type, ptr %a266 %t268 = insertvalue %S.gen.Val %t263, %S.ast.Type %t267, 1 ret %S.gen.Val %t268 -endif6255: +endif6541: %t269 = load ptr, ptr %a1 %t270 = load ptr, ptr %a1 %t271 = load %S.gen.Val, ptr %a17 %t272 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t270, %S.gen.Val %t271) - store { ptr, i64, i64 } { ptr @.str.4111, i64 36, i64 0 }, ptr %a274 + store { ptr, i64, i64 } { ptr @.str.4337, i64 36, i64 0 }, ptr %a274 store { ptr, i64, i64 } %t272, ptr %a275 call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) %t276 = load { ptr, i64, i64 }, ptr %a273 store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4112, i64 6, i64 0 }, ptr %a279 + store { ptr, i64, i64 } { ptr @.str.4338, i64 6, i64 0 }, ptr %a279 call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) %t280 = load { ptr, i64, i64 }, ptr %a277 %t281 = load { ptr, i64, i64 }, ptr %a220 @@ -55106,7 +59071,7 @@ endif6255: call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) %t285 = load { ptr, i64, i64 }, ptr %a282 store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4113, i64 6, i64 0 }, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4339, i64 6, i64 0 }, ptr %a288 call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) %t289 = load { ptr, i64, i64 }, ptr %a286 %t290 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -55118,14 +59083,14 @@ endif6255: call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) %t297 = load { ptr, i64, i64 }, ptr %a294 store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.4114, i64 1, i64 0 }, ptr %a300 + store { ptr, i64, i64 } { ptr @.str.4340, i64 1, i64 0 }, ptr %a300 call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) %t301 = load { ptr, i64, i64 }, ptr %a298 %t302 = call { ptr, i64, i64 } @finch.gen.op(ptr %t269, { ptr, i64, i64 } %t301) store { ptr, i64, i64 } %t302, ptr %a303 %t304 = load ptr, ptr %a1 %t305 = load { ptr, i64, i64 }, ptr %a303 - %t306 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4115, i64 5, i64 0 }) + %t306 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4341, i64 5, i64 0 }) %t307 = load %S.ast.Type, ptr %a3 %t308 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t304, { ptr, i64, i64 } %t305, %S.ast.Type %t306, %S.ast.Type %t307) %t309 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t308, 0 @@ -55135,30 +59100,30 @@ endif6255: %t313 = load %S.ast.Type, ptr %a312 %t314 = insertvalue %S.gen.Val %t309, %S.ast.Type %t313, 1 ret %S.gen.Val %t314 -endif6248: +endif6534: %t315 = load %S.ast.Type, ptr %a3 %t316 = call i1 @finch.gen.isInt(%S.ast.Type %t315) - br label %logic.from6256 -logic.from6256: - br i1 %t316, label %logic.rhs6257, label %logic.end6258 -logic.rhs6257: + br label %logic.from6542 +logic.from6542: + br i1 %t316, label %logic.rhs6543, label %logic.end6544 +logic.rhs6543: %t317 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t318 = load { ptr, i64, i64 }, ptr %t317 store { ptr, i64, i64 } %t318, ptr %a319 - store { ptr, i64, i64 } { ptr @.str.4116, i64 4, i64 0 }, ptr %a320 + store { ptr, i64, i64 } { ptr @.str.4342, i64 4, i64 0 }, ptr %a320 %t321 = call i32 @finch_str_eq(ptr %a319, ptr %a320) %t322 = icmp ne i32 %t321, 0 - br label %logic.rend6259 -logic.rend6259: - br label %logic.end6258 -logic.end6258: - %t323 = phi i1 [ false, %logic.from6256 ], [ %t322, %logic.rend6259 ] - br i1 %t323, label %then6260, label %endif6262 -then6260: + br label %logic.rend6545 +logic.rend6545: + br label %logic.end6544 +logic.end6544: + %t323 = phi i1 [ false, %logic.from6542 ], [ %t322, %logic.rend6545 ] + br i1 %t323, label %then6546, label %endif6548 +then6546: %t324 = load ptr, ptr %a1 %t325 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4117, i64 3, i64 0 }) + %t327 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4343, i64 3, i64 0 }) %t328 = load %S.ast.Type, ptr %a3 %t329 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t324, { ptr, i64, i64 } %t326, %S.ast.Type %t327, %S.ast.Type %t328) %t330 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t329, 0 @@ -55168,45 +59133,45 @@ then6260: %t334 = load %S.ast.Type, ptr %a333 %t335 = insertvalue %S.gen.Val %t330, %S.ast.Type %t334, 1 ret %S.gen.Val %t335 -endif6262: +endif6548: %t336 = load %S.ast.Type, ptr %a3 %t337 = call i1 @finch.gen.isInt(%S.ast.Type %t336) - br label %logic.from6263 -logic.from6263: - br i1 %t337, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: + br label %logic.from6549 +logic.from6549: + br i1 %t337, label %logic.end6551, label %logic.rhs6550 +logic.rhs6550: %t338 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t339 = load { ptr, i64, i64 }, ptr %t338 store { ptr, i64, i64 } %t339, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.4118, i64 4, i64 0 }, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.4344, i64 4, i64 0 }, ptr %a341 %t342 = call i32 @finch_str_eq(ptr %a340, ptr %a341) %t343 = icmp ne i32 %t342, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t344 = phi i1 [ true, %logic.from6263 ], [ %t343, %logic.rend6266 ] - br i1 %t344, label %then6267, label %endif6269 -then6267: + br label %logic.rend6552 +logic.rend6552: + br label %logic.end6551 +logic.end6551: + %t344 = phi i1 [ true, %logic.from6549 ], [ %t343, %logic.rend6552 ] + br i1 %t344, label %then6553, label %endif6555 +then6553: %t345 = load %S.ast.Type, ptr %a23 %t346 = call i1 @finch.gen.isInt(%S.ast.Type %t345) - br label %logic.from6270 -logic.from6270: - br i1 %t346, label %logic.end6272, label %logic.rhs6271 -logic.rhs6271: + br label %logic.from6556 +logic.from6556: + br i1 %t346, label %logic.end6558, label %logic.rhs6557 +logic.rhs6557: %t347 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t348 = load { ptr, i64, i64 }, ptr %t347 store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.4119, i64 4, i64 0 }, ptr %a350 + store { ptr, i64, i64 } { ptr @.str.4345, i64 4, i64 0 }, ptr %a350 %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) %t352 = icmp ne i32 %t351, 0 - br label %logic.rend6273 -logic.rend6273: - br label %logic.end6272 -logic.end6272: - %t353 = phi i1 [ true, %logic.from6270 ], [ %t352, %logic.rend6273 ] - br i1 %t353, label %then6274, label %endif6276 -then6274: + br label %logic.rend6559 +logic.rend6559: + br label %logic.end6558 +logic.end6558: + %t353 = phi i1 [ true, %logic.from6556 ], [ %t352, %logic.rend6559 ] + br i1 %t353, label %then6560, label %endif6562 +then6560: %t354 = load ptr, ptr %a1 %t355 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t356 = load { ptr, i64, i64 }, ptr %t355 @@ -55220,24 +59185,24 @@ then6274: %t364 = load %S.ast.Type, ptr %a363 %t365 = insertvalue %S.gen.Val %t360, %S.ast.Type %t364, 1 ret %S.gen.Val %t365 -endif6276: +endif6562: %t366 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t367 = load { ptr, i64, i64 }, ptr %t366 store { ptr, i64, i64 } %t367, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.4120, i64 4, i64 0 }, ptr %a369 + store { ptr, i64, i64 } { ptr @.str.4346, i64 4, i64 0 }, ptr %a369 %t370 = call i32 @finch_str_eq(ptr %a368, ptr %a369) %t371 = icmp ne i32 %t370, 0 - br i1 %t371, label %then6277, label %endif6279 -then6277: + br i1 %t371, label %then6563, label %endif6565 +then6563: %t372 = load ptr, ptr %a1 %t373 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } { ptr @.str.4121, i64 8, i64 0 }, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.4347, i64 8, i64 0 }, ptr %a376 store { ptr, i64, i64 } %t374, ptr %a377 call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) %t378 = load { ptr, i64, i64 }, ptr %a375 store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.4122, i64 4, i64 0 }, ptr %a381 + store { ptr, i64, i64 } { ptr @.str.4348, i64 4, i64 0 }, ptr %a381 call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) %t382 = load { ptr, i64, i64 }, ptr %a379 %t383 = load ptr, ptr %a1 @@ -55255,34 +59220,34 @@ then6277: %t395 = load %S.ast.Type, ptr %a394 %t396 = insertvalue %S.gen.Val %t391, %S.ast.Type %t395, 1 ret %S.gen.Val %t396 -endif6279: +endif6565: %t397 = load %S.ast.Type, ptr %a23 %t398 = call i1 @finch.gen.isFloat(%S.ast.Type %t397) - br label %logic.from6280 -logic.from6280: - br i1 %t398, label %logic.rhs6281, label %logic.end6282 -logic.rhs6281: + br label %logic.from6566 +logic.from6566: + br i1 %t398, label %logic.rhs6567, label %logic.end6568 +logic.rhs6567: %t399 = load %S.ast.Type, ptr %a3 %t400 = call i1 @finch.gen.isInt(%S.ast.Type %t399) - br label %logic.rend6283 -logic.rend6283: - br label %logic.end6282 -logic.end6282: - %t401 = phi i1 [ false, %logic.from6280 ], [ %t400, %logic.rend6283 ] - br i1 %t401, label %then6284, label %endif6286 -then6284: - store { ptr, i64, i64 } { ptr @.str.4123, i64 6, i64 0 }, ptr %a402 + br label %logic.rend6569 +logic.rend6569: + br label %logic.end6568 +logic.end6568: + %t401 = phi i1 [ false, %logic.from6566 ], [ %t400, %logic.rend6569 ] + br i1 %t401, label %then6570, label %endif6572 +then6570: + store { ptr, i64, i64 } { ptr @.str.4349, i64 6, i64 0 }, ptr %a402 %t403 = load %S.ast.Type, ptr %a3 %t404 = call i1 @finch.gen.isSigned(%S.ast.Type %t403) - br i1 %t404, label %then6287, label %endif6289 -then6287: - store { ptr, i64, i64 } { ptr @.str.4124, i64 6, i64 0 }, ptr %a402 - br label %endif6289 -endif6289: + br i1 %t404, label %then6573, label %endif6575 +then6573: + store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a402 + br label %endif6575 +endif6575: %t405 = load ptr, ptr %a1 %t406 = load { ptr, i64, i64 }, ptr %a402 store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.4125, i64 1, i64 0 }, ptr %a409 + store { ptr, i64, i64 } { ptr @.str.4351, i64 1, i64 0 }, ptr %a409 call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) %t410 = load { ptr, i64, i64 }, ptr %a407 %t411 = load ptr, ptr %a1 @@ -55293,7 +59258,7 @@ endif6289: call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) %t417 = load { ptr, i64, i64 }, ptr %a414 store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4126, i64 1, i64 0 }, ptr %a420 + store { ptr, i64, i64 } { ptr @.str.4352, i64 1, i64 0 }, ptr %a420 call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) %t421 = load { ptr, i64, i64 }, ptr %a418 %t422 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 @@ -55303,7 +59268,7 @@ endif6289: call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) %t427 = load { ptr, i64, i64 }, ptr %a424 store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.4127, i64 4, i64 0 }, ptr %a430 + store { ptr, i64, i64 } { ptr @.str.4353, i64 4, i64 0 }, ptr %a430 call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) %t431 = load { ptr, i64, i64 }, ptr %a428 %t432 = load ptr, ptr %a1 @@ -55321,17 +59286,17 @@ endif6289: %t444 = load %S.ast.Type, ptr %a443 %t445 = insertvalue %S.gen.Val %t440, %S.ast.Type %t444, 1 ret %S.gen.Val %t445 -endif6286: - br label %endif6269 -endif6269: +endif6572: + br label %endif6555 +endif6555: %t446 = load %S.ast.Type, ptr %a3 %t447 = call i1 @finch.gen.isFloat(%S.ast.Type %t446) - br i1 %t447, label %then6290, label %endif6292 -then6290: + br i1 %t447, label %then6576, label %endif6578 +then6576: %t448 = load %S.ast.Type, ptr %a23 %t449 = call i1 @finch.gen.isInt(%S.ast.Type %t448) - br i1 %t449, label %then6293, label %endif6295 -then6293: + br i1 %t449, label %then6579, label %endif6581 +then6579: %t450 = load ptr, ptr %a1 %t451 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t452 = load { ptr, i64, i64 }, ptr %t451 @@ -55345,11 +59310,11 @@ then6293: %t460 = load %S.ast.Type, ptr %a459 %t461 = insertvalue %S.gen.Val %t456, %S.ast.Type %t460, 1 ret %S.gen.Val %t461 -endif6295: +endif6581: %t462 = load %S.ast.Type, ptr %a23 %t463 = call i1 @finch.gen.isFloat(%S.ast.Type %t462) - br i1 %t463, label %then6296, label %endif6298 -then6296: + br i1 %t463, label %then6582, label %endif6584 +then6582: %t464 = load ptr, ptr %a1 %t465 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t466 = load { ptr, i64, i64 }, ptr %t465 @@ -55363,38 +59328,38 @@ then6296: %t474 = load %S.ast.Type, ptr %a473 %t475 = insertvalue %S.gen.Val %t470, %S.ast.Type %t474, 1 ret %S.gen.Val %t475 -endif6298: - br label %endif6292 -endif6292: +endif6584: + br label %endif6578 +endif6578: %t476 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t477 = load { ptr, i64, i64 }, ptr %t476 store { ptr, i64, i64 } %t477, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.4128, i64 4, i64 0 }, ptr %a479 + store { ptr, i64, i64 } { ptr @.str.4354, i64 4, i64 0 }, ptr %a479 %t480 = call i32 @finch_str_eq(ptr %a478, ptr %a479) %t481 = icmp ne i32 %t480, 0 - br label %logic.from6299 -logic.from6299: - br i1 %t481, label %logic.rhs6300, label %logic.end6301 -logic.rhs6300: + br label %logic.from6585 +logic.from6585: + br i1 %t481, label %logic.rhs6586, label %logic.end6587 +logic.rhs6586: %t482 = load %S.ast.Type, ptr %a23 %t483 = call i1 @finch.gen.isInt(%S.ast.Type %t482) - br label %logic.rend6302 -logic.rend6302: - br label %logic.end6301 -logic.end6301: - %t484 = phi i1 [ false, %logic.from6299 ], [ %t483, %logic.rend6302 ] - br i1 %t484, label %then6303, label %endif6305 -then6303: + br label %logic.rend6588 +logic.rend6588: + br label %logic.end6587 +logic.end6587: + %t484 = phi i1 [ false, %logic.from6585 ], [ %t483, %logic.rend6588 ] + br i1 %t484, label %then6589, label %endif6591 +then6589: %t485 = load ptr, ptr %a1 %t486 = load ptr, ptr %a1 %t487 = load %S.ast.Type, ptr %a23 %t488 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t486, %S.ast.Type %t487) - store { ptr, i64, i64 } { ptr @.str.4129, i64 8, i64 0 }, ptr %a490 + store { ptr, i64, i64 } { ptr @.str.4355, i64 8, i64 0 }, ptr %a490 store { ptr, i64, i64 } %t488, ptr %a491 call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) %t492 = load { ptr, i64, i64 }, ptr %a489 store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4130, i64 1, i64 0 }, ptr %a495 + store { ptr, i64, i64 } { ptr @.str.4356, i64 1, i64 0 }, ptr %a495 call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) %t496 = load { ptr, i64, i64 }, ptr %a493 %t497 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 @@ -55404,7 +59369,7 @@ then6303: call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) %t502 = load { ptr, i64, i64 }, ptr %a499 store { ptr, i64, i64 } %t502, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.4131, i64 3, i64 0 }, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.4357, i64 3, i64 0 }, ptr %a505 call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) %t506 = load { ptr, i64, i64 }, ptr %a503 %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t485, { ptr, i64, i64 } %t506) @@ -55415,45 +59380,45 @@ then6303: %t512 = load %S.ast.Type, ptr %a511 %t513 = insertvalue %S.gen.Val %t508, %S.ast.Type %t512, 1 ret %S.gen.Val %t513 -endif6305: +endif6591: %t514 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t515 = load { ptr, i64, i64 }, ptr %t514 store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.4132, i64 3, i64 0 }, ptr %a517 + store { ptr, i64, i64 } { ptr @.str.4358, i64 3, i64 0 }, ptr %a517 %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) %t519 = icmp ne i32 %t518, 0 - br label %logic.from6306 -logic.from6306: - br i1 %t519, label %logic.rhs6307, label %logic.end6308 -logic.rhs6307: + br label %logic.from6592 +logic.from6592: + br i1 %t519, label %logic.rhs6593, label %logic.end6594 +logic.rhs6593: %t520 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t521 = load { ptr, i64, i64 }, ptr %t520 store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.4133, i64 3, i64 0 }, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.4359, i64 3, i64 0 }, ptr %a523 %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) %t525 = icmp ne i32 %t524, 0 - br label %logic.from6309 -logic.from6309: - br i1 %t525, label %logic.end6311, label %logic.rhs6310 -logic.rhs6310: + br label %logic.from6595 +logic.from6595: + br i1 %t525, label %logic.end6597, label %logic.rhs6596 +logic.rhs6596: %t526 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t527 = load { ptr, i64, i64 }, ptr %t526 store { ptr, i64, i64 } %t527, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.4134, i64 4, i64 0 }, ptr %a529 + store { ptr, i64, i64 } { ptr @.str.4360, i64 4, i64 0 }, ptr %a529 %t530 = call i32 @finch_str_eq(ptr %a528, ptr %a529) %t531 = icmp ne i32 %t530, 0 - br label %logic.rend6312 -logic.rend6312: - br label %logic.end6311 -logic.end6311: - %t532 = phi i1 [ true, %logic.from6309 ], [ %t531, %logic.rend6312 ] - br label %logic.rend6313 -logic.rend6313: - br label %logic.end6308 -logic.end6308: - %t533 = phi i1 [ false, %logic.from6306 ], [ %t532, %logic.rend6313 ] - br i1 %t533, label %then6314, label %endif6316 -then6314: + br label %logic.rend6598 +logic.rend6598: + br label %logic.end6597 +logic.end6597: + %t532 = phi i1 [ true, %logic.from6595 ], [ %t531, %logic.rend6598 ] + br label %logic.rend6599 +logic.rend6599: + br label %logic.end6594 +logic.end6594: + %t533 = phi i1 [ false, %logic.from6592 ], [ %t532, %logic.rend6599 ] + br i1 %t533, label %then6600, label %endif6602 +then6600: %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t535 = load { ptr, i64, i64 }, ptr %t534 store { ptr, i64, i64 } %t535, ptr %a536 @@ -55466,39 +59431,39 @@ then6314: %t543 = load %S.ast.Type, ptr %a542 %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 ret %S.gen.Val %t544 -endif6316: +endif6602: %t545 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t546 = load { ptr, i64, i64 }, ptr %t545 store { ptr, i64, i64 } %t546, ptr %a547 - store { ptr, i64, i64 } { ptr @.str.4135, i64 3, i64 0 }, ptr %a548 + store { ptr, i64, i64 } { ptr @.str.4361, i64 3, i64 0 }, ptr %a548 %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) %t550 = icmp ne i32 %t549, 0 - br label %logic.from6317 -logic.from6317: - br i1 %t550, label %logic.rhs6318, label %logic.end6319 -logic.rhs6318: + br label %logic.from6603 +logic.from6603: + br i1 %t550, label %logic.rhs6604, label %logic.end6605 +logic.rhs6604: %t551 = load %S.ast.Type, ptr %a23 %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend6320 -logic.rend6320: - br label %logic.end6319 -logic.end6319: - %t553 = phi i1 [ false, %logic.from6317 ], [ %t552, %logic.rend6320 ] - br i1 %t553, label %then6321, label %endif6323 -then6321: + br label %logic.rend6606 +logic.rend6606: + br label %logic.end6605 +logic.end6605: + %t553 = phi i1 [ false, %logic.from6603 ], [ %t552, %logic.rend6606 ] + br i1 %t553, label %then6607, label %endif6609 +then6607: %t554 = load ptr, ptr %a1 %t555 = load ptr, ptr %a1 %t556 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t557 = load { ptr, i64, i64 }, ptr %t556 %t558 = load %S.ast.Type, ptr %a23 - %t559 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4137, i64 3, i64 0 }) + %t559 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4363, i64 3, i64 0 }) %t560 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t555, { ptr, i64, i64 } %t557, %S.ast.Type %t558, %S.ast.Type %t559) - store { ptr, i64, i64 } { ptr @.str.4136, i64 13, i64 0 }, ptr %a562 + store { ptr, i64, i64 } { ptr @.str.4362, i64 13, i64 0 }, ptr %a562 store { ptr, i64, i64 } %t560, ptr %a563 call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) %t564 = load { ptr, i64, i64 }, ptr %a561 store { ptr, i64, i64 } %t564, ptr %a566 - store { ptr, i64, i64 } { ptr @.str.4138, i64 7, i64 0 }, ptr %a567 + store { ptr, i64, i64 } { ptr @.str.4364, i64 7, i64 0 }, ptr %a567 call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) %t568 = load { ptr, i64, i64 }, ptr %a565 %t569 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t568) @@ -55509,35 +59474,35 @@ then6321: %t574 = load %S.ast.Type, ptr %a573 %t575 = insertvalue %S.gen.Val %t570, %S.ast.Type %t574, 1 ret %S.gen.Val %t575 -endif6323: +endif6609: %t576 = load %S.ast.Type, ptr %a3 %t577 = call i1 @finch.gen.isInt(%S.ast.Type %t576) - br label %logic.from6324 -logic.from6324: - br i1 %t577, label %logic.rhs6325, label %logic.end6326 -logic.rhs6325: + br label %logic.from6610 +logic.from6610: + br i1 %t577, label %logic.rhs6611, label %logic.end6612 +logic.rhs6611: %t578 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t579 = load { ptr, i64, i64 }, ptr %t578 store { ptr, i64, i64 } %t579, ptr %a580 - store { ptr, i64, i64 } { ptr @.str.4139, i64 3, i64 0 }, ptr %a581 + store { ptr, i64, i64 } { ptr @.str.4365, i64 3, i64 0 }, ptr %a581 %t582 = call i32 @finch_str_eq(ptr %a580, ptr %a581) %t583 = icmp ne i32 %t582, 0 - br label %logic.rend6327 -logic.rend6327: - br label %logic.end6326 -logic.end6326: - %t584 = phi i1 [ false, %logic.from6324 ], [ %t583, %logic.rend6327 ] - br i1 %t584, label %then6328, label %endif6330 -then6328: + br label %logic.rend6613 +logic.rend6613: + br label %logic.end6612 +logic.end6612: + %t584 = phi i1 [ false, %logic.from6610 ], [ %t583, %logic.rend6613 ] + br i1 %t584, label %then6614, label %endif6616 +then6614: %t585 = load ptr, ptr %a1 %t586 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } { ptr @.str.4140, i64 13, i64 0 }, ptr %a589 + store { ptr, i64, i64 } { ptr @.str.4366, i64 13, i64 0 }, ptr %a589 store { ptr, i64, i64 } %t587, ptr %a590 call void @finch_str_concat(ptr %a588, ptr %a589, ptr %a590) %t591 = load { ptr, i64, i64 }, ptr %a588 store { ptr, i64, i64 } %t591, ptr %a593 - store { ptr, i64, i64 } { ptr @.str.4141, i64 4, i64 0 }, ptr %a594 + store { ptr, i64, i64 } { ptr @.str.4367, i64 4, i64 0 }, ptr %a594 call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) %t595 = load { ptr, i64, i64 }, ptr %a592 %t596 = load ptr, ptr %a1 @@ -55555,67 +59520,67 @@ then6328: %t608 = load %S.ast.Type, ptr %a607 %t609 = insertvalue %S.gen.Val %t604, %S.ast.Type %t608, 1 ret %S.gen.Val %t609 -endif6330: +endif6616: %t610 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 %t611 = load { ptr, i64, i64 }, ptr %t610 store { ptr, i64, i64 } %t611, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.4142, i64 3, i64 0 }, ptr %a613 + store { ptr, i64, i64 } { ptr @.str.4368, i64 3, i64 0 }, ptr %a613 %t614 = call i32 @finch_str_eq(ptr %a612, ptr %a613) %t615 = icmp ne i32 %t614, 0 - br label %logic.from6331 -logic.from6331: - br i1 %t615, label %logic.rhs6332, label %logic.end6333 -logic.rhs6332: + br label %logic.from6617 +logic.from6617: + br i1 %t615, label %logic.rhs6618, label %logic.end6619 +logic.rhs6618: %t616 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 %t617 = load { ptr, i64, i64 }, ptr %t616 store { ptr, i64, i64 } %t617, ptr %a618 - store { ptr, i64, i64 } { ptr @.str.4143, i64 3, i64 0 }, ptr %a619 + store { ptr, i64, i64 } { ptr @.str.4369, i64 3, i64 0 }, ptr %a619 %t620 = call i32 @finch_str_eq(ptr %a618, ptr %a619) %t621 = icmp ne i32 %t620, 0 - br label %logic.rend6334 -logic.rend6334: - br label %logic.end6333 -logic.end6333: - %t622 = phi i1 [ false, %logic.from6331 ], [ %t621, %logic.rend6334 ] - br i1 %t622, label %then6335, label %endif6337 -then6335: + br label %logic.rend6620 +logic.rend6620: + br label %logic.end6619 +logic.end6619: + %t622 = phi i1 [ false, %logic.from6617 ], [ %t621, %logic.rend6620 ] + br i1 %t622, label %then6621, label %endif6623 +then6621: %t623 = load ptr, ptr %a1 %t624 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t625 = load { ptr, i64, i64 }, ptr %t624 %t626 = extractvalue { ptr, i64, i64 } %t625, 1 %t627 = icmp uge i64 0, %t626 - br i1 %t627, label %range6338, label %inrange6339 -range6338: - call void @finch_panic_index(ptr @.str.4144, i64 3550, i64 0, i64 %t626) + br i1 %t627, label %range6624, label %inrange6625 +range6624: + call void @finch_panic_index(ptr @.str.4370, i64 3678, i64 0, i64 %t626) unreachable -inrange6339: +inrange6625: %t628 = extractvalue { ptr, i64, i64 } %t625, 0 %t629 = getelementptr inbounds %S.ast.Node, ptr %t628, i64 0 %t630 = load %S.ast.Node, ptr %t629 - call void @finch.gen.fail(ptr %t623, %S.ast.Node %t630, { ptr, i64, i64 } { ptr @.str.4145, i64 70, i64 0 }) - br label %endif6337 -endif6337: + call void @finch.gen.fail(ptr %t623, %S.ast.Node %t630, { ptr, i64, i64 } { ptr @.str.4371, i64 70, i64 0 }) + br label %endif6623 +endif6623: %t631 = load ptr, ptr %a1 %t632 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t633 = load { ptr, i64, i64 }, ptr %t632 %t634 = extractvalue { ptr, i64, i64 } %t633, 1 %t635 = icmp uge i64 0, %t634 - br i1 %t635, label %range6340, label %inrange6341 -range6340: - call void @finch_panic_index(ptr @.str.4146, i64 3552, i64 0, i64 %t634) + br i1 %t635, label %range6626, label %inrange6627 +range6626: + call void @finch_panic_index(ptr @.str.4372, i64 3680, i64 0, i64 %t634) unreachable -inrange6341: +inrange6627: %t636 = extractvalue { ptr, i64, i64 } %t633, 0 %t637 = getelementptr inbounds %S.ast.Node, ptr %t636, i64 0 %t638 = load %S.ast.Node, ptr %t637 %t639 = load %S.ast.Type, ptr %a23 %t640 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t639) - store { ptr, i64, i64 } { ptr @.str.4147, i64 11, i64 0 }, ptr %a642 + store { ptr, i64, i64 } { ptr @.str.4373, i64 11, i64 0 }, ptr %a642 store { ptr, i64, i64 } %t640, ptr %a643 call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) %t644 = load { ptr, i64, i64 }, ptr %a641 store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.4148, i64 6, i64 0 }, ptr %a647 + store { ptr, i64, i64 } { ptr @.str.4374, i64 6, i64 0 }, ptr %a647 call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) %t648 = load { ptr, i64, i64 }, ptr %a645 %t649 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -55655,18 +59620,18 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br i1 %t8, label %then6342, label %endif6344 -then6342: + br i1 %t8, label %then6628, label %endif6630 +then6628: %t9 = load ptr, ptr %a1 %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic6345, label %ok6346 -panic6345: - call void @finch_panic(ptr @.str.4150, i64 3585, ptr @.str.4151) + br i1 %t10, label %panic6631, label %ok6632 +panic6631: + call void @finch_panic(ptr @.str.4376, i64 3713, ptr @.str.4377) unreachable -ok6346: +ok6632: %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 15 %t12 = load ptr, ptr %a1 %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -55677,25 +59642,25 @@ ok6346: %t18 = load { ptr, i64, i64 }, ptr %t11 %t19 = extractvalue { ptr, i64, i64 } %t18, 1 %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range6347, label %inrange6348 -range6347: - call void @finch_panic_index(ptr @.str.4152, i64 3585, i64 %t17, i64 %t19) + br i1 %t20, label %range6633, label %inrange6634 +range6633: + call void @finch_panic_index(ptr @.str.4378, i64 3713, i64 %t17, i64 %t19) unreachable -inrange6348: +inrange6634: %t21 = extractvalue { ptr, i64, i64 } %t18, 0 %t22 = getelementptr inbounds %S.gen.StructDef, ptr %t21, i64 %t17 %t23 = getelementptr inbounds %S.gen.StructDef, ptr %t22, i32 0, i32 9 %t24 = load i64, ptr %t23 ret i64 %t24 -endif6344: +endif6630: %t25 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t26 = load { ptr, i64, i64 }, ptr %t25 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4153, i64 5, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.4379, i64 5, i64 0 }, ptr %a28 %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) %t30 = icmp ne i32 %t29, 0 - br i1 %t30, label %then6349, label %endif6351 -then6349: + br i1 %t30, label %then6635, label %endif6637 +then6635: %t31 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t32 = load i64, ptr %t31 %t33 = load ptr, ptr %a1 @@ -55703,73 +59668,73 @@ then6349: %t35 = load { ptr, i64, i64 }, ptr %t34 %t36 = extractvalue { ptr, i64, i64 } %t35, 1 %t37 = icmp uge i64 0, %t36 - br i1 %t37, label %range6352, label %inrange6353 -range6352: - call void @finch_panic_index(ptr @.str.4154, i64 3588, i64 0, i64 %t36) + br i1 %t37, label %range6638, label %inrange6639 +range6638: + call void @finch_panic_index(ptr @.str.4380, i64 3716, i64 0, i64 %t36) unreachable -inrange6353: +inrange6639: %t38 = extractvalue { ptr, i64, i64 } %t35, 0 %t39 = getelementptr inbounds %S.ast.Type, ptr %t38, i64 0 %t40 = load %S.ast.Type, ptr %t39 %t41 = call i64 @finch.gen.sizeBytes(ptr %t33, %S.ast.Type %t40) %t42 = mul i64 %t32, %t41 ret i64 %t42 -endif6351: +endif6637: %t43 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t44 = load { ptr, i64, i64 }, ptr %t43 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.4155, i64 3, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.4381, i64 3, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br label %logic.from6354 -logic.from6354: - br i1 %t48, label %logic.end6356, label %logic.rhs6355 -logic.rhs6355: + br label %logic.from6640 +logic.from6640: + br i1 %t48, label %logic.end6642, label %logic.rhs6641 +logic.rhs6641: %t49 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t50 = load { ptr, i64, i64 }, ptr %t49 store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4156, i64 3, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.4382, i64 3, i64 0 }, ptr %a52 %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) %t54 = icmp ne i32 %t53, 0 - br label %logic.rend6357 -logic.rend6357: - br label %logic.end6356 -logic.end6356: - %t55 = phi i1 [ true, %logic.from6354 ], [ %t54, %logic.rend6357 ] - br i1 %t55, label %then6358, label %endif6360 -then6358: + br label %logic.rend6643 +logic.rend6643: + br label %logic.end6642 +logic.end6642: + %t55 = phi i1 [ true, %logic.from6640 ], [ %t54, %logic.rend6643 ] + br i1 %t55, label %then6644, label %endif6646 +then6644: ret i64 8 -endif6360: +endif6646: %t56 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t57 = load { ptr, i64, i64 }, ptr %t56 store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.4157, i64 5, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4383, i64 5, i64 0 }, ptr %a59 %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then6361, label %endif6363 -then6361: + br i1 %t61, label %then6647, label %endif6649 +then6647: ret i64 8 -endif6363: +endif6649: %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t63 = load { ptr, i64, i64 }, ptr %t62 store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.4158, i64 3, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4384, i64 3, i64 0 }, ptr %a65 %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) %t67 = icmp ne i32 %t66, 0 - br i1 %t67, label %then6364, label %endif6366 -then6364: + br i1 %t67, label %then6650, label %endif6652 +then6650: ret i64 4 -endif6366: +endif6652: %t68 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t69 = load { ptr, i64, i64 }, ptr %t68 store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4159, i64 4, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.4385, i64 4, i64 0 }, ptr %a71 %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then6367, label %endif6369 -then6367: + br i1 %t73, label %then6653, label %endif6655 +then6653: ret i64 1 -endif6369: +endif6655: %t74 = load %S.ast.Type, ptr %a2 %t75 = call i64 @finch.gen.bitsOf(%S.ast.Type %t74) %t76 = sdiv i64 %t75, 8 @@ -55816,18 +59781,18 @@ entry: %t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4386, i64 6, i64 0 }, ptr %a8 %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) %t10 = icmp ne i32 %t9, 0 - br i1 %t10, label %then6370, label %else6371 -then6370: + br i1 %t10, label %then6656, label %else6657 +then6656: %t11 = load ptr, ptr %a1 %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic6373, label %ok6374 -panic6373: - call void @finch_panic(ptr @.str.4161, i64 3609, ptr @.str.4162) + br i1 %t12, label %panic6659, label %ok6660 +panic6659: + call void @finch_panic(ptr @.str.4387, i64 3737, ptr @.str.4388) unreachable -ok6374: +ok6660: %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 15 %t14 = load ptr, ptr %a1 %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -55838,11 +59803,11 @@ ok6374: %t20 = load { ptr, i64, i64 }, ptr %t13 %t21 = extractvalue { ptr, i64, i64 } %t20, 1 %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range6375, label %inrange6376 -range6375: - call void @finch_panic_index(ptr @.str.4163, i64 3609, i64 %t19, i64 %t21) + br i1 %t22, label %range6661, label %inrange6662 +range6661: + call void @finch_panic_index(ptr @.str.4389, i64 3737, i64 %t19, i64 %t21) unreachable -inrange6376: +inrange6662: %t23 = extractvalue { ptr, i64, i64 } %t20, 0 %t24 = getelementptr inbounds %S.gen.StructDef, ptr %t23, i64 %t19 %t25 = load %S.gen.StructDef, ptr %t24 @@ -55854,23 +59819,23 @@ inrange6376: %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i32 0, i32 1 %t32 = load i64, ptr %t31 store i64 0, ptr %a33 - br label %for.cond6377 -for.cond6377: + br label %for.cond6663 +for.cond6663: %t34 = load i64, ptr %a33 %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body6378, label %for.end6380 -for.body6378: + br i1 %t35, label %for.body6664, label %for.end6666 +for.body6664: %t36 = load ptr, ptr %a1 %t37 = getelementptr inbounds %S.gen.StructDef, ptr %a29, i32 0, i32 12 %t38 = load i64, ptr %a33 %t39 = load { ptr, i64, i64 }, ptr %t37 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6381, label %inrange6382 -range6381: - call void @finch_panic_index(ptr @.str.4164, i64 3611, i64 %t38, i64 %t40) + br i1 %t41, label %range6667, label %inrange6668 +range6667: + call void @finch_panic_index(ptr @.str.4390, i64 3739, i64 %t38, i64 %t40) unreachable -inrange6382: +inrange6668: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Type, ptr %t42, i64 %t38 %t44 = load %S.ast.Type, ptr %t43 @@ -55880,11 +59845,11 @@ inrange6382: %t48 = load { ptr, i64, i64 }, ptr %t46 %t49 = extractvalue { ptr, i64, i64 } %t48, 1 %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range6383, label %inrange6384 -range6383: - call void @finch_panic_index(ptr @.str.4165, i64 3611, i64 %t47, i64 %t49) + br i1 %t50, label %range6669, label %inrange6670 +range6669: + call void @finch_panic_index(ptr @.str.4391, i64 3739, i64 %t47, i64 %t49) unreachable -inrange6384: +inrange6670: %t51 = extractvalue { ptr, i64, i64 } %t48, 0 %t52 = getelementptr inbounds i64, ptr %t51, i64 %t47 %t53 = load i64, ptr %t52 @@ -55892,14 +59857,14 @@ inrange6384: %t55 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t36, %S.ast.Type %t44, i64 %t54) store { ptr, i64, i64 } %t55, ptr %a56 store i64 0, ptr %a57 - br label %each.cond6385 -each.cond6385: + br label %each.cond6671 +each.cond6671: %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a56, i32 0, i32 1 %t59 = load i64, ptr %t58 %t60 = load i64, ptr %a57 %t61 = icmp slt i64 %t60, %t59 - br i1 %t61, label %each.body6386, label %each.end6388 -each.body6386: + br i1 %t61, label %each.body6672, label %each.end6674 +each.body6672: %t62 = load ptr, ptr %a56 %t63 = getelementptr inbounds %S.gen.Leaf, ptr %t62, i64 %t60 %t64 = load %S.gen.Leaf, ptr %t63 @@ -55913,40 +59878,40 @@ each.body6386: %t71 = getelementptr inbounds %S.gen.Leaf, ptr %t70, i64 %t68 store %S.gen.Leaf %t67, ptr %t71 store i64 %t69, ptr %t66 - br label %each.step6387 -each.step6387: + br label %each.step6673 +each.step6673: %t72 = load i64, ptr %a57 %t73 = add i64 %t72, 1 store i64 %t73, ptr %a57 - br label %each.cond6385 -each.end6388: - br label %for.step6379 -for.step6379: + br label %each.cond6671 +each.end6674: + br label %for.step6665 +for.step6665: %t74 = load i64, ptr %a33 %t75 = add i64 %t74, 1 store i64 %t75, ptr %a33 - br label %for.cond6377 -for.end6380: - br label %endif6372 -else6371: + br label %for.cond6663 +for.end6666: + br label %endif6658 +else6657: %t76 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t77 = load { ptr, i64, i64 }, ptr %t76 store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4166, i64 5, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4392, i64 5, i64 0 }, ptr %a79 %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) %t81 = icmp ne i32 %t80, 0 - br i1 %t81, label %then6389, label %else6390 -then6389: + br i1 %t81, label %then6675, label %else6676 +then6675: %t82 = load ptr, ptr %a1 %t83 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t84 = load { ptr, i64, i64 }, ptr %t83 %t85 = extractvalue { ptr, i64, i64 } %t84, 1 %t86 = icmp uge i64 0, %t85 - br i1 %t86, label %range6392, label %inrange6393 -range6392: - call void @finch_panic_index(ptr @.str.4167, i64 3616, i64 0, i64 %t85) + br i1 %t86, label %range6678, label %inrange6679 +range6678: + call void @finch_panic_index(ptr @.str.4393, i64 3744, i64 0, i64 %t85) unreachable -inrange6393: +inrange6679: %t87 = extractvalue { ptr, i64, i64 } %t84, 0 %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i64 0 %t89 = load %S.ast.Type, ptr %t88 @@ -55955,22 +59920,22 @@ inrange6393: %t92 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 %t93 = load i64, ptr %t92 store i64 0, ptr %a94 - br label %for.cond6394 -for.cond6394: + br label %for.cond6680 +for.cond6680: %t95 = load i64, ptr %a94 %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body6395, label %for.end6397 -for.body6395: + br i1 %t96, label %for.body6681, label %for.end6683 +for.body6681: %t97 = load ptr, ptr %a1 %t98 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 %t99 = load { ptr, i64, i64 }, ptr %t98 %t100 = extractvalue { ptr, i64, i64 } %t99, 1 %t101 = icmp uge i64 0, %t100 - br i1 %t101, label %range6398, label %inrange6399 -range6398: - call void @finch_panic_index(ptr @.str.4168, i64 3618, i64 0, i64 %t100) + br i1 %t101, label %range6684, label %inrange6685 +range6684: + call void @finch_panic_index(ptr @.str.4394, i64 3746, i64 0, i64 %t100) unreachable -inrange6399: +inrange6685: %t102 = extractvalue { ptr, i64, i64 } %t99, 0 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 0 %t104 = load %S.ast.Type, ptr %t103 @@ -55982,14 +59947,14 @@ inrange6399: %t110 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t97, %S.ast.Type %t104, i64 %t109) store { ptr, i64, i64 } %t110, ptr %a111 store i64 0, ptr %a112 - br label %each.cond6400 -each.cond6400: + br label %each.cond6686 +each.cond6686: %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 %t114 = load i64, ptr %t113 %t115 = load i64, ptr %a112 %t116 = icmp slt i64 %t115, %t114 - br i1 %t116, label %each.body6401, label %each.end6403 -each.body6401: + br i1 %t116, label %each.body6687, label %each.end6689 +each.body6687: %t117 = load ptr, ptr %a111 %t118 = getelementptr inbounds %S.gen.Leaf, ptr %t117, i64 %t115 %t119 = load %S.gen.Leaf, ptr %t118 @@ -56003,22 +59968,22 @@ each.body6401: %t126 = getelementptr inbounds %S.gen.Leaf, ptr %t125, i64 %t123 store %S.gen.Leaf %t122, ptr %t126 store i64 %t124, ptr %t121 - br label %each.step6402 -each.step6402: + br label %each.step6688 +each.step6688: %t127 = load i64, ptr %a112 %t128 = add i64 %t127, 1 store i64 %t128, ptr %a112 - br label %each.cond6400 -each.end6403: - br label %for.step6396 -for.step6396: + br label %each.cond6686 +each.end6689: + br label %for.step6682 +for.step6682: %t129 = load i64, ptr %a94 %t130 = add i64 %t129, 1 store i64 %t130, ptr %a94 - br label %for.cond6394 -for.end6397: - br label %endif6391 -else6390: + br label %for.cond6680 +for.end6683: + br label %endif6677 +else6676: %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 %t132 = load i64, ptr %a3 %t133 = insertvalue %S.gen.Leaf zeroinitializer, i64 %t132, 0 @@ -56032,7 +59997,7 @@ else6390: %t141 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t142 = load { ptr, i64, i64 }, ptr %t141 store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.4169, i64 5, i64 0 }, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.4395, i64 5, i64 0 }, ptr %a144 %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) %t146 = icmp ne i32 %t145, 0 %t147 = insertvalue %S.gen.Leaf %t140, i1 %t146, 3 @@ -56043,10 +60008,10 @@ else6390: %t151 = getelementptr inbounds %S.gen.Leaf, ptr %t150, i64 %t148 store %S.gen.Leaf %t147, ptr %t151 store i64 %t149, ptr %t131 - br label %endif6391 -endif6391: - br label %endif6372 -endif6372: + br label %endif6677 +endif6677: + br label %endif6658 +endif6658: %t152 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t152, ptr %a153 call void @finch.copy.arr_S_gen_Leaf(ptr %a154, ptr %a153) @@ -56139,28 +60104,28 @@ entry: %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t16 = load i64, ptr %t15 %t17 = icmp sgt i64 %t16, 0 - br label %logic.from6404 -logic.from6404: - br i1 %t17, label %logic.rhs6405, label %logic.end6406 -logic.rhs6405: + br label %logic.from6690 +logic.from6690: + br i1 %t17, label %logic.rhs6691, label %logic.end6692 +logic.rhs6691: %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t19 = load i64, ptr %t18 %t20 = icmp sle i64 %t19, 4 - br label %logic.rend6407 -logic.rend6407: - br label %logic.end6406 -logic.end6406: - %t21 = phi i1 [ false, %logic.from6404 ], [ %t20, %logic.rend6407 ] + br label %logic.rend6693 +logic.rend6693: + br label %logic.end6692 +logic.end6692: + %t21 = phi i1 [ false, %logic.from6690 ], [ %t20, %logic.rend6693 ] store i1 %t21, ptr %a22 store i64 0, ptr %a23 - br label %each.cond6408 -each.cond6408: + br label %each.cond6694 +each.cond6694: %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t25 = load i64, ptr %t24 %t26 = load i64, ptr %a23 %t27 = icmp slt i64 %t26, %t25 - br i1 %t27, label %each.body6409, label %each.end6411 -each.body6409: + br i1 %t27, label %each.body6695, label %each.end6697 +each.body6695: %t28 = load ptr, ptr %a14 %t29 = getelementptr inbounds %S.gen.Leaf, ptr %t28, i64 %t26 %t30 = load %S.gen.Leaf, ptr %t29 @@ -56168,77 +60133,77 @@ each.body6409: %t32 = getelementptr inbounds %S.gen.Leaf, ptr %a31, i32 0, i32 2 %t33 = load i1, ptr %t32 %t34 = xor i1 %t33, true - br label %logic.from6412 -logic.from6412: - br i1 %t34, label %logic.end6414, label %logic.rhs6413 -logic.rhs6413: + br label %logic.from6698 +logic.from6698: + br i1 %t34, label %logic.end6700, label %logic.rhs6699 +logic.rhs6699: %t35 = getelementptr inbounds %S.gen.Leaf, ptr %a31, i32 0, i32 3 %t36 = load i1, ptr %t35 %t37 = load { ptr, i64, i64 }, ptr %a14 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 0, %t38 - br i1 %t39, label %range6415, label %inrange6416 -range6415: - call void @finch_panic_index(ptr @.str.4170, i64 3635, i64 0, i64 %t38) + br i1 %t39, label %range6701, label %inrange6702 +range6701: + call void @finch_panic_index(ptr @.str.4396, i64 3763, i64 0, i64 %t38) unreachable -inrange6416: +inrange6702: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.gen.Leaf, ptr %t40, i64 0 %t42 = getelementptr inbounds %S.gen.Leaf, ptr %t41, i32 0, i32 3 %t43 = load i1, ptr %t42 %t44 = icmp ne i1 %t36, %t43 - br label %logic.rend6417 -logic.rend6417: - br label %logic.end6414 -logic.end6414: - %t45 = phi i1 [ true, %logic.from6412 ], [ %t44, %logic.rend6417 ] - br i1 %t45, label %then6418, label %endif6420 -then6418: + br label %logic.rend6703 +logic.rend6703: + br label %logic.end6700 +logic.end6700: + %t45 = phi i1 [ true, %logic.from6698 ], [ %t44, %logic.rend6703 ] + br i1 %t45, label %then6704, label %endif6706 +then6704: store i1 false, ptr %a22 - br label %endif6420 -endif6420: - br label %each.step6410 -each.step6410: + br label %endif6706 +endif6706: + br label %each.step6696 +each.step6696: %t46 = load i64, ptr %a23 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a23 - br label %each.cond6408 -each.end6411: + br label %each.cond6694 +each.end6697: %t48 = load i1, ptr %a22 - br i1 %t48, label %then6421, label %endif6423 -then6421: - store { ptr, i64, i64 } { ptr @.str.4171, i64 5, i64 0 }, ptr %a49 + br i1 %t48, label %then6707, label %endif6709 +then6707: + store { ptr, i64, i64 } { ptr @.str.4397, i64 5, i64 0 }, ptr %a49 %t50 = load { ptr, i64, i64 }, ptr %a14 %t51 = extractvalue { ptr, i64, i64 } %t50, 1 %t52 = icmp uge i64 0, %t51 - br i1 %t52, label %range6424, label %inrange6425 -range6424: - call void @finch_panic_index(ptr @.str.4172, i64 3641, i64 0, i64 %t51) + br i1 %t52, label %range6710, label %inrange6711 +range6710: + call void @finch_panic_index(ptr @.str.4398, i64 3769, i64 0, i64 %t51) unreachable -inrange6425: +inrange6711: %t53 = extractvalue { ptr, i64, i64 } %t50, 0 %t54 = getelementptr inbounds %S.gen.Leaf, ptr %t53, i64 0 %t55 = getelementptr inbounds %S.gen.Leaf, ptr %t54, i32 0, i32 3 %t56 = load i1, ptr %t55 - br i1 %t56, label %then6426, label %endif6428 -then6426: - store { ptr, i64, i64 } { ptr @.str.4173, i64 6, i64 0 }, ptr %a49 - br label %endif6428 -endif6428: + br i1 %t56, label %then6712, label %endif6714 +then6712: + store { ptr, i64, i64 } { ptr @.str.4399, i64 6, i64 0 }, ptr %a49 + br label %endif6714 +endif6714: %t57 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4174, i64 6, i64 0 }, ptr %t57 + store { ptr, i64, i64 } { ptr @.str.4400, i64 6, i64 0 }, ptr %t57 %t58 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t61 = load i64, ptr %t60 call void @finch_str_from_int(ptr %a62, i64 %t61) %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.4175, i64 1, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.4401, i64 1, i64 0 }, ptr %a65 store { ptr, i64, i64 } %t63, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.4176, i64 3, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4402, i64 3, i64 0 }, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 %t72 = load { ptr, i64, i64 }, ptr %a49 @@ -56247,7 +60212,7 @@ endif6428: call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4177, i64 1, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4403, i64 1, i64 0 }, ptr %a79 call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) %t80 = load { ptr, i64, i64 }, ptr %a77 %t81 = load i64, ptr %t59 @@ -56259,14 +60224,14 @@ endif6428: store i64 %t82, ptr %t59 store { ptr, i64, i64 } zeroinitializer, ptr %a85 store i64 0, ptr %a86 - br label %each.cond6429 -each.cond6429: + br label %each.cond6715 +each.cond6715: %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t88 = load i64, ptr %t87 %t89 = load i64, ptr %a86 %t90 = icmp slt i64 %t89, %t88 - br i1 %t90, label %each.body6430, label %each.end6432 -each.body6430: + br i1 %t90, label %each.body6716, label %each.end6718 +each.body6716: %t91 = load ptr, ptr %a14 %t92 = getelementptr inbounds %S.gen.Leaf, ptr %t91, i64 %t89 %t93 = load %S.gen.Leaf, ptr %t92 @@ -56283,23 +60248,23 @@ each.body6430: %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 store { ptr, i64, i64 } %t99, ptr %t103 store i64 %t101, ptr %t95 - br label %each.step6431 -each.step6431: + br label %each.step6717 +each.step6717: %t104 = load i64, ptr %a86 %t105 = add i64 %t104, 1 store i64 %t105, ptr %a86 - br label %each.cond6429 -each.end6432: + br label %each.cond6715 +each.end6718: %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %a85, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.4405, i64 2, i64 0 }, ptr %a107 call void @finch_str_join(ptr %a108, ptr %a85, ptr %a107) %t109 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4178, i64 2, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.4404, i64 2, i64 0 }, ptr %a111 store { ptr, i64, i64 } %t109, ptr %a112 call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) %t113 = load { ptr, i64, i64 }, ptr %a110 store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4180, i64 2, i64 0 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.4406, i64 2, i64 0 }, ptr %a116 call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 %t118 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 @@ -56309,25 +60274,25 @@ each.end6432: call void @finch.copy.S_gen_Abi(ptr %a121, ptr %a120) %t122 = load %S.gen.Abi, ptr %a121 ret %S.gen.Abi %t122 -endif6423: +endif6709: %t123 = load i64, ptr %a4 %t124 = icmp sgt i64 %t123, 16 - br i1 %t124, label %then6433, label %endif6435 -then6433: + br i1 %t124, label %then6719, label %endif6721 +then6719: %t125 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4181, i64 8, i64 0 }, ptr %t125 + store { ptr, i64, i64 } { ptr @.str.4407, i64 8, i64 0 }, ptr %t125 %t126 = load %S.gen.Abi, ptr %a10 store %S.gen.Abi %t126, ptr %a127 call void @finch.copy.S_gen_Abi(ptr %a128, ptr %a127) %t129 = load %S.gen.Abi, ptr %a128 ret %S.gen.Abi %t129 -endif6435: +endif6721: %t130 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4182, i64 6, i64 0 }, ptr %t130 + store { ptr, i64, i64 } { ptr @.str.4408, i64 6, i64 0 }, ptr %t130 %t131 = load i64, ptr %a5 %t132 = icmp sge i64 %t131, 16 - br i1 %t132, label %then6436, label %else6437 -then6436: + br i1 %t132, label %then6722, label %else6723 +then6722: %t133 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 %t135 = load i64, ptr %t134 @@ -56335,16 +60300,16 @@ then6436: call void @finch_arr_reserve(ptr %t133, i64 %t136, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t137 = load ptr, ptr %t133 %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i64 %t135 - store { ptr, i64, i64 } { ptr @.str.4183, i64 4, i64 0 }, ptr %t138 + store { ptr, i64, i64 } { ptr @.str.4409, i64 4, i64 0 }, ptr %t138 store i64 %t136, ptr %t134 %t139 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - store { ptr, i64, i64 } { ptr @.str.4184, i64 4, i64 0 }, ptr %t139 - br label %endif6438 -else6437: + store { ptr, i64, i64 } { ptr @.str.4410, i64 4, i64 0 }, ptr %t139 + br label %endif6724 +else6723: %t140 = load i64, ptr %a4 %t141 = icmp sle i64 %t140, 8 - br i1 %t141, label %then6439, label %else6440 -then6439: + br i1 %t141, label %then6725, label %else6726 +then6725: %t142 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 %t144 = load i64, ptr %t143 @@ -56352,20 +60317,20 @@ then6439: call void @finch_arr_reserve(ptr %t142, i64 %t145, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t146 = load ptr, ptr %t142 %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t144 - store { ptr, i64, i64 } { ptr @.str.4185, i64 3, i64 0 }, ptr %t147 + store { ptr, i64, i64 } { ptr @.str.4411, i64 3, i64 0 }, ptr %t147 store i64 %t145, ptr %t143 %t148 = load i64, ptr %a4 %t149 = mul i64 %t148, 8 call void @finch_str_from_int(ptr %a150, i64 %t149) %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.4186, i64 1, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a153 store { ptr, i64, i64 } %t151, ptr %a154 call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) %t155 = load { ptr, i64, i64 }, ptr %a152 %t156 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 store { ptr, i64, i64 } %t155, ptr %t156 - br label %endif6441 -else6440: + br label %endif6727 +else6726: %t157 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i32 0, i32 1 %t159 = load i64, ptr %t158 @@ -56373,14 +60338,14 @@ else6440: call void @finch_arr_reserve(ptr %t157, i64 %t160, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t161 = load ptr, ptr %t157 %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t159 - store { ptr, i64, i64 } { ptr @.str.4187, i64 9, i64 0 }, ptr %t162 + store { ptr, i64, i64 } { ptr @.str.4413, i64 9, i64 0 }, ptr %t162 store i64 %t160, ptr %t158 %t163 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - store { ptr, i64, i64 } { ptr @.str.4188, i64 9, i64 0 }, ptr %t163 - br label %endif6441 -endif6441: - br label %endif6438 -endif6438: + store { ptr, i64, i64 } { ptr @.str.4414, i64 9, i64 0 }, ptr %t163 + br label %endif6727 +endif6727: + br label %endif6724 +endif6724: %t164 = load %S.gen.Abi, ptr %a10 store %S.gen.Abi %t164, ptr %a165 call void @finch.copy.S_gen_Abi(ptr %a166, ptr %a165) @@ -56441,29 +60406,29 @@ entry: %a294 = alloca %S.gen.Abi, align 16 store ptr %p0, ptr %a1 store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4189, i64 6, i64 0 }, 0 + %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4415, i64 6, i64 0 }, 0 store %S.gen.Abi %t3, ptr %a4 %t5 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t6 = load { ptr, i64, i64 }, ptr %t5 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.4190, i64 6, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.4416, i64 6, i64 0 }, ptr %a8 %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) %t10 = icmp eq i32 %t9, 0 - br i1 %t10, label %then6442, label %endif6444 -then6442: + br i1 %t10, label %then6728, label %endif6730 +then6728: %t11 = load %S.gen.Abi, ptr %a4 store %S.gen.Abi %t11, ptr %a12 call void @finch.copy.S_gen_Abi(ptr %a13, ptr %a12) %t14 = load %S.gen.Abi, ptr %a13 ret %S.gen.Abi %t14 -endif6444: +endif6730: %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic6445, label %ok6446 -panic6445: - call void @finch_panic(ptr @.str.4191, i64 3676, ptr @.str.4192) + br i1 %t16, label %panic6731, label %ok6732 +panic6731: + call void @finch_panic(ptr @.str.4417, i64 3804, ptr @.str.4418) unreachable -ok6446: +ok6732: %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 15 %t18 = load ptr, ptr %a1 %t19 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 @@ -56474,11 +60439,11 @@ ok6446: %t24 = load { ptr, i64, i64 }, ptr %t17 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range6447, label %inrange6448 -range6447: - call void @finch_panic_index(ptr @.str.4193, i64 3676, i64 %t23, i64 %t25) + br i1 %t26, label %range6733, label %inrange6734 +range6733: + call void @finch_panic_index(ptr @.str.4419, i64 3804, i64 %t23, i64 %t25) unreachable -inrange6448: +inrange6734: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.gen.StructDef, ptr %t27, i64 %t23 %t29 = load %S.gen.StructDef, ptr %t28 @@ -56494,26 +60459,26 @@ inrange6448: %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 %t39 = load i64, ptr %t38 %t40 = icmp sgt i64 %t39, 8 - br i1 %t40, label %then6449, label %endif6451 -then6449: + br i1 %t40, label %then6735, label %endif6737 +then6735: %t41 = getelementptr inbounds %S.gen.StructDef, ptr %a33, i32 0, i32 10 %t42 = load i64, ptr %t41 %t43 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 store i64 %t42, ptr %t43 - br label %endif6451 -endif6451: + br label %endif6737 +endif6737: %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic6452, label %ok6453 -panic6452: - call void @finch_panic(ptr @.str.4194, i64 3682, ptr @.str.4195) + br i1 %t45, label %panic6738, label %ok6739 +panic6738: + call void @finch_panic(ptr @.str.4420, i64 3810, ptr @.str.4421) unreachable -ok6453: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 27 +ok6739: + %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 29 %t47 = getelementptr inbounds %S.platform.Target, ptr %t46, i32 0, i32 4 %t48 = load i1, ptr %t47 - br i1 %t48, label %then6454, label %endif6456 -then6454: + br i1 %t48, label %then6740, label %endif6742 +then6740: %t49 = load ptr, ptr %a1 %t50 = load %S.ast.Type, ptr %a2 %t51 = load %S.gen.Abi, ptr %a4 @@ -56522,65 +60487,65 @@ then6454: %t54 = load i64, ptr %t53 %t55 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t49, %S.ast.Type %t50, %S.gen.Abi %t51, i64 %t52, i64 %t54) ret %S.gen.Abi %t55 -endif6456: +endif6742: %t56 = load ptr, ptr %a1 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4196, i64 3685, ptr @.str.4197) + br i1 %t57, label %panic6743, label %ok6744 +panic6743: + call void @finch_panic(ptr @.str.4422, i64 3813, ptr @.str.4423) unreachable -ok6458: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 27 +ok6744: + %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 29 %t59 = getelementptr inbounds %S.platform.Target, ptr %t58, i32 0, i32 1 %t60 = load i1, ptr %t59 - br i1 %t60, label %then6459, label %endif6461 -then6459: + br i1 %t60, label %then6745, label %endif6747 +then6745: %t61 = load i64, ptr %a36 %t62 = icmp eq i64 %t61, 1 - br label %logic.from6462 -logic.from6462: - br i1 %t62, label %logic.end6464, label %logic.rhs6463 -logic.rhs6463: + br label %logic.from6748 +logic.from6748: + br i1 %t62, label %logic.end6750, label %logic.rhs6749 +logic.rhs6749: %t63 = load i64, ptr %a36 %t64 = icmp eq i64 %t63, 2 - br label %logic.rend6465 -logic.rend6465: - br label %logic.end6464 -logic.end6464: - %t65 = phi i1 [ true, %logic.from6462 ], [ %t64, %logic.rend6465 ] - br label %logic.from6466 -logic.from6466: - br i1 %t65, label %logic.end6468, label %logic.rhs6467 -logic.rhs6467: + br label %logic.rend6751 +logic.rend6751: + br label %logic.end6750 +logic.end6750: + %t65 = phi i1 [ true, %logic.from6748 ], [ %t64, %logic.rend6751 ] + br label %logic.from6752 +logic.from6752: + br i1 %t65, label %logic.end6754, label %logic.rhs6753 +logic.rhs6753: %t66 = load i64, ptr %a36 %t67 = icmp eq i64 %t66, 4 - br label %logic.rend6469 -logic.rend6469: - br label %logic.end6468 -logic.end6468: - %t68 = phi i1 [ true, %logic.from6466 ], [ %t67, %logic.rend6469 ] - br label %logic.from6470 -logic.from6470: - br i1 %t68, label %logic.end6472, label %logic.rhs6471 -logic.rhs6471: + br label %logic.rend6755 +logic.rend6755: + br label %logic.end6754 +logic.end6754: + %t68 = phi i1 [ true, %logic.from6752 ], [ %t67, %logic.rend6755 ] + br label %logic.from6756 +logic.from6756: + br i1 %t68, label %logic.end6758, label %logic.rhs6757 +logic.rhs6757: %t69 = load i64, ptr %a36 %t70 = icmp eq i64 %t69, 8 - br label %logic.rend6473 -logic.rend6473: - br label %logic.end6472 -logic.end6472: - %t71 = phi i1 [ true, %logic.from6470 ], [ %t70, %logic.rend6473 ] - br i1 %t71, label %then6474, label %else6475 -then6474: + br label %logic.rend6759 +logic.rend6759: + br label %logic.end6758 +logic.end6758: + %t71 = phi i1 [ true, %logic.from6756 ], [ %t70, %logic.rend6759 ] + br i1 %t71, label %then6760, label %else6761 +then6760: %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4198, i64 6, i64 0 }, ptr %t72 + store { ptr, i64, i64 } { ptr @.str.4424, i64 6, i64 0 }, ptr %t72 %t73 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 %t75 = load i64, ptr %a36 %t76 = mul i64 %t75, 8 call void @finch_str_from_int(ptr %a77, i64 %t76) %t78 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.4425, i64 1, i64 0 }, ptr %a80 store { ptr, i64, i64 } %t78, ptr %a81 call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) %t82 = load { ptr, i64, i64 }, ptr %a79 @@ -56595,11 +60560,11 @@ then6474: %t88 = load { ptr, i64, i64 }, ptr %t87 %t89 = extractvalue { ptr, i64, i64 } %t88, 1 %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range6477, label %inrange6478 -range6477: - call void @finch_panic_index(ptr @.str.4200, i64 3691, i64 0, i64 %t89) + br i1 %t90, label %range6763, label %inrange6764 +range6763: + call void @finch_panic_index(ptr @.str.4426, i64 3819, i64 0, i64 %t89) unreachable -inrange6478: +inrange6764: %t91 = extractvalue { ptr, i64, i64 } %t88, 0 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 0 %t93 = load { ptr, i64, i64 }, ptr %t92 @@ -56608,41 +60573,41 @@ inrange6478: call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif6476 -else6475: + br label %endif6762 +else6761: %t98 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4201, i64 8, i64 0 }, ptr %t98 - br label %endif6476 -endif6476: + store { ptr, i64, i64 } { ptr @.str.4427, i64 8, i64 0 }, ptr %t98 + br label %endif6762 +endif6762: %t99 = load %S.gen.Abi, ptr %a4 store %S.gen.Abi %t99, ptr %a100 call void @finch.copy.S_gen_Abi(ptr %a101, ptr %a100) %t102 = load %S.gen.Abi, ptr %a101 ret %S.gen.Abi %t102 -endif6461: +endif6747: %t103 = load i64, ptr %a36 %t104 = icmp sgt i64 %t103, 16 - br label %logic.from6479 -logic.from6479: - br i1 %t104, label %logic.end6481, label %logic.rhs6480 -logic.rhs6480: + br label %logic.from6765 +logic.from6765: + br i1 %t104, label %logic.end6767, label %logic.rhs6766 +logic.rhs6766: %t105 = load i64, ptr %a36 %t106 = icmp eq i64 %t105, 0 - br label %logic.rend6482 -logic.rend6482: - br label %logic.end6481 -logic.end6481: - %t107 = phi i1 [ true, %logic.from6479 ], [ %t106, %logic.rend6482 ] - br i1 %t107, label %then6483, label %endif6485 -then6483: + br label %logic.rend6768 +logic.rend6768: + br label %logic.end6767 +logic.end6767: + %t107 = phi i1 [ true, %logic.from6765 ], [ %t106, %logic.rend6768 ] + br i1 %t107, label %then6769, label %endif6771 +then6769: %t108 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4202, i64 6, i64 0 }, ptr %t108 + store { ptr, i64, i64 } { ptr @.str.4428, i64 6, i64 0 }, ptr %t108 %t109 = load %S.gen.Abi, ptr %a4 store %S.gen.Abi %t109, ptr %a110 call void @finch.copy.S_gen_Abi(ptr %a111, ptr %a110) %t112 = load %S.gen.Abi, ptr %a111 ret %S.gen.Abi %t112 -endif6485: +endif6771: %t113 = load ptr, ptr %a1 %t114 = load %S.ast.Type, ptr %a2 %t115 = call { ptr, i64, i64 } @finch.gen.leavesOf(ptr %t113, %S.ast.Type %t114, i64 0) @@ -56672,14 +60637,14 @@ endif6485: %t135 = insertvalue { ptr, i64, i64 } %t134, i64 2, 2 store { ptr, i64, i64 } %t135, ptr %a136 store i64 0, ptr %a137 - br label %each.cond6486 -each.cond6486: + br label %each.cond6772 +each.cond6772: %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a116, i32 0, i32 1 %t139 = load i64, ptr %t138 %t140 = load i64, ptr %a137 %t141 = icmp slt i64 %t140, %t139 - br i1 %t141, label %each.body6487, label %each.end6489 -each.body6487: + br i1 %t141, label %each.body6773, label %each.end6775 +each.body6773: %t142 = load ptr, ptr %a116 %t143 = getelementptr inbounds %S.gen.Leaf, ptr %t142, i64 %t140 %t144 = load %S.gen.Leaf, ptr %t143 @@ -56689,32 +60654,32 @@ each.body6487: store i64 %t147, ptr %a148 %t149 = load i64, ptr %a148 %t150 = icmp sgt i64 %t149, 8 - br i1 %t150, label %then6490, label %endif6492 -then6490: + br i1 %t150, label %then6776, label %endif6778 +then6776: store i64 8, ptr %a148 - br label %endif6492 -endif6492: + br label %endif6778 +endif6778: %t151 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 %t152 = load i64, ptr %t151 %t153 = load i64, ptr %a148 %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %panic6493, label %ok6494 -panic6493: - call void @finch_panic(ptr @.str.4203, i64 3710, ptr @.str.4204) + br i1 %t154, label %panic6779, label %ok6780 +panic6779: + call void @finch_panic(ptr @.str.4429, i64 3838, ptr @.str.4430) unreachable -ok6494: +ok6780: %t155 = srem i64 %t152, %t153 %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then6495, label %endif6497 -then6495: + br i1 %t156, label %then6781, label %endif6783 +then6781: %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4205, i64 6, i64 0 }, ptr %t157 + store { ptr, i64, i64 } { ptr @.str.4431, i64 6, i64 0 }, ptr %t157 %t158 = load %S.gen.Abi, ptr %a4 store %S.gen.Abi %t158, ptr %a159 call void @finch.copy.S_gen_Abi(ptr %a160, ptr %a159) %t161 = load %S.gen.Abi, ptr %a160 ret %S.gen.Abi %t161 -endif6497: +endif6783: %t162 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 %t163 = load i64, ptr %t162 %t164 = sdiv i64 %t163, 8 @@ -56723,92 +60688,92 @@ endif6497: %t167 = load { ptr, i64, i64 }, ptr %a128 %t168 = extractvalue { ptr, i64, i64 } %t167, 1 %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range6498, label %inrange6499 -range6498: - call void @finch_panic_index(ptr @.str.4206, i64 3715, i64 %t166, i64 %t168) + br i1 %t169, label %range6784, label %inrange6785 +range6784: + call void @finch_panic_index(ptr @.str.4432, i64 3843, i64 %t166, i64 %t168) unreachable -inrange6499: +inrange6785: %t170 = extractvalue { ptr, i64, i64 } %t167, 0 %t171 = getelementptr inbounds i64, ptr %t170, i64 %t166 %t172 = load i64, ptr %t171 %t173 = icmp eq i64 %t172, 1 - br label %logic.from6500 -logic.from6500: - br i1 %t173, label %logic.end6502, label %logic.rhs6501 -logic.rhs6501: + br label %logic.from6786 +logic.from6786: + br i1 %t173, label %logic.end6788, label %logic.rhs6787 +logic.rhs6787: %t174 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 %t175 = load i1, ptr %t174 %t176 = xor i1 %t175, true - br label %logic.rend6503 -logic.rend6503: - br label %logic.end6502 -logic.end6502: - %t177 = phi i1 [ true, %logic.from6500 ], [ %t176, %logic.rend6503 ] - br i1 %t177, label %then6504, label %else6505 -then6504: + br label %logic.rend6789 +logic.rend6789: + br label %logic.end6788 +logic.end6788: + %t177 = phi i1 [ true, %logic.from6786 ], [ %t176, %logic.rend6789 ] + br i1 %t177, label %then6790, label %else6791 +then6790: %t178 = load i64, ptr %a165 %t179 = load { ptr, i64, i64 }, ptr %a128 %t180 = extractvalue { ptr, i64, i64 } %t179, 1 %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range6507, label %inrange6508 -range6507: - call void @finch_panic_index(ptr @.str.4207, i64 3716, i64 %t178, i64 %t180) + br i1 %t181, label %range6793, label %inrange6794 +range6793: + call void @finch_panic_index(ptr @.str.4433, i64 3844, i64 %t178, i64 %t180) unreachable -inrange6508: +inrange6794: %t182 = extractvalue { ptr, i64, i64 } %t179, 0 %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 store i64 1, ptr %t183 - br label %endif6506 -else6505: + br label %endif6792 +else6791: %t184 = load i64, ptr %a165 %t185 = load { ptr, i64, i64 }, ptr %a128 %t186 = extractvalue { ptr, i64, i64 } %t185, 1 %t187 = icmp uge i64 %t184, %t186 - br i1 %t187, label %range6509, label %inrange6510 -range6509: - call void @finch_panic_index(ptr @.str.4208, i64 3718, i64 %t184, i64 %t186) + br i1 %t187, label %range6795, label %inrange6796 +range6795: + call void @finch_panic_index(ptr @.str.4434, i64 3846, i64 %t184, i64 %t186) unreachable -inrange6510: +inrange6796: %t188 = extractvalue { ptr, i64, i64 } %t185, 0 %t189 = getelementptr inbounds i64, ptr %t188, i64 %t184 store i64 2, ptr %t189 - br label %endif6506 -endif6506: + br label %endif6792 +endif6792: %t190 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 %t191 = load i1, ptr %t190 - br i1 %t191, label %then6511, label %endif6513 -then6511: + br i1 %t191, label %then6797, label %endif6799 +then6797: %t192 = load i64, ptr %a165 %t193 = load { ptr, i64, i64 }, ptr %a136 %t194 = extractvalue { ptr, i64, i64 } %t193, 1 %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range6514, label %inrange6515 -range6514: - call void @finch_panic_index(ptr @.str.4209, i64 3721, i64 %t192, i64 %t194) + br i1 %t195, label %range6800, label %inrange6801 +range6800: + call void @finch_panic_index(ptr @.str.4435, i64 3849, i64 %t192, i64 %t194) unreachable -inrange6515: +inrange6801: %t196 = extractvalue { ptr, i64, i64 } %t193, 0 %t197 = getelementptr inbounds i1, ptr %t196, i64 %t192 store i1 true, ptr %t197 - br label %endif6513 -endif6513: - br label %each.step6488 -each.step6488: + br label %endif6799 +endif6799: + br label %each.step6774 +each.step6774: %t198 = load i64, ptr %a137 %t199 = add i64 %t198, 1 store i64 %t199, ptr %a137 - br label %each.cond6486 -each.end6489: + br label %each.cond6772 +each.end6775: %t200 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4210, i64 6, i64 0 }, ptr %t200 + store { ptr, i64, i64 } { ptr @.str.4436, i64 6, i64 0 }, ptr %t200 %t201 = load i64, ptr %a120 store i64 0, ptr %a202 - br label %for.cond6516 -for.cond6516: + br label %for.cond6802 +for.cond6802: %t203 = load i64, ptr %a202 %t204 = icmp slt i64 %t203, %t201 - br i1 %t204, label %for.body6517, label %for.end6519 -for.body6517: + br i1 %t204, label %for.body6803, label %for.end6805 +for.body6803: %t205 = load i64, ptr %a36 %t206 = load i64, ptr %a202 %t207 = mul i64 8, %t206 @@ -56816,40 +60781,40 @@ for.body6517: store i64 %t208, ptr %a209 %t210 = load i64, ptr %a209 %t211 = icmp sgt i64 %t210, 8 - br i1 %t211, label %then6520, label %endif6522 -then6520: + br i1 %t211, label %then6806, label %endif6808 +then6806: store i64 8, ptr %a209 - br label %endif6522 -endif6522: + br label %endif6808 +endif6808: %t212 = load i64, ptr %a202 %t213 = load { ptr, i64, i64 }, ptr %a128 %t214 = extractvalue { ptr, i64, i64 } %t213, 1 %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range6523, label %inrange6524 -range6523: - call void @finch_panic_index(ptr @.str.4211, i64 3730, i64 %t212, i64 %t214) + br i1 %t215, label %range6809, label %inrange6810 +range6809: + call void @finch_panic_index(ptr @.str.4437, i64 3858, i64 %t212, i64 %t214) unreachable -inrange6524: +inrange6810: %t216 = extractvalue { ptr, i64, i64 } %t213, 0 %t217 = getelementptr inbounds i64, ptr %t216, i64 %t212 %t218 = load i64, ptr %t217 %t219 = icmp eq i64 %t218, 2 - br i1 %t219, label %then6525, label %else6526 -then6525: + br i1 %t219, label %then6811, label %else6812 +then6811: %t220 = load i64, ptr %a202 %t221 = load { ptr, i64, i64 }, ptr %a136 %t222 = extractvalue { ptr, i64, i64 } %t221, 1 %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range6528, label %inrange6529 -range6528: - call void @finch_panic_index(ptr @.str.4212, i64 3731, i64 %t220, i64 %t222) + br i1 %t223, label %range6814, label %inrange6815 +range6814: + call void @finch_panic_index(ptr @.str.4438, i64 3859, i64 %t220, i64 %t222) unreachable -inrange6529: +inrange6815: %t224 = extractvalue { ptr, i64, i64 } %t221, 0 %t225 = getelementptr inbounds i1, ptr %t224, i64 %t220 %t226 = load i1, ptr %t225 - br i1 %t226, label %then6530, label %else6531 -then6530: + br i1 %t226, label %then6816, label %else6817 +then6816: %t227 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t227, i32 0, i32 1 %t229 = load i64, ptr %t228 @@ -56857,14 +60822,14 @@ then6530: call void @finch_arr_reserve(ptr %t227, i64 %t230, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t231 = load ptr, ptr %t227 %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t229 - store { ptr, i64, i64 } { ptr @.str.4213, i64 6, i64 0 }, ptr %t232 + store { ptr, i64, i64 } { ptr @.str.4439, i64 6, i64 0 }, ptr %t232 store i64 %t230, ptr %t228 - br label %endif6532 -else6531: + br label %endif6818 +else6817: %t233 = load i64, ptr %a209 %t234 = icmp sgt i64 %t233, 4 - br i1 %t234, label %then6533, label %else6534 -then6533: + br i1 %t234, label %then6819, label %else6820 +then6819: %t235 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t235, i32 0, i32 1 %t237 = load i64, ptr %t236 @@ -56872,10 +60837,10 @@ then6533: call void @finch_arr_reserve(ptr %t235, i64 %t238, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t239 = load ptr, ptr %t235 %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i64 %t237 - store { ptr, i64, i64 } { ptr @.str.4214, i64 11, i64 0 }, ptr %t240 + store { ptr, i64, i64 } { ptr @.str.4440, i64 11, i64 0 }, ptr %t240 store i64 %t238, ptr %t236 - br label %endif6535 -else6534: + br label %endif6821 +else6820: %t241 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 %t243 = load i64, ptr %t242 @@ -56883,21 +60848,21 @@ else6534: call void @finch_arr_reserve(ptr %t241, i64 %t244, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t245 = load ptr, ptr %t241 %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i64 %t243 - store { ptr, i64, i64 } { ptr @.str.4215, i64 5, i64 0 }, ptr %t246 + store { ptr, i64, i64 } { ptr @.str.4441, i64 5, i64 0 }, ptr %t246 store i64 %t244, ptr %t242 - br label %endif6535 -endif6535: - br label %endif6532 -endif6532: - br label %endif6527 -else6526: + br label %endif6821 +endif6821: + br label %endif6818 +endif6818: + br label %endif6813 +else6812: %t247 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i32 0, i32 1 %t249 = load i64, ptr %a209 %t250 = mul i64 %t249, 8 call void @finch_str_from_int(ptr %a251, i64 %t250) %t252 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4216, i64 1, i64 0 }, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.4442, i64 1, i64 0 }, ptr %a254 store { ptr, i64, i64 } %t252, ptr %a255 call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 @@ -56908,30 +60873,30 @@ else6526: %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 store { ptr, i64, i64 } %t256, ptr %t260 store i64 %t258, ptr %t248 - br label %endif6527 -endif6527: - br label %for.step6518 -for.step6518: + br label %endif6813 +endif6813: + br label %for.step6804 +for.step6804: %t261 = load i64, ptr %a202 %t262 = add i64 %t261, 1 store i64 %t262, ptr %a202 - br label %for.cond6516 -for.end6519: + br label %for.cond6802 +for.end6805: %t263 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 %t265 = load i64, ptr %t264 %t266 = icmp eq i64 %t265, 1 - br i1 %t266, label %then6536, label %else6537 -then6536: + br i1 %t266, label %then6822, label %else6823 +then6822: %t267 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t268 = load { ptr, i64, i64 }, ptr %t267 %t269 = extractvalue { ptr, i64, i64 } %t268, 1 %t270 = icmp uge i64 0, %t269 - br i1 %t270, label %range6539, label %inrange6540 -range6539: - call void @finch_panic_index(ptr @.str.4217, i64 3743, i64 0, i64 %t269) + br i1 %t270, label %range6825, label %inrange6826 +range6825: + call void @finch_panic_index(ptr @.str.4443, i64 3871, i64 0, i64 %t269) unreachable -inrange6540: +inrange6826: %t271 = extractvalue { ptr, i64, i64 } %t268, 0 %t272 = getelementptr inbounds { ptr, i64, i64 }, ptr %t271, i64 0 %t273 = load { ptr, i64, i64 }, ptr %t272 @@ -56940,25 +60905,25 @@ inrange6540: call void @finch_str_copy(ptr %a276, ptr %a275) %t277 = load { ptr, i64, i64 }, ptr %a276 store { ptr, i64, i64 } %t277, ptr %t274 - br label %endif6538 -else6537: + br label %endif6824 +else6823: %t278 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4219, i64 2, i64 0 }, ptr %a280 + store { ptr, i64, i64 } { ptr @.str.4445, i64 2, i64 0 }, ptr %a280 call void @finch_str_join(ptr %a281, ptr %t278, ptr %a280) %t282 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.4218, i64 2, i64 0 }, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.4444, i64 2, i64 0 }, ptr %a284 store { ptr, i64, i64 } %t282, ptr %a285 call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) %t286 = load { ptr, i64, i64 }, ptr %a283 store { ptr, i64, i64 } %t286, ptr %a288 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a289 + store { ptr, i64, i64 } { ptr @.str.4446, i64 2, i64 0 }, ptr %a289 call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) %t290 = load { ptr, i64, i64 }, ptr %a287 %t291 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 store { ptr, i64, i64 } %t290, ptr %t291 - br label %endif6538 -endif6538: + br label %endif6824 +endif6824: %t292 = load %S.gen.Abi, ptr %a4 store %S.gen.Abi %t292, ptr %a293 call void @finch.copy.S_gen_Abi(ptr %a294, ptr %a293) @@ -56975,20 +60940,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond6592 -n.cond6592: + br label %n.cond6878 +n.cond6878: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body6593, label %n.end6594 -n.body6593: + br i1 %t7, label %n.body6879, label %n.end6880 +n.body6879: %t8 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.gen.Abi, ptr %t2, i64 %t6 call void @finch.copy.S_gen_Abi(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond6592 -n.end6594: + br label %n.cond6878 +n.end6880: ret void } @@ -57057,63 +61022,63 @@ entry: %t10 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 store %S.gen.Abi %t9, ptr %t10 %t11 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } { ptr @.str.4221, i64 4, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.4447, i64 4, i64 0 }, ptr %t11 %t12 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t13 = load { ptr, i64, i64 }, ptr %t12 store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.4222, i64 4, i64 0 }, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.4448, i64 4, i64 0 }, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp eq i32 %t16, 0 - br i1 %t17, label %then6541, label %endif6543 -then6541: + br i1 %t17, label %then6827, label %endif6829 +then6827: %t18 = load ptr, ptr %a1 %t19 = load %S.ast.Type, ptr %a2 %t20 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t18, %S.ast.Type %t19) %t21 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 store { ptr, i64, i64 } %t20, ptr %t21 - br label %endif6543 -endif6543: + br label %endif6829 +endif6829: %t22 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 %t23 = getelementptr inbounds %S.gen.Abi, ptr %t22, i32 0, i32 0 %t24 = load { ptr, i64, i64 }, ptr %t23 store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.4223, i64 8, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.4449, i64 8, i64 0 }, ptr %a26 %t27 = call i32 @finch_str_eq(ptr %a25, ptr %a26) %t28 = icmp ne i32 %t27, 0 - br i1 %t28, label %then6544, label %endif6546 -then6544: + br i1 %t28, label %then6830, label %endif6832 +then6830: %t29 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 %t30 = getelementptr inbounds %S.gen.Abi, ptr %t29, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4224, i64 6, i64 0 }, ptr %t30 - br label %endif6546 -endif6546: + store { ptr, i64, i64 } { ptr @.str.4450, i64 6, i64 0 }, ptr %t30 + br label %endif6832 +endif6832: %t31 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 %t32 = getelementptr inbounds %S.gen.Abi, ptr %t31, i32 0, i32 0 %t33 = load { ptr, i64, i64 }, ptr %t32 store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4225, i64 6, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.4451, i64 6, i64 0 }, ptr %a35 %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then6547, label %else6548 -then6547: + br i1 %t37, label %then6833, label %else6834 +then6833: %t38 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 store i1 true, ptr %t38 %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } { ptr @.str.4226, i64 4, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.4452, i64 4, i64 0 }, ptr %t39 %t40 = load i64, ptr %a5 %t41 = sub i64 %t40, 1 store i64 %t41, ptr %a5 - br label %endif6549 -else6548: + br label %endif6835 +else6834: %t42 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 %t43 = getelementptr inbounds %S.gen.Abi, ptr %t42, i32 0, i32 0 %t44 = load { ptr, i64, i64 }, ptr %t43 store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.4227, i64 6, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.4453, i64 6, i64 0 }, ptr %a46 %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) %t48 = icmp ne i32 %t47, 0 - br i1 %t48, label %then6550, label %endif6552 -then6550: + br i1 %t48, label %then6836, label %endif6838 +then6836: %t49 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 %t50 = getelementptr inbounds %S.gen.Abi, ptr %t49, i32 0, i32 2 %t51 = load { ptr, i64, i64 }, ptr %t50 @@ -57122,19 +61087,19 @@ then6550: call void @finch_str_copy(ptr %a54, ptr %a53) %t55 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t55, ptr %t52 - br label %endif6552 -endif6552: - br label %endif6549 -endif6549: + br label %endif6838 +endif6838: + br label %endif6835 +endif6835: store i64 0, ptr %a56 - br label %each.cond6553 -each.cond6553: + br label %each.cond6839 +each.cond6839: %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t58 = load i64, ptr %t57 %t59 = load i64, ptr %a56 %t60 = icmp slt i64 %t59, %t58 - br i1 %t60, label %each.body6554, label %each.end6556 -each.body6554: + br i1 %t60, label %each.body6840, label %each.end6842 +each.body6840: %t61 = load ptr, ptr %a3 %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i64 %t59 %t63 = load %S.ast.Type, ptr %t62 @@ -57146,106 +61111,106 @@ each.body6554: %t69 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0 %t70 = load { ptr, i64, i64 }, ptr %t69 store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.4454, i64 6, i64 0 }, ptr %a72 %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) %t74 = icmp ne i32 %t73, 0 - br i1 %t74, label %then6557, label %else6558 -then6557: + br i1 %t74, label %then6843, label %else6844 +then6843: store i64 0, ptr %a75 store i64 0, ptr %a76 %t77 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 1 store i64 0, ptr %a78 - br label %each.cond6560 -each.cond6560: + br label %each.cond6846 +each.cond6846: %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 %t80 = load i64, ptr %t79 %t81 = load i64, ptr %a78 %t82 = icmp slt i64 %t81, %t80 - br i1 %t82, label %each.body6561, label %each.end6563 -each.body6561: + br i1 %t82, label %each.body6847, label %each.end6849 +each.body6847: %t83 = load ptr, ptr %t77 %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 %t85 = load { ptr, i64, i64 }, ptr %t84 store { ptr, i64, i64 } %t85, ptr %a86 %t87 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.4230, i64 1, i64 0 }, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a90 %t91 = call i32 @finch_str_starts(ptr %a88, ptr %a90) %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then6564, label %else6565 -then6564: + br i1 %t92, label %then6850, label %else6851 +then6850: %t93 = load i64, ptr %a75 %t94 = add i64 %t93, 1 store i64 %t94, ptr %a75 - br label %endif6566 -else6565: + br label %endif6852 +else6851: %t95 = load i64, ptr %a76 %t96 = add i64 %t95, 1 store i64 %t96, ptr %a76 - br label %endif6566 -endif6566: - br label %each.step6562 -each.step6562: + br label %endif6852 +endif6852: + br label %each.step6848 +each.step6848: %t97 = load i64, ptr %a78 %t98 = add i64 %t97, 1 store i64 %t98, ptr %a78 - br label %each.cond6560 -each.end6563: + br label %each.cond6846 +each.end6849: %t99 = load ptr, ptr %a1 %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic6567, label %ok6568 -panic6567: - call void @finch_panic(ptr @.str.4231, i64 3783, ptr @.str.4232) + br i1 %t100, label %panic6853, label %ok6854 +panic6853: + call void @finch_panic(ptr @.str.4457, i64 3911, ptr @.str.4458) unreachable -ok6568: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 27 +ok6854: + %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 29 %t102 = getelementptr inbounds %S.platform.Target, ptr %t101, i32 0, i32 1 %t103 = load i1, ptr %t102 - br label %logic.from6569 -logic.from6569: - br i1 %t103, label %logic.end6571, label %logic.rhs6570 -logic.rhs6570: + br label %logic.from6855 +logic.from6855: + br i1 %t103, label %logic.end6857, label %logic.rhs6856 +logic.rhs6856: %t104 = load ptr, ptr %a1 %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6572, label %ok6573 -panic6572: - call void @finch_panic(ptr @.str.4233, i64 3783, ptr @.str.4234) + br i1 %t105, label %panic6858, label %ok6859 +panic6858: + call void @finch_panic(ptr @.str.4459, i64 3911, ptr @.str.4460) unreachable -ok6573: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 27 +ok6859: + %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 29 %t107 = getelementptr inbounds %S.platform.Target, ptr %t106, i32 0, i32 4 %t108 = load i1, ptr %t107 - br label %logic.rend6574 -logic.rend6574: - br label %logic.end6571 -logic.end6571: - %t109 = phi i1 [ true, %logic.from6569 ], [ %t108, %logic.rend6574 ] - br label %logic.from6575 -logic.from6575: - br i1 %t109, label %logic.end6577, label %logic.rhs6576 -logic.rhs6576: + br label %logic.rend6860 +logic.rend6860: + br label %logic.end6857 +logic.end6857: + %t109 = phi i1 [ true, %logic.from6855 ], [ %t108, %logic.rend6860 ] + br label %logic.from6861 +logic.from6861: + br i1 %t109, label %logic.end6863, label %logic.rhs6862 +logic.rhs6862: %t110 = load i64, ptr %a75 %t111 = load i64, ptr %a5 %t112 = icmp sle i64 %t110, %t111 - br label %logic.from6578 -logic.from6578: - br i1 %t112, label %logic.rhs6579, label %logic.end6580 -logic.rhs6579: + br label %logic.from6864 +logic.from6864: + br i1 %t112, label %logic.rhs6865, label %logic.end6866 +logic.rhs6865: %t113 = load i64, ptr %a76 %t114 = load i64, ptr %a6 %t115 = icmp sle i64 %t113, %t114 - br label %logic.rend6581 -logic.rend6581: - br label %logic.end6580 -logic.end6580: - %t116 = phi i1 [ false, %logic.from6578 ], [ %t115, %logic.rend6581 ] - br label %logic.rend6582 -logic.rend6582: - br label %logic.end6577 -logic.end6577: - %t117 = phi i1 [ true, %logic.from6575 ], [ %t116, %logic.rend6582 ] - br i1 %t117, label %then6583, label %else6584 -then6583: + br label %logic.rend6867 +logic.rend6867: + br label %logic.end6866 +logic.end6866: + %t116 = phi i1 [ false, %logic.from6864 ], [ %t115, %logic.rend6867 ] + br label %logic.rend6868 +logic.rend6868: + br label %logic.end6863 +logic.end6863: + %t117 = phi i1 [ true, %logic.from6861 ], [ %t116, %logic.rend6868 ] + br i1 %t117, label %then6869, label %else6870 +then6869: %t118 = load i64, ptr %a75 %t119 = load i64, ptr %a5 %t120 = sub i64 %t119, %t118 @@ -57254,40 +61219,40 @@ then6583: %t122 = load i64, ptr %a6 %t123 = sub i64 %t122, %t121 store i64 %t123, ptr %a6 - br label %endif6585 -else6584: + br label %endif6871 +else6870: %t124 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4235, i64 6, i64 0 }, ptr %t124 - br label %endif6585 -endif6585: - br label %endif6559 -else6558: + store { ptr, i64, i64 } { ptr @.str.4461, i64 6, i64 0 }, ptr %t124 + br label %endif6871 +endif6871: + br label %endif6845 +else6844: %t125 = getelementptr inbounds %S.gen.Abi, ptr %a68, i32 0, i32 0 %t126 = load { ptr, i64, i64 }, ptr %t125 store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4236, i64 6, i64 0 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.4462, i64 6, i64 0 }, ptr %a128 %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) %t130 = icmp ne i32 %t129, 0 - br i1 %t130, label %then6586, label %endif6588 -then6586: + br i1 %t130, label %then6872, label %endif6874 +then6872: %t131 = load %S.ast.Type, ptr %a64 %t132 = call i1 @finch.gen.isFloat(%S.ast.Type %t131) - br i1 %t132, label %then6589, label %else6590 -then6589: + br i1 %t132, label %then6875, label %else6876 +then6875: %t133 = load i64, ptr %a6 %t134 = sub i64 %t133, 1 store i64 %t134, ptr %a6 - br label %endif6591 -else6590: + br label %endif6877 +else6876: %t135 = load i64, ptr %a5 %t136 = sub i64 %t135, 1 store i64 %t136, ptr %a5 - br label %endif6591 -endif6591: - br label %endif6588 -endif6588: - br label %endif6559 -endif6559: + br label %endif6877 +endif6877: + br label %endif6874 +endif6874: + br label %endif6845 +endif6845: %t137 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 %t139 = load %S.gen.Abi, ptr %a68 @@ -57301,13 +61266,13 @@ endif6559: %t146 = getelementptr inbounds %S.gen.Abi, ptr %t145, i64 %t143 store %S.gen.Abi %t142, ptr %t146 store i64 %t144, ptr %t138 - br label %each.step6555 -each.step6555: + br label %each.step6841 +each.step6841: %t147 = load i64, ptr %a56 %t148 = add i64 %t147, 1 store i64 %t148, ptr %a56 - br label %each.cond6553 -each.end6556: + br label %each.cond6839 +each.end6842: %t149 = load %S.gen.Plan, ptr %a4 store %S.gen.Plan %t149, ptr %a150 call void @finch.copy.S_gen_Plan(ptr %a151, ptr %a150) @@ -57374,20 +61339,20 @@ entry: %t6 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 %t7 = load { ptr, i64, i64 }, ptr %t6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4237, i64 6, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.4463, i64 6, i64 0 }, ptr %a9 %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) %t11 = icmp eq i32 %t10, 0 - br i1 %t11, label %then6595, label %endif6597 -then6595: + br i1 %t11, label %then6881, label %endif6883 +then6881: ret void -endif6597: +endif6883: %t12 = load ptr, ptr %a1 %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic6598, label %ok6599 -panic6598: - call void @finch_panic(ptr @.str.4238, i64 3805, ptr @.str.4239) + br i1 %t13, label %panic6884, label %ok6885 +panic6884: + call void @finch_panic(ptr @.str.4464, i64 3933, ptr @.str.4465) unreachable -ok6599: +ok6885: %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 15 %t15 = load ptr, ptr %a1 %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 @@ -57398,11 +61363,11 @@ ok6599: %t21 = load { ptr, i64, i64 }, ptr %t14 %t22 = extractvalue { ptr, i64, i64 } %t21, 1 %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range6600, label %inrange6601 -range6600: - call void @finch_panic_index(ptr @.str.4240, i64 3805, i64 %t20, i64 %t22) + br i1 %t23, label %range6886, label %inrange6887 +range6886: + call void @finch_panic_index(ptr @.str.4466, i64 3933, i64 %t20, i64 %t22) unreachable -inrange6601: +inrange6887: %t24 = extractvalue { ptr, i64, i64 } %t21, 0 %t25 = getelementptr inbounds %S.gen.StructDef, ptr %t24, i64 %t20 %t26 = load %S.gen.StructDef, ptr %t25 @@ -57413,17 +61378,17 @@ inrange6601: %t31 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 2 %t32 = load i1, ptr %t31 %t33 = xor i1 %t32, true - br i1 %t33, label %then6602, label %endif6604 -then6602: + br i1 %t33, label %then6888, label %endif6890 +then6888: %t34 = load ptr, ptr %a1 %t35 = load %S.ast.Node, ptr %a2 %t36 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4241, i64 16, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.4467, i64 16, i64 0 }, ptr %a38 store { ptr, i64, i64 } %t36, ptr %a39 call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) %t40 = load { ptr, i64, i64 }, ptr %a37 store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4242, i64 2, i64 0 }, ptr %a43 + store { ptr, i64, i64 } { ptr @.str.4468, i64 2, i64 0 }, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 %t45 = load { ptr, i64, i64 }, ptr %a5 @@ -57432,7 +61397,7 @@ then6602: call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) %t49 = load { ptr, i64, i64 }, ptr %a46 store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4243, i64 18, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.4469, i64 18, i64 0 }, ptr %a52 call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) %t53 = load { ptr, i64, i64 }, ptr %a50 %t54 = load %S.ast.Type, ptr %a4 @@ -57442,27 +61407,27 @@ then6602: call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4244, i64 20, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.4470, i64 20, i64 0 }, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t63) - br label %endif6604 -endif6604: + br label %endif6890 +endif6890: %t64 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 %t66 = load i64, ptr %t65 %t67 = icmp sgt i64 %t66, 0 - br i1 %t67, label %then6605, label %endif6607 -then6605: + br i1 %t67, label %then6891, label %endif6893 +then6891: %t68 = load ptr, ptr %a1 %t69 = load %S.ast.Node, ptr %a2 %t70 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4245, i64 16, i64 0 }, ptr %a72 + store { ptr, i64, i64 } { ptr @.str.4471, i64 16, i64 0 }, ptr %a72 store { ptr, i64, i64 } %t70, ptr %a73 call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) %t74 = load { ptr, i64, i64 }, ptr %a71 store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4246, i64 2, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.4472, i64 2, i64 0 }, ptr %a77 call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) %t78 = load { ptr, i64, i64 }, ptr %a75 %t79 = load { ptr, i64, i64 }, ptr %a5 @@ -57471,7 +61436,7 @@ then6605: call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) %t83 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4247, i64 12, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.4473, i64 12, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 %t88 = load %S.ast.Type, ptr %a4 @@ -57481,7 +61446,7 @@ then6605: call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.4248, i64 40, i64 0 }, ptr %a96 + store { ptr, i64, i64 } { ptr @.str.4474, i64 40, i64 0 }, ptr %a96 call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) %t97 = load { ptr, i64, i64 }, ptr %a94 %t98 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 @@ -57491,8 +61456,8 @@ then6605: call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) %t103 = load { ptr, i64, i64 }, ptr %a100 call void @finch.gen.fail(ptr %t68, %S.ast.Node %t69, { ptr, i64, i64 } %t103) - br label %endif6607 -endif6607: + br label %endif6893 +endif6893: ret void } @@ -57508,51 +61473,51 @@ entry: store %S.ast.Type %p0, ptr %a1 %t2 = load %S.ast.Type, ptr %a1 %t3 = call i1 @finch.gen.isNumber(%S.ast.Type %t2) - br label %logic.from6608 -logic.from6608: - br i1 %t3, label %logic.end6610, label %logic.rhs6609 -logic.rhs6609: + br label %logic.from6894 +logic.from6894: + br i1 %t3, label %logic.end6896, label %logic.rhs6895 +logic.rhs6895: %t4 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t5 = load { ptr, i64, i64 }, ptr %t4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4249, i64 4, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.4475, i64 4, i64 0 }, ptr %a7 %t8 = call i32 @finch_str_eq(ptr %a6, ptr %a7) %t9 = icmp ne i32 %t8, 0 - br label %logic.rend6611 -logic.rend6611: - br label %logic.end6610 -logic.end6610: - %t10 = phi i1 [ true, %logic.from6608 ], [ %t9, %logic.rend6611 ] - br label %logic.from6612 -logic.from6612: - br i1 %t10, label %logic.end6614, label %logic.rhs6613 -logic.rhs6613: + br label %logic.rend6897 +logic.rend6897: + br label %logic.end6896 +logic.end6896: + %t10 = phi i1 [ true, %logic.from6894 ], [ %t9, %logic.rend6897 ] + br label %logic.from6898 +logic.from6898: + br i1 %t10, label %logic.end6900, label %logic.rhs6899 +logic.rhs6899: %t11 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t12 = load { ptr, i64, i64 }, ptr %t11 store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.4250, i64 4, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.4476, i64 4, i64 0 }, ptr %a14 %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) %t16 = icmp ne i32 %t15, 0 - br label %logic.rend6615 -logic.rend6615: - br label %logic.end6614 -logic.end6614: - %t17 = phi i1 [ true, %logic.from6612 ], [ %t16, %logic.rend6615 ] - br label %logic.from6616 -logic.from6616: - br i1 %t17, label %logic.end6618, label %logic.rhs6617 -logic.rhs6617: + br label %logic.rend6901 +logic.rend6901: + br label %logic.end6900 +logic.end6900: + %t17 = phi i1 [ true, %logic.from6898 ], [ %t16, %logic.rend6901 ] + br label %logic.from6902 +logic.from6902: + br i1 %t17, label %logic.end6904, label %logic.rhs6903 +logic.rhs6903: %t18 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 %t19 = load { ptr, i64, i64 }, ptr %t18 store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.4477, i64 3, i64 0 }, ptr %a21 %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) %t23 = icmp ne i32 %t22, 0 - br label %logic.rend6619 -logic.rend6619: - br label %logic.end6618 -logic.end6618: - %t24 = phi i1 [ true, %logic.from6616 ], [ %t23, %logic.rend6619 ] + br label %logic.rend6905 +logic.rend6905: + br label %logic.end6904 +logic.end6904: + %t24 = phi i1 [ true, %logic.from6902 ], [ %t23, %logic.rend6905 ] ret i1 %t24 } @@ -57593,71 +61558,71 @@ entry: %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 %t6 = load i64, ptr %t5 %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6620, label %endif6622 -then6620: + br i1 %t7, label %then6906, label %endif6908 +then6906: %t8 = load ptr, ptr %a1 %t9 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.4252, i64 59, i64 0 }) - br label %endif6622 -endif6622: + call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } { ptr @.str.4478, i64 59, i64 0 }) + br label %endif6908 +endif6908: %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 %t11 = load i1, ptr %t10 - br i1 %t11, label %then6623, label %endif6625 -then6623: + br i1 %t11, label %then6909, label %endif6911 +then6909: %t12 = load ptr, ptr %a1 %t13 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t12, %S.ast.Node %t13, { ptr, i64, i64 } { ptr @.str.4253, i64 74, i64 0 }) - br label %endif6625 -endif6625: + call void @finch.gen.fail(ptr %t12, %S.ast.Node %t13, { ptr, i64, i64 } { ptr @.str.4479, i64 74, i64 0 }) + br label %endif6911 +endif6911: %t14 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 3 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 %t16 = load i64, ptr %t15 %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %then6626, label %endif6628 -then6626: + br i1 %t17, label %then6912, label %endif6914 +then6912: %t18 = load ptr, ptr %a1 %t19 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.4254, i64 29, i64 0 }) - br label %endif6628 -endif6628: + call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.4480, i64 29, i64 0 }) + br label %endif6914 +endif6914: %t20 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 %t22 = load i64, ptr %t21 store i64 0, ptr %a23 - br label %for.cond6629 -for.cond6629: + br label %for.cond6915 +for.cond6915: %t24 = load i64, ptr %a23 %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body6630, label %for.end6632 -for.body6630: + br i1 %t25, label %for.body6916, label %for.end6918 +for.body6916: %t26 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 13 %t27 = load i64, ptr %a23 %t28 = load { ptr, i64, i64 }, ptr %t26 %t29 = extractvalue { ptr, i64, i64 } %t28, 1 %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range6633, label %inrange6634 -range6633: - call void @finch_panic_index(ptr @.str.4255, i64 3830, i64 %t27, i64 %t29) + br i1 %t30, label %range6919, label %inrange6920 +range6919: + call void @finch_panic_index(ptr @.str.4481, i64 3958, i64 %t27, i64 %t29) unreachable -inrange6634: +inrange6920: %t31 = extractvalue { ptr, i64, i64 } %t28, 0 %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 %t27 %t33 = load %S.ast.Type, ptr %t32 %t34 = call i1 @finch.gen.cPlain(%S.ast.Type %t33) %t35 = xor i1 %t34, true - br i1 %t35, label %then6635, label %endif6637 -then6635: + br i1 %t35, label %then6921, label %endif6923 +then6921: %t36 = load ptr, ptr %a1 %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t38 = load i64, ptr %a23 %t39 = load { ptr, i64, i64 }, ptr %t37 %t40 = extractvalue { ptr, i64, i64 } %t39, 1 %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6638, label %inrange6639 -range6638: - call void @finch_panic_index(ptr @.str.4256, i64 3831, i64 %t38, i64 %t40) + br i1 %t41, label %range6924, label %inrange6925 +range6924: + call void @finch_panic_index(ptr @.str.4482, i64 3959, i64 %t38, i64 %t40) unreachable -inrange6639: +inrange6925: %t42 = extractvalue { ptr, i64, i64 } %t39, 0 %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t38 %t44 = load %S.ast.Node, ptr %t43 @@ -57666,98 +61631,98 @@ inrange6639: %t47 = load { ptr, i64, i64 }, ptr %t45 %t48 = extractvalue { ptr, i64, i64 } %t47, 1 %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range6640, label %inrange6641 -range6640: - call void @finch_panic_index(ptr @.str.4258, i64 3831, i64 %t46, i64 %t48) + br i1 %t49, label %range6926, label %inrange6927 +range6926: + call void @finch_panic_index(ptr @.str.4484, i64 3959, i64 %t46, i64 %t48) unreachable -inrange6641: +inrange6927: %t50 = extractvalue { ptr, i64, i64 } %t47, 0 %t51 = getelementptr inbounds %S.ast.Type, ptr %t50, i64 %t46 %t52 = load %S.ast.Type, ptr %t51 %t53 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.4257, i64 66, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4483, i64 66, i64 0 }, ptr %a55 store { ptr, i64, i64 } %t53, ptr %a56 call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) %t57 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4259, i64 50, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4485, i64 50, i64 0 }, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t61) - br label %endif6637 -endif6637: - br label %for.step6631 -for.step6631: + br label %endif6923 +endif6923: + br label %for.step6917 +for.step6917: %t62 = load i64, ptr %a23 %t63 = add i64 %t62, 1 store i64 %t63, ptr %a23 - br label %for.cond6629 -for.end6632: + br label %for.cond6915 +for.end6918: %t64 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 %t65 = getelementptr inbounds %S.ast.Type, ptr %t64, i32 0, i32 0 %t66 = load { ptr, i64, i64 }, ptr %t65 store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.4260, i64 4, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.4486, i64 4, i64 0 }, ptr %a68 %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) %t70 = icmp eq i32 %t69, 0 - br label %logic.from6642 -logic.from6642: - br i1 %t70, label %logic.rhs6643, label %logic.end6644 -logic.rhs6643: + br label %logic.from6928 +logic.from6928: + br i1 %t70, label %logic.rhs6929, label %logic.end6930 +logic.rhs6929: %t71 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 %t72 = load %S.ast.Type, ptr %t71 %t73 = call i1 @finch.gen.cPlain(%S.ast.Type %t72) %t74 = xor i1 %t73, true - br label %logic.rend6645 -logic.rend6645: - br label %logic.end6644 -logic.end6644: - %t75 = phi i1 [ false, %logic.from6642 ], [ %t74, %logic.rend6645 ] - br i1 %t75, label %then6646, label %endif6648 -then6646: + br label %logic.rend6931 +logic.rend6931: + br label %logic.end6930 +logic.end6930: + %t75 = phi i1 [ false, %logic.from6928 ], [ %t74, %logic.rend6931 ] + br i1 %t75, label %then6932, label %endif6934 +then6932: %t76 = load ptr, ptr %a1 %t77 = load %S.ast.Node, ptr %a2 %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 %t79 = load %S.ast.Type, ptr %t78 %t80 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t79) - store { ptr, i64, i64 } { ptr @.str.4261, i64 69, i64 0 }, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4487, i64 69, i64 0 }, ptr %a82 store { ptr, i64, i64 } %t80, ptr %a83 call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) %t84 = load { ptr, i64, i64 }, ptr %a81 store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4262, i64 1, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.4488, i64 1, i64 0 }, ptr %a87 call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) %t88 = load { ptr, i64, i64 }, ptr %a85 call void @finch.gen.fail(ptr %t76, %S.ast.Node %t77, { ptr, i64, i64 } %t88) - br label %endif6648 -endif6648: + br label %endif6934 +endif6934: %t89 = load ptr, ptr %a1 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic6649, label %ok6650 -panic6649: - call void @finch_panic(ptr @.str.4263, i64 3837, ptr @.str.4264) + br i1 %t90, label %panic6935, label %ok6936 +panic6935: + call void @finch_panic(ptr @.str.4489, i64 3965, ptr @.str.4490) unreachable -ok6650: +ok6936: %t91 = getelementptr inbounds %S.gen.Gen, ptr %t89, i32 0, i32 14 store i64 0, ptr %a92 - br label %each.cond6651 -each.cond6651: + br label %each.cond6937 +each.cond6937: %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 %t94 = load i64, ptr %t93 %t95 = load i64, ptr %a92 %t96 = icmp slt i64 %t95, %t94 - br i1 %t96, label %each.body6652, label %each.end6654 -each.body6652: + br i1 %t96, label %each.body6938, label %each.end6940 +each.body6938: %t97 = load ptr, ptr %t91 %t98 = getelementptr inbounds %S.gen.FnSig, ptr %t97, i64 %t95 %t99 = load %S.gen.FnSig, ptr %t98 store %S.gen.FnSig %t99, ptr %a100 %t101 = getelementptr inbounds %S.gen.FnSig, ptr %a100, i32 0, i32 5 %t102 = load i1, ptr %t101 - br label %logic.from6655 -logic.from6655: - br i1 %t102, label %logic.rhs6656, label %logic.end6657 -logic.rhs6656: + br label %logic.from6941 +logic.from6941: + br i1 %t102, label %logic.rhs6942, label %logic.end6943 +logic.rhs6942: %t103 = getelementptr inbounds %S.gen.FnSig, ptr %a100, i32 0, i32 1 %t104 = load { ptr, i64, i64 }, ptr %t103 %t105 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 @@ -57766,35 +61731,35 @@ logic.rhs6656: store { ptr, i64, i64 } %t106, ptr %a108 %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) %t110 = icmp ne i32 %t109, 0 - br label %logic.rend6658 -logic.rend6658: - br label %logic.end6657 -logic.end6657: - %t111 = phi i1 [ false, %logic.from6655 ], [ %t110, %logic.rend6658 ] - br i1 %t111, label %then6659, label %endif6661 -then6659: + br label %logic.rend6944 +logic.rend6944: + br label %logic.end6943 +logic.end6943: + %t111 = phi i1 [ false, %logic.from6941 ], [ %t110, %logic.rend6944 ] + br i1 %t111, label %then6945, label %endif6947 +then6945: %t112 = load ptr, ptr %a1 %t113 = load %S.ast.Node, ptr %a2 %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.4265, i64 1, i64 0 }, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.4491, i64 1, i64 0 }, ptr %a117 store { ptr, i64, i64 } %t115, ptr %a118 call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) %t119 = load { ptr, i64, i64 }, ptr %a116 store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4266, i64 38, i64 0 }, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.4492, i64 38, i64 0 }, ptr %a122 call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) %t123 = load { ptr, i64, i64 }, ptr %a120 call void @finch.gen.fail(ptr %t112, %S.ast.Node %t113, { ptr, i64, i64 } %t123) - br label %endif6661 -endif6661: - br label %each.step6653 -each.step6653: + br label %endif6947 +endif6947: + br label %each.step6939 +each.step6939: %t124 = load i64, ptr %a92 %t125 = add i64 %t124, 1 store i64 %t125, ptr %a92 - br label %each.cond6651 -each.end6654: + br label %each.cond6937 +each.end6940: ret void } @@ -57930,22 +61895,22 @@ entry: %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 %t10 = load i64, ptr %t9 store i64 0, ptr %a11 - br label %for.cond6662 -for.cond6662: + br label %for.cond6948 +for.cond6948: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body6663, label %for.end6665 -for.body6663: + br i1 %t13, label %for.body6949, label %for.end6951 +for.body6949: %t14 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 13 %t15 = load i64, ptr %a11 %t16 = load { ptr, i64, i64 }, ptr %t14 %t17 = extractvalue { ptr, i64, i64 } %t16, 1 %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range6666, label %inrange6667 -range6666: - call void @finch_panic_index(ptr @.str.4267, i64 3850, i64 %t15, i64 %t17) + br i1 %t18, label %range6952, label %inrange6953 +range6952: + call void @finch_panic_index(ptr @.str.4493, i64 3978, i64 %t15, i64 %t17) unreachable -inrange6667: +inrange6953: %t19 = extractvalue { ptr, i64, i64 } %t16, 0 %t20 = getelementptr inbounds %S.ast.Type, ptr %t19, i64 %t15 %t21 = load %S.ast.Type, ptr %t20 @@ -57956,16 +61921,16 @@ inrange6667: %t26 = getelementptr inbounds %S.ast.Type, ptr %a25, i32 0, i32 0 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4268, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.4494, i64 4, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br i1 %t31, label %then6668, label %else6669 -then6668: + br i1 %t31, label %then6954, label %else6955 +then6954: %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t33 = load i64, ptr %a11 call void @finch_str_from_int(ptr %a34, i64 %t33) %t35 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4269, i64 13, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4495, i64 13, i64 0 }, ptr %a37 store { ptr, i64, i64 } %t35, ptr %a38 call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 @@ -57981,16 +61946,16 @@ then6668: %t46 = load i64, ptr %a11 call void @finch_str_from_int(ptr %a47, i64 %t46) %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.4271, i64 13, i64 0 }, ptr %a50 + store { ptr, i64, i64 } { ptr @.str.4497, i64 13, i64 0 }, ptr %a50 store { ptr, i64, i64 } %t48, ptr %a51 call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t52, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.4272, i64 3, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.4498, i64 3, i64 0 }, ptr %a55 call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 %t57 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } { ptr @.str.4270, i64 3, i64 0 }, ptr %a59 + store { ptr, i64, i64 } { ptr @.str.4496, i64 3, i64 0 }, ptr %a59 store { ptr, i64, i64 } %t57, ptr %a60 call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) %t61 = load { ptr, i64, i64 }, ptr %a58 @@ -58001,8 +61966,8 @@ then6668: %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 store { ptr, i64, i64 } %t61, ptr %t65 store i64 %t63, ptr %t44 - br label %endif6670 -else6669: + br label %endif6956 +else6955: %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t67 = load ptr, ptr %a1 %t68 = load %S.ast.Type, ptr %a25 @@ -58015,7 +61980,7 @@ else6669: call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) %t76 = load { ptr, i64, i64 }, ptr %a73 store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4273, i64 3, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.4499, i64 3, i64 0 }, ptr %a79 call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) %t80 = load { ptr, i64, i64 }, ptr %a77 %t81 = load i64, ptr %a11 @@ -58037,7 +62002,7 @@ else6669: %t94 = load %S.ast.Type, ptr %a25 %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.4274, i64 3, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a98 call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) %t99 = load { ptr, i64, i64 }, ptr %a96 %t100 = load i64, ptr %a11 @@ -58054,25 +62019,25 @@ else6669: %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i64 %t107 store { ptr, i64, i64 } %t106, ptr %t110 store i64 %t108, ptr %t92 - br label %endif6670 -endif6670: - br label %for.step6664 -for.step6664: + br label %endif6956 +endif6956: + br label %for.step6950 +for.step6950: %t111 = load i64, ptr %a11 %t112 = add i64 %t111, 1 store i64 %t112, ptr %a11 - br label %for.cond6662 -for.end6665: + br label %for.cond6948 +for.end6951: %t113 = load ptr, ptr %a1 %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t115 = load %S.ast.Type, ptr %t114 %t116 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t115) - store { ptr, i64, i64 } { ptr @.str.4275, i64 5, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.4501, i64 5, i64 0 }, ptr %a118 store { ptr, i64, i64 } %t116, ptr %a119 call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) %t120 = load { ptr, i64, i64 }, ptr %a117 store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.4502, i64 1, i64 0 }, ptr %a123 call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) %t124 = load { ptr, i64, i64 }, ptr %a121 %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 @@ -58082,11 +62047,11 @@ for.end6665: call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4277, i64 1, i64 0 }, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.4503, i64 1, i64 0 }, ptr %a133 call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) %t134 = load { ptr, i64, i64 }, ptr %a131 %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4278, i64 2, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.4504, i64 2, i64 0 }, ptr %a136 call void @finch_str_join(ptr %a137, ptr %a4, ptr %a136) %t138 = load { ptr, i64, i64 }, ptr %a137 store { ptr, i64, i64 } %t134, ptr %a140 @@ -58094,60 +62059,60 @@ for.end6665: call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.4279, i64 1, i64 0 }, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.4505, i64 1, i64 0 }, ptr %a145 call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) %t146 = load { ptr, i64, i64 }, ptr %a143 store { ptr, i64, i64 } %t146, ptr %a147 - store { ptr, i64, i64 } { ptr @.str.4280, i64 4, i64 0 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4281, i64 0, i64 0 }, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.4506, i64 4, i64 0 }, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4507, i64 0, i64 0 }, ptr %a149 %t150 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 %t152 = load { ptr, i64, i64 }, ptr %t151 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4282, i64 4, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.4508, i64 4, i64 0 }, ptr %a154 %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) %t156 = icmp ne i32 %t155, 0 - br i1 %t156, label %then6671, label %else6672 -then6671: + br i1 %t156, label %then6957, label %else6958 +then6957: %t157 = load ptr, ptr %a1 %t158 = load { ptr, i64, i64 }, ptr %a147 call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t158) %t159 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t159, { ptr, i64, i64 } { ptr @.str.4283, i64 8, i64 0 }) - br label %endif6673 -else6672: + call void @finch.gen.emit(ptr %t159, { ptr, i64, i64 } { ptr @.str.4509, i64 8, i64 0 }) + br label %endif6959 +else6958: %t160 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t161 = getelementptr inbounds %S.ast.Type, ptr %t160, i32 0, i32 0 %t162 = load { ptr, i64, i64 }, ptr %t161 store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4284, i64 4, i64 0 }, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.4510, i64 4, i64 0 }, ptr %a164 %t165 = call i32 @finch_str_eq(ptr %a163, ptr %a164) %t166 = icmp ne i32 %t165, 0 - br i1 %t166, label %then6674, label %else6675 -then6674: - store { ptr, i64, i64 } { ptr @.str.4285, i64 2, i64 0 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4286, i64 8, i64 0 }, ptr %a149 + br i1 %t166, label %then6960, label %else6961 +then6960: + store { ptr, i64, i64 } { ptr @.str.4511, i64 2, i64 0 }, ptr %a148 + store { ptr, i64, i64 } { ptr @.str.4512, i64 8, i64 0 }, ptr %a149 %t167 = load ptr, ptr %a1 %t168 = load ptr, ptr %a1 %t169 = load ptr, ptr %a1 %t170 = load { ptr, i64, i64 }, ptr %a147 %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t169, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } { ptr @.str.4288, i64 8, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.4514, i64 8, i64 0 }, ptr %a173 store { ptr, i64, i64 } %t171, ptr %a174 call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) %t175 = load { ptr, i64, i64 }, ptr %a172 store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4289, i64 6, i64 0 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4515, i64 6, i64 0 }, ptr %a178 call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) %t179 = load { ptr, i64, i64 }, ptr %a176 %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t168, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } { ptr @.str.4287, i64 7, i64 0 }, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.4513, i64 7, i64 0 }, ptr %a182 store { ptr, i64, i64 } %t180, ptr %a183 call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) %t184 = load { ptr, i64, i64 }, ptr %a181 call void @finch.gen.emit(ptr %t167, { ptr, i64, i64 } %t184) - br label %endif6676 -else6675: + br label %endif6962 +else6961: %t185 = load ptr, ptr %a1 %t186 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t187 = load %S.ast.Type, ptr %t186 @@ -58160,12 +62125,12 @@ else6675: store { ptr, i64, i64 } %t192, ptr %a149 %t193 = load ptr, ptr %a1 %t194 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4290, i64 4, i64 0 }, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.4516, i64 4, i64 0 }, ptr %a196 store { ptr, i64, i64 } %t194, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.4291, i64 1, i64 0 }, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.4517, i64 1, i64 0 }, ptr %a201 call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) %t202 = load { ptr, i64, i64 }, ptr %a199 %t203 = load ptr, ptr %a1 @@ -58176,30 +62141,30 @@ else6675: call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) %t209 = load { ptr, i64, i64 }, ptr %a206 call void @finch.gen.emit(ptr %t193, { ptr, i64, i64 } %t209) - br label %endif6676 -endif6676: - br label %endif6673 -endif6673: - store { ptr, i64, i64 } { ptr @.str.4292, i64 0, i64 0 }, ptr %a210 + br label %endif6962 +endif6962: + br label %endif6959 +endif6959: + store { ptr, i64, i64 } { ptr @.str.4518, i64 0, i64 0 }, ptr %a210 %t211 = load ptr, ptr %a1 %t212 = icmp eq ptr %t211, null - br i1 %t212, label %panic6677, label %ok6678 -panic6677: - call void @finch_panic(ptr @.str.4293, i64 3875, ptr @.str.4294) + br i1 %t212, label %panic6963, label %ok6964 +panic6963: + call void @finch_panic(ptr @.str.4519, i64 4003, ptr @.str.4520) unreachable -ok6678: - %t213 = getelementptr inbounds %S.gen.Gen, ptr %t211, i32 0, i32 27 +ok6964: + %t213 = getelementptr inbounds %S.gen.Gen, ptr %t211, i32 0, i32 29 %t214 = getelementptr inbounds %S.platform.Target, ptr %t213, i32 0, i32 1 %t215 = load i1, ptr %t214 - br i1 %t215, label %then6679, label %endif6681 -then6679: - store { ptr, i64, i64 } { ptr @.str.4295, i64 10, i64 0 }, ptr %a210 - br label %endif6681 -endif6681: + br i1 %t215, label %then6965, label %endif6967 +then6965: + store { ptr, i64, i64 } { ptr @.str.4521, i64 10, i64 0 }, ptr %a210 + br label %endif6967 +endif6967: %t216 = load ptr, ptr %a1 %t217 = load %S.gen.Saved, ptr %a7 %t218 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.4296, i64 6, i64 0 }, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.4522, i64 6, i64 0 }, ptr %a220 store { ptr, i64, i64 } %t218, ptr %a221 call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) %t222 = load { ptr, i64, i64 }, ptr %a219 @@ -58209,7 +62174,7 @@ endif6681: call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) %t227 = load { ptr, i64, i64 }, ptr %a224 store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4297, i64 1, i64 0 }, ptr %a230 + store { ptr, i64, i64 } { ptr @.str.4523, i64 1, i64 0 }, ptr %a230 call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 %t232 = load { ptr, i64, i64 }, ptr %a148 @@ -58218,7 +62183,7 @@ endif6681: call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) %t236 = load { ptr, i64, i64 }, ptr %a233 store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4298, i64 2, i64 0 }, ptr %a239 + store { ptr, i64, i64 } { ptr @.str.4524, i64 2, i64 0 }, ptr %a239 call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) %t240 = load { ptr, i64, i64 }, ptr %a237 %t241 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 @@ -58228,11 +62193,11 @@ endif6681: call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 store { ptr, i64, i64 } %t246, ptr %a248 - store { ptr, i64, i64 } { ptr @.str.4299, i64 1, i64 0 }, ptr %a249 + store { ptr, i64, i64 } { ptr @.str.4525, i64 1, i64 0 }, ptr %a249 call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) %t250 = load { ptr, i64, i64 }, ptr %a247 %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4300, i64 2, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.4526, i64 2, i64 0 }, ptr %a252 call void @finch_str_join(ptr %a253, ptr %a3, ptr %a252) %t254 = load { ptr, i64, i64 }, ptr %a253 store { ptr, i64, i64 } %t250, ptr %a256 @@ -58240,7 +62205,7 @@ endif6681: call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) %t258 = load { ptr, i64, i64 }, ptr %a255 store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.4301, i64 1, i64 0 }, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.4527, i64 1, i64 0 }, ptr %a261 call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) %t262 = load { ptr, i64, i64 }, ptr %a259 call void @finch.gen.endHelper(ptr %t216, %S.gen.Saved %t217, { ptr, i64, i64 } %t262) @@ -58516,21 +62481,21 @@ entry: store %S.ast.Node %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6682, label %ok6683 -panic6682: - call void @finch_panic(ptr @.str.4302, i64 3884, ptr @.str.4303) + br i1 %t5, label %panic6968, label %ok6969 +panic6968: + call void @finch_panic(ptr @.str.4528, i64 4012, ptr @.str.4529) unreachable -ok6683: +ok6969: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 14 %t7 = load i64, ptr %a2 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6684, label %inrange6685 -range6684: - call void @finch_panic_index(ptr @.str.4304, i64 3884, i64 %t7, i64 %t9) + br i1 %t10, label %range6970, label %inrange6971 +range6970: + call void @finch_panic_index(ptr @.str.4530, i64 4012, i64 %t7, i64 %t9) unreachable -inrange6685: +inrange6971: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.FnSig, ptr %t11, i64 %t7 %t13 = load %S.gen.FnSig, ptr %t12 @@ -58541,12 +62506,12 @@ inrange6685: %t18 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 0 %t19 = load { ptr, i64, i64 }, ptr %t18 %t20 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t19) - store { ptr, i64, i64 } { ptr @.str.4305, i64 9, i64 0 }, ptr %a22 + store { ptr, i64, i64 } { ptr @.str.4531, i64 9, i64 0 }, ptr %a22 store { ptr, i64, i64 } %t20, ptr %a23 call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) %t24 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.4306, i64 1, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.4532, i64 1, i64 0 }, ptr %a27 call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) %t28 = load { ptr, i64, i64 }, ptr %a25 %t29 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 @@ -58558,15 +62523,15 @@ inrange6685: store { ptr, i64, i64 } %t34, ptr %a35 %t36 = load ptr, ptr %a1 %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic6686, label %ok6687 -panic6686: - call void @finch_panic(ptr @.str.4307, i64 3886, ptr @.str.4308) + br i1 %t37, label %panic6972, label %ok6973 +panic6972: + call void @finch_panic(ptr @.str.4533, i64 4014, ptr @.str.4534) unreachable -ok6687: - %t38 = getelementptr inbounds %S.gen.Gen, ptr %t36, i32 0, i32 36 +ok6973: + %t38 = getelementptr inbounds %S.gen.Gen, ptr %t36, i32 0, i32 38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.4309, i64 2, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.4535, i64 2, i64 0 }, ptr %a42 store { ptr, i64, i64 } %t40, ptr %a43 call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) %t44 = load { ptr, i64, i64 }, ptr %a41 @@ -58574,48 +62539,48 @@ ok6687: %t46 = load i64, ptr %t39 %t47 = load ptr, ptr %t38 store i64 0, ptr %a48 - br label %find.cond6688 -find.cond6688: + br label %find.cond6974 +find.cond6974: %t49 = load i64, ptr %a48 %t50 = icmp slt i64 %t49, %t46 - br i1 %t50, label %find.body6689, label %find.end6692 -find.body6689: + br i1 %t50, label %find.body6975, label %find.end6978 +find.body6975: %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t49 %t52 = load { ptr, i64, i64 }, ptr %t51 store { ptr, i64, i64 } %t52, ptr %a53 store { ptr, i64, i64 } %t44, ptr %a54 %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %find.hit6690, label %find.next6691 -find.hit6690: + br i1 %t56, label %find.hit6976, label %find.next6977 +find.hit6976: store i64 %t49, ptr %a45 - br label %find.end6692 -find.next6691: + br label %find.end6978 +find.next6977: %t57 = add i64 %t49, 1 store i64 %t57, ptr %a48 - br label %find.cond6688 -find.end6692: + br label %find.cond6974 +find.end6978: %t58 = load i64, ptr %a45 %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then6693, label %endif6695 -then6693: + br i1 %t59, label %then6979, label %endif6981 +then6979: %t60 = load { ptr, i64, i64 }, ptr %a35 store { ptr, i64, i64 } %t60, ptr %a61 call void @finch_str_copy(ptr %a62, ptr %a61) %t63 = load { ptr, i64, i64 }, ptr %a62 ret { ptr, i64, i64 } %t63 -endif6695: +endif6981: %t64 = load ptr, ptr %a1 %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic6696, label %ok6697 -panic6696: - call void @finch_panic(ptr @.str.4310, i64 3889, ptr @.str.4311) + br i1 %t65, label %panic6982, label %ok6983 +panic6982: + call void @finch_panic(ptr @.str.4536, i64 4017, ptr @.str.4537) unreachable -ok6697: - %t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 36 +ok6983: + %t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 38 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 %t68 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.4312, i64 2, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4538, i64 2, i64 0 }, ptr %a70 store { ptr, i64, i64 } %t68, ptr %a71 call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) %t72 = load { ptr, i64, i64 }, ptr %a69 @@ -58630,116 +62595,116 @@ ok6697: %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 %t79 = load i64, ptr %t78 %t80 = icmp sgt i64 %t79, 0 - br label %logic.from6698 -logic.from6698: - br i1 %t80, label %logic.end6700, label %logic.rhs6699 -logic.rhs6699: + br label %logic.from6984 +logic.from6984: + br i1 %t80, label %logic.end6986, label %logic.rhs6985 +logic.rhs6985: %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 %t82 = load i1, ptr %t81 - br label %logic.rend6701 -logic.rend6701: - br label %logic.end6700 -logic.end6700: - %t83 = phi i1 [ true, %logic.from6698 ], [ %t82, %logic.rend6701 ] - br i1 %t83, label %then6702, label %endif6704 -then6702: + br label %logic.rend6987 +logic.rend6987: + br label %logic.end6986 +logic.end6986: + %t83 = phi i1 [ true, %logic.from6984 ], [ %t82, %logic.rend6987 ] + br i1 %t83, label %then6988, label %endif6990 +then6988: %t84 = load ptr, ptr %a1 %t85 = load %S.ast.Node, ptr %a3 %t86 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.4313, i64 5, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.4539, i64 5, i64 0 }, ptr %a89 store { ptr, i64, i64 } %t87, ptr %a90 call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) %t91 = load { ptr, i64, i64 }, ptr %a88 store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4314, i64 81, i64 0 }, ptr %a94 + store { ptr, i64, i64 } { ptr @.str.4540, i64 81, i64 0 }, ptr %a94 call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) %t95 = load { ptr, i64, i64 }, ptr %a92 call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t95) - br label %endif6704 -endif6704: + br label %endif6990 +endif6990: %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 store i64 0, ptr %a97 - br label %each.cond6705 -each.cond6705: + br label %each.cond6991 +each.cond6991: %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i32 0, i32 1 %t99 = load i64, ptr %t98 %t100 = load i64, ptr %a97 %t101 = icmp slt i64 %t100, %t99 - br i1 %t101, label %each.body6706, label %each.end6708 -each.body6706: + br i1 %t101, label %each.body6992, label %each.end6994 +each.body6992: %t102 = load ptr, ptr %t96 %t103 = getelementptr inbounds %S.ast.Type, ptr %t102, i64 %t100 %t104 = load %S.ast.Type, ptr %t103 store %S.ast.Type %t104, ptr %a105 %t106 = load %S.ast.Type, ptr %a105 %t107 = call i1 @finch.gen.isNumber(%S.ast.Type %t106) - br label %logic.from6709 -logic.from6709: - br i1 %t107, label %logic.end6711, label %logic.rhs6710 -logic.rhs6710: + br label %logic.from6995 +logic.from6995: + br i1 %t107, label %logic.end6997, label %logic.rhs6996 +logic.rhs6996: %t108 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0 %t109 = load { ptr, i64, i64 }, ptr %t108 store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.4541, i64 4, i64 0 }, ptr %a111 %t112 = call i32 @finch_str_eq(ptr %a110, ptr %a111) %t113 = icmp ne i32 %t112, 0 - br label %logic.rend6712 -logic.rend6712: - br label %logic.end6711 -logic.end6711: - %t114 = phi i1 [ true, %logic.from6709 ], [ %t113, %logic.rend6712 ] - br label %logic.from6713 -logic.from6713: - br i1 %t114, label %logic.end6715, label %logic.rhs6714 -logic.rhs6714: + br label %logic.rend6998 +logic.rend6998: + br label %logic.end6997 +logic.end6997: + %t114 = phi i1 [ true, %logic.from6995 ], [ %t113, %logic.rend6998 ] + br label %logic.from6999 +logic.from6999: + br i1 %t114, label %logic.end7001, label %logic.rhs7000 +logic.rhs7000: %t115 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0 %t116 = load { ptr, i64, i64 }, ptr %t115 store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.4316, i64 4, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.4542, i64 4, i64 0 }, ptr %a118 %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) %t120 = icmp ne i32 %t119, 0 - br label %logic.rend6716 -logic.rend6716: - br label %logic.end6715 -logic.end6715: - %t121 = phi i1 [ true, %logic.from6713 ], [ %t120, %logic.rend6716 ] - br label %logic.from6717 -logic.from6717: - br i1 %t121, label %logic.end6719, label %logic.rhs6718 -logic.rhs6718: + br label %logic.rend7002 +logic.rend7002: + br label %logic.end7001 +logic.end7001: + %t121 = phi i1 [ true, %logic.from6999 ], [ %t120, %logic.rend7002 ] + br label %logic.from7003 +logic.from7003: + br i1 %t121, label %logic.end7005, label %logic.rhs7004 +logic.rhs7004: %t122 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0 %t123 = load { ptr, i64, i64 }, ptr %t122 store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4317, i64 3, i64 0 }, ptr %a125 + store { ptr, i64, i64 } { ptr @.str.4543, i64 3, i64 0 }, ptr %a125 %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) %t127 = icmp ne i32 %t126, 0 - br label %logic.rend6720 -logic.rend6720: - br label %logic.end6719 -logic.end6719: - %t128 = phi i1 [ true, %logic.from6717 ], [ %t127, %logic.rend6720 ] - br label %logic.from6721 -logic.from6721: - br i1 %t128, label %logic.end6723, label %logic.rhs6722 -logic.rhs6722: + br label %logic.rend7006 +logic.rend7006: + br label %logic.end7005 +logic.end7005: + %t128 = phi i1 [ true, %logic.from7003 ], [ %t127, %logic.rend7006 ] + br label %logic.from7007 +logic.from7007: + br i1 %t128, label %logic.end7009, label %logic.rhs7008 +logic.rhs7008: %t129 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 0 %t130 = load { ptr, i64, i64 }, ptr %t129 store { ptr, i64, i64 } %t130, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4318, i64 6, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.4544, i64 6, i64 0 }, ptr %a132 %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) %t134 = icmp ne i32 %t133, 0 - br label %logic.from6724 -logic.from6724: - br i1 %t134, label %logic.rhs6725, label %logic.end6726 -logic.rhs6725: + br label %logic.from7010 +logic.from7010: + br i1 %t134, label %logic.rhs7011, label %logic.end7012 +logic.rhs7011: %t135 = load ptr, ptr %a1 %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic6727, label %ok6728 -panic6727: - call void @finch_panic(ptr @.str.4319, i64 3894, ptr @.str.4320) + br i1 %t136, label %panic7013, label %ok7014 +panic7013: + call void @finch_panic(ptr @.str.4545, i64 4022, ptr @.str.4546) unreachable -ok6728: +ok7014: %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 15 %t138 = load ptr, ptr %a1 %t139 = getelementptr inbounds %S.ast.Type, ptr %a105, i32 0, i32 3 @@ -58750,38 +62715,38 @@ ok6728: %t144 = load { ptr, i64, i64 }, ptr %t137 %t145 = extractvalue { ptr, i64, i64 } %t144, 1 %t146 = icmp uge i64 %t143, %t145 - br i1 %t146, label %range6729, label %inrange6730 -range6729: - call void @finch_panic_index(ptr @.str.4321, i64 3894, i64 %t143, i64 %t145) + br i1 %t146, label %range7015, label %inrange7016 +range7015: + call void @finch_panic_index(ptr @.str.4547, i64 4022, i64 %t143, i64 %t145) unreachable -inrange6730: +inrange7016: %t147 = extractvalue { ptr, i64, i64 } %t144, 0 %t148 = getelementptr inbounds %S.gen.StructDef, ptr %t147, i64 %t143 %t149 = getelementptr inbounds %S.gen.StructDef, ptr %t148, i32 0, i32 2 %t150 = load i1, ptr %t149 - br label %logic.rend6731 -logic.rend6731: - br label %logic.end6726 -logic.end6726: - %t151 = phi i1 [ false, %logic.from6724 ], [ %t150, %logic.rend6731 ] - br label %logic.rend6732 -logic.rend6732: - br label %logic.end6723 -logic.end6723: - %t152 = phi i1 [ true, %logic.from6721 ], [ %t151, %logic.rend6732 ] + br label %logic.rend7017 +logic.rend7017: + br label %logic.end7012 +logic.end7012: + %t151 = phi i1 [ false, %logic.from7010 ], [ %t150, %logic.rend7017 ] + br label %logic.rend7018 +logic.rend7018: + br label %logic.end7009 +logic.end7009: + %t152 = phi i1 [ true, %logic.from7007 ], [ %t151, %logic.rend7018 ] %t153 = xor i1 %t152, true - br i1 %t153, label %then6733, label %endif6735 -then6733: + br i1 %t153, label %then7019, label %endif7021 +then7019: %t154 = load ptr, ptr %a1 %t155 = load %S.ast.Node, ptr %a3 %t156 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } { ptr @.str.4322, i64 5, i64 0 }, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.4548, i64 5, i64 0 }, ptr %a159 store { ptr, i64, i64 } %t157, ptr %a160 call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) %t161 = load { ptr, i64, i64 }, ptr %a158 store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4323, i64 95, i64 0 }, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.4549, i64 95, i64 0 }, ptr %a164 call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) %t165 = load { ptr, i64, i64 }, ptr %a162 %t166 = load %S.ast.Type, ptr %a105 @@ -58791,104 +62756,104 @@ then6733: call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) %t171 = load { ptr, i64, i64 }, ptr %a168 call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t171) - br label %endif6735 -endif6735: - br label %each.step6707 -each.step6707: + br label %endif7021 +endif7021: + br label %each.step6993 +each.step6993: %t172 = load i64, ptr %a97 %t173 = add i64 %t172, 1 store i64 %t173, ptr %a97 - br label %each.cond6705 -each.end6708: + br label %each.cond6991 +each.end6994: %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t175 = load %S.ast.Type, ptr %t174 %t176 = call i1 @finch.gen.isNumber(%S.ast.Type %t175) - br label %logic.from6736 -logic.from6736: - br i1 %t176, label %logic.end6738, label %logic.rhs6737 -logic.rhs6737: + br label %logic.from7022 +logic.from7022: + br i1 %t176, label %logic.end7024, label %logic.rhs7023 +logic.rhs7023: %t177 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t178 = getelementptr inbounds %S.ast.Type, ptr %t177, i32 0, i32 0 %t179 = load { ptr, i64, i64 }, ptr %t178 store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4324, i64 4, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.4550, i64 4, i64 0 }, ptr %a181 %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) %t183 = icmp ne i32 %t182, 0 - br label %logic.rend6739 -logic.rend6739: - br label %logic.end6738 -logic.end6738: - %t184 = phi i1 [ true, %logic.from6736 ], [ %t183, %logic.rend6739 ] - br label %logic.from6740 -logic.from6740: - br i1 %t184, label %logic.end6742, label %logic.rhs6741 -logic.rhs6741: + br label %logic.rend7025 +logic.rend7025: + br label %logic.end7024 +logic.end7024: + %t184 = phi i1 [ true, %logic.from7022 ], [ %t183, %logic.rend7025 ] + br label %logic.from7026 +logic.from7026: + br i1 %t184, label %logic.end7028, label %logic.rhs7027 +logic.rhs7027: %t185 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i32 0, i32 0 %t187 = load { ptr, i64, i64 }, ptr %t186 store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4325, i64 4, i64 0 }, ptr %a189 + store { ptr, i64, i64 } { ptr @.str.4551, i64 4, i64 0 }, ptr %a189 %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) %t191 = icmp ne i32 %t190, 0 - br label %logic.rend6743 -logic.rend6743: - br label %logic.end6742 -logic.end6742: - %t192 = phi i1 [ true, %logic.from6740 ], [ %t191, %logic.rend6743 ] - br label %logic.from6744 -logic.from6744: - br i1 %t192, label %logic.end6746, label %logic.rhs6745 -logic.rhs6745: + br label %logic.rend7029 +logic.rend7029: + br label %logic.end7028 +logic.end7028: + %t192 = phi i1 [ true, %logic.from7026 ], [ %t191, %logic.rend7029 ] + br label %logic.from7030 +logic.from7030: + br i1 %t192, label %logic.end7032, label %logic.rhs7031 +logic.rhs7031: %t193 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t194 = getelementptr inbounds %S.ast.Type, ptr %t193, i32 0, i32 0 %t195 = load { ptr, i64, i64 }, ptr %t194 store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4326, i64 3, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.4552, i64 3, i64 0 }, ptr %a197 %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6747 -logic.rend6747: - br label %logic.end6746 -logic.end6746: - %t200 = phi i1 [ true, %logic.from6744 ], [ %t199, %logic.rend6747 ] - br label %logic.from6748 -logic.from6748: - br i1 %t200, label %logic.end6750, label %logic.rhs6749 -logic.rhs6749: + br label %logic.rend7033 +logic.rend7033: + br label %logic.end7032 +logic.end7032: + %t200 = phi i1 [ true, %logic.from7030 ], [ %t199, %logic.rend7033 ] + br label %logic.from7034 +logic.from7034: + br i1 %t200, label %logic.end7036, label %logic.rhs7035 +logic.rhs7035: %t201 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t202 = getelementptr inbounds %S.ast.Type, ptr %t201, i32 0, i32 0 %t203 = load { ptr, i64, i64 }, ptr %t202 store { ptr, i64, i64 } %t203, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.4327, i64 4, i64 0 }, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.4553, i64 4, i64 0 }, ptr %a205 %t206 = call i32 @finch_str_eq(ptr %a204, ptr %a205) %t207 = icmp ne i32 %t206, 0 - br label %logic.rend6751 -logic.rend6751: - br label %logic.end6750 -logic.end6750: - %t208 = phi i1 [ true, %logic.from6748 ], [ %t207, %logic.rend6751 ] - br label %logic.from6752 -logic.from6752: - br i1 %t208, label %logic.end6754, label %logic.rhs6753 -logic.rhs6753: + br label %logic.rend7037 +logic.rend7037: + br label %logic.end7036 +logic.end7036: + %t208 = phi i1 [ true, %logic.from7034 ], [ %t207, %logic.rend7037 ] + br label %logic.from7038 +logic.from7038: + br i1 %t208, label %logic.end7040, label %logic.rhs7039 +logic.rhs7039: %t209 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t210 = getelementptr inbounds %S.ast.Type, ptr %t209, i32 0, i32 0 %t211 = load { ptr, i64, i64 }, ptr %t210 store { ptr, i64, i64 } %t211, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4328, i64 6, i64 0 }, ptr %a213 + store { ptr, i64, i64 } { ptr @.str.4554, i64 6, i64 0 }, ptr %a213 %t214 = call i32 @finch_str_eq(ptr %a212, ptr %a213) %t215 = icmp ne i32 %t214, 0 - br label %logic.from6755 -logic.from6755: - br i1 %t215, label %logic.rhs6756, label %logic.end6757 -logic.rhs6756: + br label %logic.from7041 +logic.from7041: + br i1 %t215, label %logic.rhs7042, label %logic.end7043 +logic.rhs7042: %t216 = load ptr, ptr %a1 %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic6758, label %ok6759 -panic6758: - call void @finch_panic(ptr @.str.4329, i64 3898, ptr @.str.4330) + br i1 %t217, label %panic7044, label %ok7045 +panic7044: + call void @finch_panic(ptr @.str.4555, i64 4026, ptr @.str.4556) unreachable -ok6759: +ok7045: %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 15 %t219 = load ptr, ptr %a1 %t220 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 @@ -58901,38 +62866,38 @@ ok6759: %t227 = load { ptr, i64, i64 }, ptr %t218 %t228 = extractvalue { ptr, i64, i64 } %t227, 1 %t229 = icmp uge i64 %t226, %t228 - br i1 %t229, label %range6760, label %inrange6761 -range6760: - call void @finch_panic_index(ptr @.str.4331, i64 3898, i64 %t226, i64 %t228) + br i1 %t229, label %range7046, label %inrange7047 +range7046: + call void @finch_panic_index(ptr @.str.4557, i64 4026, i64 %t226, i64 %t228) unreachable -inrange6761: +inrange7047: %t230 = extractvalue { ptr, i64, i64 } %t227, 0 %t231 = getelementptr inbounds %S.gen.StructDef, ptr %t230, i64 %t226 %t232 = getelementptr inbounds %S.gen.StructDef, ptr %t231, i32 0, i32 2 %t233 = load i1, ptr %t232 - br label %logic.rend6762 -logic.rend6762: - br label %logic.end6757 -logic.end6757: - %t234 = phi i1 [ false, %logic.from6755 ], [ %t233, %logic.rend6762 ] - br label %logic.rend6763 -logic.rend6763: - br label %logic.end6754 -logic.end6754: - %t235 = phi i1 [ true, %logic.from6752 ], [ %t234, %logic.rend6763 ] + br label %logic.rend7048 +logic.rend7048: + br label %logic.end7043 +logic.end7043: + %t234 = phi i1 [ false, %logic.from7041 ], [ %t233, %logic.rend7048 ] + br label %logic.rend7049 +logic.rend7049: + br label %logic.end7040 +logic.end7040: + %t235 = phi i1 [ true, %logic.from7038 ], [ %t234, %logic.rend7049 ] %t236 = xor i1 %t235, true - br i1 %t236, label %then6764, label %endif6766 -then6764: + br i1 %t236, label %then7050, label %endif7052 +then7050: %t237 = load ptr, ptr %a1 %t238 = load %S.ast.Node, ptr %a3 %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 %t240 = load { ptr, i64, i64 }, ptr %t239 - store { ptr, i64, i64 } { ptr @.str.4332, i64 5, i64 0 }, ptr %a242 + store { ptr, i64, i64 } { ptr @.str.4558, i64 5, i64 0 }, ptr %a242 store { ptr, i64, i64 } %t240, ptr %a243 call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) %t244 = load { ptr, i64, i64 }, ptr %a241 store { ptr, i64, i64 } %t244, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.4333, i64 38, i64 0 }, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4559, i64 38, i64 0 }, ptr %a247 call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) %t248 = load { ptr, i64, i64 }, ptr %a245 %t249 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 @@ -58943,8 +62908,8 @@ then6764: call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) %t255 = load { ptr, i64, i64 }, ptr %a252 call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t255) - br label %endif6766 -endif6766: + br label %endif7052 +endif7052: %t256 = load ptr, ptr %a1 %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t258 = load %S.ast.Type, ptr %t257 @@ -58957,22 +62922,22 @@ endif6766: store %S.gen.Saved %t264, ptr %a265 store { ptr, i64, i64 } zeroinitializer, ptr %a266 store i64 0, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.4334, i64 0, i64 0 }, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.4560, i64 0, i64 0 }, ptr %a268 %t269 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 3 %t270 = load i1, ptr %t269 - br i1 %t270, label %then6767, label %endif6769 -then6767: + br i1 %t270, label %then7053, label %endif7055 +then7053: %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 %t272 = load ptr, ptr %a1 %t273 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t274 = load %S.ast.Type, ptr %t273 %t275 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t272, %S.ast.Type %t274) - store { ptr, i64, i64 } { ptr @.str.4335, i64 9, i64 0 }, ptr %a277 + store { ptr, i64, i64 } { ptr @.str.4561, i64 9, i64 0 }, ptr %a277 store { ptr, i64, i64 } %t275, ptr %a278 call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) %t279 = load { ptr, i64, i64 }, ptr %a276 store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.4336, i64 14, i64 0 }, ptr %a282 + store { ptr, i64, i64 } { ptr @.str.4562, i64 14, i64 0 }, ptr %a282 call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) %t283 = load { ptr, i64, i64 }, ptr %a280 %t284 = load i64, ptr %t271 @@ -58982,31 +62947,31 @@ then6767: %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 %t284 store { ptr, i64, i64 } %t283, ptr %t287 store i64 %t285, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.4337, i64 3, i64 0 }, ptr %a268 + store { ptr, i64, i64 } { ptr @.str.4563, i64 3, i64 0 }, ptr %a268 store i64 1, ptr %a267 - br label %endif6769 -endif6769: + br label %endif7055 +endif7055: store { ptr, i64, i64 } zeroinitializer, ptr %a288 %t289 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 %t291 = load i64, ptr %t290 store i64 0, ptr %a292 - br label %for.cond6770 -for.cond6770: + br label %for.cond7056 +for.cond7056: %t293 = load i64, ptr %a292 %t294 = icmp slt i64 %t293, %t291 - br i1 %t294, label %for.body6771, label %for.end6773 -for.body6771: + br i1 %t294, label %for.body7057, label %for.end7059 +for.body7057: %t295 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 %t296 = load i64, ptr %a292 %t297 = load { ptr, i64, i64 }, ptr %t295 %t298 = extractvalue { ptr, i64, i64 } %t297, 1 %t299 = icmp uge i64 %t296, %t298 - br i1 %t299, label %range6774, label %inrange6775 -range6774: - call void @finch_panic_index(ptr @.str.4338, i64 3913, i64 %t296, i64 %t298) + br i1 %t299, label %range7060, label %inrange7061 +range7060: + call void @finch_panic_index(ptr @.str.4564, i64 4041, i64 %t296, i64 %t298) unreachable -inrange6775: +inrange7061: %t300 = extractvalue { ptr, i64, i64 } %t297, 0 %t301 = getelementptr inbounds %S.ast.Type, ptr %t300, i64 %t296 %t302 = load %S.ast.Type, ptr %t301 @@ -59019,11 +62984,11 @@ inrange6775: %t309 = load { ptr, i64, i64 }, ptr %t307 %t310 = extractvalue { ptr, i64, i64 } %t309, 1 %t311 = icmp uge i64 %t308, %t310 - br i1 %t311, label %range6776, label %inrange6777 -range6776: - call void @finch_panic_index(ptr @.str.4339, i64 3914, i64 %t308, i64 %t310) + br i1 %t311, label %range7062, label %inrange7063 +range7062: + call void @finch_panic_index(ptr @.str.4565, i64 4042, i64 %t308, i64 %t310) unreachable -inrange6777: +inrange7063: %t312 = extractvalue { ptr, i64, i64 } %t309, 0 %t313 = getelementptr inbounds %S.gen.Abi, ptr %t312, i64 %t308 %t314 = load %S.gen.Abi, ptr %t313 @@ -59034,21 +62999,21 @@ inrange6777: %t319 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0 %t320 = load { ptr, i64, i64 }, ptr %t319 store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.4340, i64 6, i64 0 }, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.4566, i64 6, i64 0 }, ptr %a322 %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) %t324 = icmp ne i32 %t323, 0 - br i1 %t324, label %then6778, label %else6779 -then6778: + br i1 %t324, label %then7064, label %else7065 +then7064: %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 %t326 = load ptr, ptr %a1 %t327 = load %S.ast.Type, ptr %a306 %t328 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t326, %S.ast.Type %t327) - store { ptr, i64, i64 } { ptr @.str.4341, i64 10, i64 0 }, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.4567, i64 10, i64 0 }, ptr %a330 store { ptr, i64, i64 } %t328, ptr %a331 call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) %t332 = load { ptr, i64, i64 }, ptr %a329 store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.4342, i64 8, i64 0 }, ptr %a335 + store { ptr, i64, i64 } { ptr @.str.4568, i64 8, i64 0 }, ptr %a335 call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) %t336 = load { ptr, i64, i64 }, ptr %a333 %t337 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 3 @@ -59060,7 +63025,7 @@ then6778: call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) %t344 = load { ptr, i64, i64 }, ptr %a341 store { ptr, i64, i64 } %t344, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.4343, i64 3, i64 0 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.4569, i64 3, i64 0 }, ptr %a347 call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347) %t348 = load { ptr, i64, i64 }, ptr %a345 %t349 = load i64, ptr %a267 @@ -59082,7 +63047,7 @@ then6778: %t362 = load %S.ast.Type, ptr %a306 %t363 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t361, %S.ast.Type %t362) store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4344, i64 1, i64 0 }, ptr %a366 + store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a366 call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) %t367 = load { ptr, i64, i64 }, ptr %a364 %t368 = load ptr, ptr %a1 @@ -59092,7 +63057,7 @@ then6778: %t372 = load i64, ptr %a267 call void @finch_str_from_int(ptr %a373, i64 %t372) %t374 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4345, i64 2, i64 0 }, ptr %a376 + store { ptr, i64, i64 } { ptr @.str.4571, i64 2, i64 0 }, ptr %a376 store { ptr, i64, i64 } %t374, ptr %a377 call void @finch_str_concat(ptr %a375, ptr %a376, ptr %a377) %t378 = load { ptr, i64, i64 }, ptr %a375 @@ -59111,21 +63076,21 @@ then6778: %t388 = load i64, ptr %a267 %t389 = add i64 %t388, 1 store i64 %t389, ptr %a267 - br label %endif6780 -else6779: + br label %endif7066 +else7065: %t390 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0 %t391 = load { ptr, i64, i64 }, ptr %t390 store { ptr, i64, i64 } %t391, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.4346, i64 8, i64 0 }, ptr %a393 + store { ptr, i64, i64 } { ptr @.str.4572, i64 8, i64 0 }, ptr %a393 %t394 = call i32 @finch_str_eq(ptr %a392, ptr %a393) %t395 = icmp ne i32 %t394, 0 - br i1 %t395, label %then6781, label %else6782 -then6781: + br i1 %t395, label %then7067, label %else7068 +then7067: %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 %t397 = load i64, ptr %a267 call void @finch_str_from_int(ptr %a398, i64 %t397) %t399 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a401 store { ptr, i64, i64 } %t399, ptr %a402 call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) %t403 = load { ptr, i64, i64 }, ptr %a400 @@ -59141,7 +63106,7 @@ then6781: %t410 = load %S.ast.Type, ptr %a306 %t411 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t409, %S.ast.Type %t410) store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.4348, i64 1, i64 0 }, ptr %a414 + store { ptr, i64, i64 } { ptr @.str.4574, i64 1, i64 0 }, ptr %a414 call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) %t415 = load { ptr, i64, i64 }, ptr %a412 %t416 = load ptr, ptr %a1 @@ -59151,7 +63116,7 @@ then6781: %t420 = load i64, ptr %a267 call void @finch_str_from_int(ptr %a421, i64 %t420) %t422 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.4349, i64 2, i64 0 }, ptr %a424 + store { ptr, i64, i64 } { ptr @.str.4575, i64 2, i64 0 }, ptr %a424 store { ptr, i64, i64 } %t422, ptr %a425 call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) %t426 = load { ptr, i64, i64 }, ptr %a423 @@ -59170,45 +63135,45 @@ then6781: %t436 = load i64, ptr %a267 %t437 = add i64 %t436, 1 store i64 %t437, ptr %a267 - br label %endif6783 -else6782: + br label %endif7069 +else7068: %t438 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 0 %t439 = load { ptr, i64, i64 }, ptr %t438 store { ptr, i64, i64 } %t439, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a441 + store { ptr, i64, i64 } { ptr @.str.4576, i64 6, i64 0 }, ptr %a441 %t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441) %t443 = icmp ne i32 %t442, 0 - br i1 %t443, label %then6784, label %else6785 -then6784: + br i1 %t443, label %then7070, label %else7071 +then7070: %t444 = load ptr, ptr %a1 - %t445 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t444, { ptr, i64, i64 } { ptr @.str.4351, i64 9, i64 0 }) + %t445 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t444, { ptr, i64, i64 } { ptr @.str.4577, i64 9, i64 0 }) store { ptr, i64, i64 } %t445, ptr %a446 %t447 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1 %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 %t449 = load i64, ptr %t448 store i64 0, ptr %a450 - br label %for.cond6787 -for.cond6787: + br label %for.cond7073 +for.cond7073: %t451 = load i64, ptr %a450 %t452 = icmp slt i64 %t451, %t449 - br i1 %t452, label %for.body6788, label %for.end6790 -for.body6788: + br i1 %t452, label %for.body7074, label %for.end7076 +for.body7074: %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 %t454 = getelementptr inbounds %S.gen.Abi, ptr %a318, i32 0, i32 1 %t455 = load i64, ptr %a450 %t456 = load { ptr, i64, i64 }, ptr %t454 %t457 = extractvalue { ptr, i64, i64 } %t456, 1 %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range6791, label %inrange6792 -range6791: - call void @finch_panic_index(ptr @.str.4352, i64 3926, i64 %t455, i64 %t457) + br i1 %t458, label %range7077, label %inrange7078 +range7077: + call void @finch_panic_index(ptr @.str.4578, i64 4054, i64 %t455, i64 %t457) unreachable -inrange6792: +inrange7078: %t459 = extractvalue { ptr, i64, i64 } %t456, 0 %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %t459, i64 %t455 %t461 = load { ptr, i64, i64 }, ptr %t460 store { ptr, i64, i64 } %t461, ptr %a463 - store { ptr, i64, i64 } { ptr @.str.4353, i64 3, i64 0 }, ptr %a464 + store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a464 call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) %t465 = load { ptr, i64, i64 }, ptr %a462 %t466 = load i64, ptr %a267 @@ -59231,29 +63196,29 @@ inrange6792: %t480 = load { ptr, i64, i64 }, ptr %t478 %t481 = extractvalue { ptr, i64, i64 } %t480, 1 %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range6793, label %inrange6794 -range6793: - call void @finch_panic_index(ptr @.str.4354, i64 3927, i64 %t479, i64 %t481) + br i1 %t482, label %range7079, label %inrange7080 +range7079: + call void @finch_panic_index(ptr @.str.4580, i64 4055, i64 %t479, i64 %t481) unreachable -inrange6794: +inrange7080: %t483 = extractvalue { ptr, i64, i64 } %t480, 0 %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t479 %t485 = load { ptr, i64, i64 }, ptr %t484 %t486 = load i64, ptr %a267 call void @finch_str_from_int(ptr %a487, i64 %t486) %t488 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.4355, i64 2, i64 0 }, ptr %a490 + store { ptr, i64, i64 } { ptr @.str.4581, i64 2, i64 0 }, ptr %a490 store { ptr, i64, i64 } %t488, ptr %a491 call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) %t492 = load { ptr, i64, i64 }, ptr %a489 %t493 = load ptr, ptr %a1 %t494 = load { ptr, i64, i64 }, ptr %a446 - store { ptr, i64, i64 } { ptr @.str.4356, i64 31, i64 0 }, ptr %a496 + store { ptr, i64, i64 } { ptr @.str.4582, i64 31, i64 0 }, ptr %a496 store { ptr, i64, i64 } %t494, ptr %a497 call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) %t498 = load { ptr, i64, i64 }, ptr %a495 store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.4357, i64 6, i64 0 }, ptr %a501 + store { ptr, i64, i64 } { ptr @.str.4583, i64 6, i64 0 }, ptr %a501 call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) %t502 = load { ptr, i64, i64 }, ptr %a499 %t503 = load i64, ptr %a450 @@ -59269,19 +63234,19 @@ inrange6794: %t512 = load i64, ptr %a267 %t513 = add i64 %t512, 1 store i64 %t513, ptr %a267 - br label %for.step6789 -for.step6789: + br label %for.step7075 +for.step7075: %t514 = load i64, ptr %a450 %t515 = add i64 %t514, 1 store i64 %t515, ptr %a450 - br label %for.cond6787 -for.end6790: + br label %for.cond7073 +for.end7076: %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 %t517 = load ptr, ptr %a1 %t518 = load %S.ast.Type, ptr %a306 %t519 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t517, %S.ast.Type %t518) store { ptr, i64, i64 } %t519, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.4358, i64 1, i64 0 }, ptr %a522 + store { ptr, i64, i64 } { ptr @.str.4584, i64 1, i64 0 }, ptr %a522 call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) %t523 = load { ptr, i64, i64 }, ptr %a520 %t524 = load ptr, ptr %a1 @@ -59301,8 +63266,8 @@ for.end6790: %t537 = getelementptr inbounds { ptr, i64, i64 }, ptr %t536, i64 %t534 store { ptr, i64, i64 } %t533, ptr %t537 store i64 %t535, ptr %t516 - br label %endif6786 -else6785: + br label %endif7072 +else7071: %t538 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 %t539 = load ptr, ptr %a1 %t540 = load %S.ast.Type, ptr %a306 @@ -59315,7 +63280,7 @@ else6785: call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) %t548 = load { ptr, i64, i64 }, ptr %a545 store { ptr, i64, i64 } %t548, ptr %a550 - store { ptr, i64, i64 } { ptr @.str.4359, i64 3, i64 0 }, ptr %a551 + store { ptr, i64, i64 } { ptr @.str.4585, i64 3, i64 0 }, ptr %a551 call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) %t552 = load { ptr, i64, i64 }, ptr %a549 %t553 = load i64, ptr %a267 @@ -59337,7 +63302,7 @@ else6785: %t566 = load %S.ast.Type, ptr %a306 %t567 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t565, %S.ast.Type %t566) store { ptr, i64, i64 } %t567, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.4360, i64 3, i64 0 }, ptr %a570 + store { ptr, i64, i64 } { ptr @.str.4586, i64 3, i64 0 }, ptr %a570 call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) %t571 = load { ptr, i64, i64 }, ptr %a568 %t572 = load i64, ptr %a267 @@ -59357,29 +63322,29 @@ else6785: %t583 = load i64, ptr %a267 %t584 = add i64 %t583, 1 store i64 %t584, ptr %a267 - br label %endif6786 -endif6786: - br label %endif6783 -endif6783: - br label %endif6780 -endif6780: - br label %for.step6772 -for.step6772: + br label %endif7072 +endif7072: + br label %endif7069 +endif7069: + br label %endif7066 +endif7066: + br label %for.step7058 +for.step7058: %t585 = load i64, ptr %a292 %t586 = add i64 %t585, 1 store i64 %t586, ptr %a292 - br label %for.cond6770 -for.end6773: + br label %for.cond7056 +for.end7059: %t587 = load ptr, ptr %a1 %t588 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t589 = load %S.ast.Type, ptr %t588 %t590 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t587, %S.ast.Type %t589) - store { ptr, i64, i64 } { ptr @.str.4361, i64 5, i64 0 }, ptr %a592 + store { ptr, i64, i64 } { ptr @.str.4587, i64 5, i64 0 }, ptr %a592 store { ptr, i64, i64 } %t590, ptr %a593 call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) %t594 = load { ptr, i64, i64 }, ptr %a591 store { ptr, i64, i64 } %t594, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4362, i64 1, i64 0 }, ptr %a597 + store { ptr, i64, i64 } { ptr @.str.4588, i64 1, i64 0 }, ptr %a597 call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597) %t598 = load { ptr, i64, i64 }, ptr %a595 %t599 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 @@ -59389,11 +63354,11 @@ for.end6773: call void @finch_str_concat(ptr %a601, ptr %a602, ptr %a603) %t604 = load { ptr, i64, i64 }, ptr %a601 store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.4363, i64 1, i64 0 }, ptr %a607 + store { ptr, i64, i64 } { ptr @.str.4589, i64 1, i64 0 }, ptr %a607 call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) %t608 = load { ptr, i64, i64 }, ptr %a605 %t609 = getelementptr inbounds { ptr, i64, i64 }, ptr %a288, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4364, i64 2, i64 0 }, ptr %a610 + store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a610 call void @finch_str_join(ptr %a611, ptr %a288, ptr %a610) %t612 = load { ptr, i64, i64 }, ptr %a611 store { ptr, i64, i64 } %t608, ptr %a614 @@ -59401,31 +63366,31 @@ for.end6773: call void @finch_str_concat(ptr %a613, ptr %a614, ptr %a615) %t616 = load { ptr, i64, i64 }, ptr %a613 store { ptr, i64, i64 } %t616, ptr %a618 - store { ptr, i64, i64 } { ptr @.str.4365, i64 1, i64 0 }, ptr %a619 + store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a619 call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) %t620 = load { ptr, i64, i64 }, ptr %a617 store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4366, i64 0, i64 0 }, ptr %a622 + store { ptr, i64, i64 } { ptr @.str.4592, i64 0, i64 0 }, ptr %a622 %t623 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t624 = getelementptr inbounds %S.ast.Type, ptr %t623, i32 0, i32 0 %t625 = load { ptr, i64, i64 }, ptr %t624 store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.4367, i64 4, i64 0 }, ptr %a627 + store { ptr, i64, i64 } { ptr @.str.4593, i64 4, i64 0 }, ptr %a627 %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) %t629 = icmp ne i32 %t628, 0 - br i1 %t629, label %then6795, label %else6796 -then6795: + br i1 %t629, label %then7081, label %else7082 +then7081: %t630 = load ptr, ptr %a1 %t631 = load { ptr, i64, i64 }, ptr %a621 call void @finch.gen.emit(ptr %t630, { ptr, i64, i64 } %t631) %t632 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t632, { ptr, i64, i64 } { ptr @.str.4368, i64 8, i64 0 }) - br label %endif6797 -else6796: + call void @finch.gen.emit(ptr %t632, { ptr, i64, i64 } { ptr @.str.4594, i64 8, i64 0 }) + br label %endif7083 +else7082: %t633 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 3 %t634 = load i1, ptr %t633 - br i1 %t634, label %then6798, label %else6799 -then6798: + br i1 %t634, label %then7084, label %else7085 +then7084: %t635 = load ptr, ptr %a1 %t636 = load ptr, ptr %a1 %t637 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 @@ -59437,20 +63402,20 @@ then6798: %t643 = load { ptr, i64, i64 }, ptr %a268 call void @finch.gen.store(ptr %t635, { ptr, i64, i64 } %t639, { ptr, i64, i64 } %t642, { ptr, i64, i64 } %t643) %t644 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t644, { ptr, i64, i64 } { ptr @.str.4369, i64 8, i64 0 }) - br label %endif6800 -else6799: + call void @finch.gen.emit(ptr %t644, { ptr, i64, i64 } { ptr @.str.4595, i64 8, i64 0 }) + br label %endif7086 +else7085: %t645 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0 %t646 = getelementptr inbounds %S.gen.Abi, ptr %t645, i32 0, i32 0 %t647 = load { ptr, i64, i64 }, ptr %t646 store { ptr, i64, i64 } %t647, ptr %a648 - store { ptr, i64, i64 } { ptr @.str.4370, i64 6, i64 0 }, ptr %a649 + store { ptr, i64, i64 } { ptr @.str.4596, i64 6, i64 0 }, ptr %a649 %t650 = call i32 @finch_str_eq(ptr %a648, ptr %a649) %t651 = icmp ne i32 %t650, 0 - br i1 %t651, label %then6801, label %else6802 -then6801: + br i1 %t651, label %then7087, label %else7088 +then7087: %t652 = load ptr, ptr %a1 - %t653 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t652, { ptr, i64, i64 } { ptr @.str.4371, i64 9, i64 0 }) + %t653 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t652, { ptr, i64, i64 } { ptr @.str.4597, i64 9, i64 0 }) store { ptr, i64, i64 } %t653, ptr %a654 %t655 = load ptr, ptr %a1 %t656 = load ptr, ptr %a1 @@ -59466,12 +63431,12 @@ then6801: %t665 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 0 %t666 = getelementptr inbounds %S.gen.Abi, ptr %t665, i32 0, i32 2 %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } { ptr @.str.4372, i64 4, i64 0 }, ptr %a669 + store { ptr, i64, i64 } { ptr @.str.4598, i64 4, i64 0 }, ptr %a669 store { ptr, i64, i64 } %t667, ptr %a670 call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) %t671 = load { ptr, i64, i64 }, ptr %a668 store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.4373, i64 1, i64 0 }, ptr %a674 + store { ptr, i64, i64 } { ptr @.str.4599, i64 1, i64 0 }, ptr %a674 call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) %t675 = load { ptr, i64, i64 }, ptr %a672 %t676 = load ptr, ptr %a1 @@ -59485,8 +63450,8 @@ then6801: call void @finch_str_concat(ptr %a682, ptr %a683, ptr %a684) %t685 = load { ptr, i64, i64 }, ptr %a682 call void @finch.gen.emit(ptr %t664, { ptr, i64, i64 } %t685) - br label %endif6803 -else6802: + br label %endif7089 +else7088: %t686 = load ptr, ptr %a1 %t687 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t688 = load %S.ast.Type, ptr %t687 @@ -59497,12 +63462,12 @@ else6802: %t692 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 %t693 = load %S.ast.Type, ptr %t692 %t694 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t691, %S.ast.Type %t693) - store { ptr, i64, i64 } { ptr @.str.4374, i64 4, i64 0 }, ptr %a696 + store { ptr, i64, i64 } { ptr @.str.4600, i64 4, i64 0 }, ptr %a696 store { ptr, i64, i64 } %t694, ptr %a697 call void @finch_str_concat(ptr %a695, ptr %a696, ptr %a697) %t698 = load { ptr, i64, i64 }, ptr %a695 store { ptr, i64, i64 } %t698, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4375, i64 1, i64 0 }, ptr %a701 + store { ptr, i64, i64 } { ptr @.str.4601, i64 1, i64 0 }, ptr %a701 call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) %t702 = load { ptr, i64, i64 }, ptr %a699 %t703 = load ptr, ptr %a1 @@ -59513,21 +63478,21 @@ else6802: call void @finch_str_concat(ptr %a706, ptr %a707, ptr %a708) %t709 = load { ptr, i64, i64 }, ptr %a706 call void @finch.gen.emit(ptr %t690, { ptr, i64, i64 } %t709) - br label %endif6803 -endif6803: - br label %endif6800 -endif6800: - br label %endif6797 -endif6797: + br label %endif7089 +endif7089: + br label %endif7086 +endif7086: + br label %endif7083 +endif7083: %t710 = load ptr, ptr %a1 %t711 = load %S.gen.Saved, ptr %a265 %t712 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4376, i64 15, i64 0 }, ptr %a714 + store { ptr, i64, i64 } { ptr @.str.4602, i64 15, i64 0 }, ptr %a714 store { ptr, i64, i64 } %t712, ptr %a715 call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) %t716 = load { ptr, i64, i64 }, ptr %a713 store { ptr, i64, i64 } %t716, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.4377, i64 1, i64 0 }, ptr %a719 + store { ptr, i64, i64 } { ptr @.str.4603, i64 1, i64 0 }, ptr %a719 call void @finch_str_concat(ptr %a717, ptr %a718, ptr %a719) %t720 = load { ptr, i64, i64 }, ptr %a717 %t721 = getelementptr inbounds %S.gen.Plan, ptr %a262, i32 0, i32 2 @@ -59537,7 +63502,7 @@ endif6797: call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) %t726 = load { ptr, i64, i64 }, ptr %a723 store { ptr, i64, i64 } %t726, ptr %a728 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a729 + store { ptr, i64, i64 } { ptr @.str.4604, i64 1, i64 0 }, ptr %a729 call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729) %t730 = load { ptr, i64, i64 }, ptr %a727 %t731 = load { ptr, i64, i64 }, ptr %a35 @@ -59546,11 +63511,11 @@ endif6797: call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) %t735 = load { ptr, i64, i64 }, ptr %a732 store { ptr, i64, i64 } %t735, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.4379, i64 1, i64 0 }, ptr %a738 + store { ptr, i64, i64 } { ptr @.str.4605, i64 1, i64 0 }, ptr %a738 call void @finch_str_concat(ptr %a736, ptr %a737, ptr %a738) %t739 = load { ptr, i64, i64 }, ptr %a736 %t740 = getelementptr inbounds { ptr, i64, i64 }, ptr %a266, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4380, i64 2, i64 0 }, ptr %a741 + store { ptr, i64, i64 } { ptr @.str.4606, i64 2, i64 0 }, ptr %a741 call void @finch_str_join(ptr %a742, ptr %a266, ptr %a741) %t743 = load { ptr, i64, i64 }, ptr %a742 store { ptr, i64, i64 } %t739, ptr %a745 @@ -59558,7 +63523,7 @@ endif6797: call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) %t747 = load { ptr, i64, i64 }, ptr %a744 store { ptr, i64, i64 } %t747, ptr %a749 - store { ptr, i64, i64 } { ptr @.str.4381, i64 1, i64 0 }, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.4607, i64 1, i64 0 }, ptr %a750 call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) %t751 = load { ptr, i64, i64 }, ptr %a748 call void @finch.gen.endHelper(ptr %t710, %S.gen.Saved %t711, { ptr, i64, i64 } %t751) @@ -59649,21 +63614,21 @@ entry: store i64 %p2, ptr %a3 %t4 = load ptr, ptr %a1 %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6804, label %ok6805 -panic6804: - call void @finch_panic(ptr @.str.4382, i64 3959, ptr @.str.4383) + br i1 %t5, label %panic7090, label %ok7091 +panic7090: + call void @finch_panic(ptr @.str.4608, i64 4087, ptr @.str.4609) unreachable -ok6805: +ok7091: %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 20 %t7 = load i64, ptr %a3 %t8 = load { ptr, i64, i64 }, ptr %t6 %t9 = extractvalue { ptr, i64, i64 } %t8, 1 %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6806, label %inrange6807 -range6806: - call void @finch_panic_index(ptr @.str.4384, i64 3959, i64 %t7, i64 %t9) + br i1 %t10, label %range7092, label %inrange7093 +range7092: + call void @finch_panic_index(ptr @.str.4610, i64 4087, i64 %t7, i64 %t9) unreachable -inrange6807: +inrange7093: %t11 = extractvalue { ptr, i64, i64 } %t8, 0 %t12 = getelementptr inbounds %S.gen.EnumDef, ptr %t11, i64 %t7 %t13 = load %S.gen.EnumDef, ptr %t12 @@ -59681,11 +63646,11 @@ inrange6807: %t24 = load { ptr, i64, i64 }, ptr %t23 %t25 = extractvalue { ptr, i64, i64 } %t24, 1 %t26 = icmp uge i64 0, %t25 - br i1 %t26, label %range6808, label %inrange6809 -range6808: - call void @finch_panic_index(ptr @.str.4385, i64 3961, i64 0, i64 %t25) + br i1 %t26, label %range7094, label %inrange7095 +range7094: + call void @finch_panic_index(ptr @.str.4611, i64 4089, i64 0, i64 %t25) unreachable -inrange6809: +inrange7095: %t27 = extractvalue { ptr, i64, i64 } %t24, 0 %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 0 %t29 = load %S.ast.Node, ptr %t28 @@ -59695,25 +63660,25 @@ inrange6809: %t33 = load %S.ast.Type, ptr %t32 %t34 = call i1 @finch.gen.isInt(%S.ast.Type %t33) %t35 = xor i1 %t34, true - br i1 %t35, label %then6810, label %endif6812 -then6810: + br i1 %t35, label %then7096, label %endif7098 +then7096: %t36 = load ptr, ptr %a1 %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t38 = load { ptr, i64, i64 }, ptr %t37 %t39 = extractvalue { ptr, i64, i64 } %t38, 1 %t40 = icmp uge i64 0, %t39 - br i1 %t40, label %range6813, label %inrange6814 -range6813: - call void @finch_panic_index(ptr @.str.4386, i64 3963, i64 0, i64 %t39) + br i1 %t40, label %range7099, label %inrange7100 +range7099: + call void @finch_panic_index(ptr @.str.4612, i64 4091, i64 0, i64 %t39) unreachable -inrange6814: +inrange7100: %t41 = extractvalue { ptr, i64, i64 } %t38, 0 %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 0 %t43 = load %S.ast.Node, ptr %t42 %t44 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 %t45 = load { ptr, i64, i64 }, ptr %t44 store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.4387, i64 54, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.4613, i64 54, i64 0 }, ptr %a48 call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) %t49 = load { ptr, i64, i64 }, ptr %a46 %t50 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 @@ -59724,9 +63689,9 @@ inrange6814: call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t56) - br label %endif6812 -endif6812: - %t57 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4388, i64 4, i64 0 }, 0 + br label %endif7098 +endif7098: + %t57 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4614, i64 4, i64 0 }, 0 %t58 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 %t59 = load { ptr, i64, i64 }, ptr %t58 store { ptr, i64, i64 } %t59, ptr %a60 @@ -59742,58 +63707,58 @@ endif6812: store %S.ast.Type %t69, ptr %a70 %t71 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 %t72 = load i1, ptr %t71 - br i1 %t72, label %then6815, label %endif6817 -then6815: + br i1 %t72, label %then7101, label %endif7103 +then7101: %t73 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 %t75 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 %t76 = load { ptr, i64, i64 }, ptr %t75 store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = call i64 @finch_str_to_int(ptr %a77, ptr @.str.4389, i64 3967) + %t78 = call i64 @finch_str_to_int(ptr %a77, ptr @.str.4615, i64 4095) store i64 -1, ptr %a79 %t80 = load i64, ptr %t74 %t81 = load ptr, ptr %t73 store i64 0, ptr %a82 - br label %find.cond6818 -find.cond6818: + br label %find.cond7104 +find.cond7104: %t83 = load i64, ptr %a82 %t84 = icmp slt i64 %t83, %t80 - br i1 %t84, label %find.body6819, label %find.end6822 -find.body6819: + br i1 %t84, label %find.body7105, label %find.end7108 +find.body7105: %t85 = getelementptr inbounds i64, ptr %t81, i64 %t83 %t86 = load i64, ptr %t85 %t87 = icmp eq i64 %t86, %t78 - br i1 %t87, label %find.hit6820, label %find.next6821 -find.hit6820: + br i1 %t87, label %find.hit7106, label %find.next7107 +find.hit7106: store i64 %t83, ptr %a79 - br label %find.end6822 -find.next6821: + br label %find.end7108 +find.next7107: %t88 = add i64 %t83, 1 store i64 %t88, ptr %a82 - br label %find.cond6818 -find.end6822: + br label %find.cond7104 +find.end7108: %t89 = load i64, ptr %a79 %t90 = icmp sge i64 %t89, 0 %t91 = xor i1 %t90, true - br i1 %t91, label %then6823, label %endif6825 -then6823: + br i1 %t91, label %then7109, label %endif7111 +then7109: %t92 = load ptr, ptr %a1 %t93 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t94 = load { ptr, i64, i64 }, ptr %t93 %t95 = extractvalue { ptr, i64, i64 } %t94, 1 %t96 = icmp uge i64 0, %t95 - br i1 %t96, label %range6826, label %inrange6827 -range6826: - call void @finch_panic_index(ptr @.str.4390, i64 3968, i64 0, i64 %t95) + br i1 %t96, label %range7112, label %inrange7113 +range7112: + call void @finch_panic_index(ptr @.str.4616, i64 4096, i64 0, i64 %t95) unreachable -inrange6827: +inrange7113: %t97 = extractvalue { ptr, i64, i64 } %t94, 0 %t98 = getelementptr inbounds %S.ast.Node, ptr %t97, i64 0 %t99 = load %S.ast.Node, ptr %t98 %t100 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 %t101 = load { ptr, i64, i64 }, ptr %t100 store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.4391, i64 37, i64 0 }, ptr %a104 + store { ptr, i64, i64 } { ptr @.str.4617, i64 37, i64 0 }, ptr %a104 call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) %t105 = load { ptr, i64, i64 }, ptr %a102 %t106 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 @@ -59803,8 +63768,8 @@ inrange6827: call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - br label %endif6825 -endif6825: + br label %endif7111 +endif7111: %t112 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 %t113 = load { ptr, i64, i64 }, ptr %t112 store { ptr, i64, i64 } %t113, ptr %a114 @@ -59817,34 +63782,34 @@ endif6825: %t121 = load %S.ast.Type, ptr %a120 %t122 = insertvalue %S.gen.Val %t117, %S.ast.Type %t121, 1 ret %S.gen.Val %t122 -endif6817: +endif7103: %t123 = load ptr, ptr %a1 %t124 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 %t125 = load { ptr, i64, i64 }, ptr %t124 %t126 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 %t127 = load %S.ast.Type, ptr %t126 - %t128 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4392, i64 3, i64 0 }) + %t128 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4618, i64 3, i64 0 }) %t129 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t125, %S.ast.Type %t127, %S.ast.Type %t128) store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.4393, i64 0, i64 0 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.4619, i64 0, i64 0 }, ptr %a131 %t132 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i32 0, i32 1 %t134 = load i64, ptr %t133 store i64 0, ptr %a135 - br label %for.cond6828 -for.cond6828: + br label %for.cond7114 +for.cond7114: %t136 = load i64, ptr %a135 %t137 = icmp slt i64 %t136, %t134 - br i1 %t137, label %for.body6829, label %for.end6831 -for.body6829: + br i1 %t137, label %for.body7115, label %for.end7117 +for.body7115: %t138 = load ptr, ptr %a1 %t139 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.4394, i64 12, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4620, i64 12, i64 0 }, ptr %a141 store { ptr, i64, i64 } %t139, ptr %a142 call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) %t143 = load { ptr, i64, i64 }, ptr %a140 store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4395, i64 2, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.4621, i64 2, i64 0 }, ptr %a146 call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) %t147 = load { ptr, i64, i64 }, ptr %a144 %t148 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 @@ -59852,11 +63817,11 @@ for.body6829: %t150 = load { ptr, i64, i64 }, ptr %t148 %t151 = extractvalue { ptr, i64, i64 } %t150, 1 %t152 = icmp uge i64 %t149, %t151 - br i1 %t152, label %range6832, label %inrange6833 -range6832: - call void @finch_panic_index(ptr @.str.4396, i64 3975, i64 %t149, i64 %t151) + br i1 %t152, label %range7118, label %inrange7119 +range7118: + call void @finch_panic_index(ptr @.str.4622, i64 4103, i64 %t149, i64 %t151) unreachable -inrange6833: +inrange7119: %t153 = extractvalue { ptr, i64, i64 } %t150, 0 %t154 = getelementptr inbounds i64, ptr %t153, i64 %t149 %t155 = load i64, ptr %t154 @@ -59870,23 +63835,23 @@ inrange6833: store { ptr, i64, i64 } %t162, ptr %a163 %t164 = load i64, ptr %a135 %t165 = icmp eq i64 %t164, 0 - br i1 %t165, label %then6834, label %else6835 -then6834: + br i1 %t165, label %then7120, label %else7121 +then7120: %t166 = load { ptr, i64, i64 }, ptr %a163 store { ptr, i64, i64 } %t166, ptr %a167 call void @finch_str_copy(ptr %a168, ptr %a167) %t169 = load { ptr, i64, i64 }, ptr %a168 store { ptr, i64, i64 } %t169, ptr %a131 - br label %endif6836 -else6835: + br label %endif7122 +else7121: %t170 = load ptr, ptr %a1 %t171 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4397, i64 6, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.4623, i64 6, i64 0 }, ptr %a173 store { ptr, i64, i64 } %t171, ptr %a174 call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) %t175 = load { ptr, i64, i64 }, ptr %a172 store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4398, i64 2, i64 0 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.4624, i64 2, i64 0 }, ptr %a178 call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) %t179 = load { ptr, i64, i64 }, ptr %a176 %t180 = load { ptr, i64, i64 }, ptr %a163 @@ -59896,30 +63861,30 @@ else6835: %t184 = load { ptr, i64, i64 }, ptr %a181 %t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t170, { ptr, i64, i64 } %t184) store { ptr, i64, i64 } %t185, ptr %a131 - br label %endif6836 -endif6836: - br label %for.step6830 -for.step6830: + br label %endif7122 +endif7122: + br label %for.step7116 +for.step7116: %t186 = load i64, ptr %a135 %t187 = add i64 %t186, 1 store i64 %t187, ptr %a135 - br label %for.cond6828 -for.end6831: + br label %for.cond7114 +for.end7117: %t188 = load ptr, ptr %a1 %t189 = load ptr, ptr %a1 %t190 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4399, i64 7, i64 0 }, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.4625, i64 7, i64 0 }, ptr %a192 store { ptr, i64, i64 } %t190, ptr %a193 call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) %t194 = load { ptr, i64, i64 }, ptr %a191 store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4400, i64 6, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.4626, i64 6, i64 0 }, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t198) %t200 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } { ptr @.str.4401, i64 32, i64 0 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.4627, i64 32, i64 0 }, ptr %a203 store { ptr, i64, i64 } %t201, ptr %a204 call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) %t205 = load { ptr, i64, i64 }, ptr %a202 @@ -59927,12 +63892,12 @@ for.end6831: call void @finch.gen.panicIf(ptr %t188, { ptr, i64, i64 } %t199, { ptr, i64, i64 } %t205, %S.ast.Node %t206) %t207 = load ptr, ptr %a1 %t208 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.4402, i64 10, i64 0 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.4628, i64 10, i64 0 }, ptr %a210 store { ptr, i64, i64 } %t208, ptr %a211 call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) %t212 = load { ptr, i64, i64 }, ptr %a209 store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.4403, i64 7, i64 0 }, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.4629, i64 7, i64 0 }, ptr %a215 call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) %t216 = load { ptr, i64, i64 }, ptr %a213 %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t207, { ptr, i64, i64 } %t216) @@ -59960,106 +63925,106 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4404, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4630, i64 4, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br label %logic.from6837 -logic.from6837: - br i1 %t8, label %logic.end6839, label %logic.rhs6838 -logic.rhs6838: + br label %logic.from7123 +logic.from7123: + br i1 %t8, label %logic.end7125, label %logic.rhs7124 +logic.rhs7124: %t9 = load %S.ast.Type, ptr %a2 %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend6840 -logic.rend6840: - br label %logic.end6839 -logic.end6839: - %t11 = phi i1 [ true, %logic.from6837 ], [ %t10, %logic.rend6840 ] - br i1 %t11, label %then6841, label %endif6843 -then6841: + br label %logic.rend7126 +logic.rend7126: + br label %logic.end7125 +logic.end7125: + %t11 = phi i1 [ true, %logic.from7123 ], [ %t10, %logic.rend7126 ] + br i1 %t11, label %then7127, label %endif7129 +then7127: %t12 = load %S.ast.Type, ptr %a2 %t13 = call i64 @finch.gen.bitsOf(%S.ast.Type %t12) %t14 = icmp slt i64 %t13, 32 - br i1 %t14, label %then6844, label %endif6846 -then6844: - ret { ptr, i64, i64 } { ptr @.str.4405, i64 8, i64 0 } -endif6846: - br label %endif6843 -endif6843: + br i1 %t14, label %then7130, label %endif7132 +then7130: + ret { ptr, i64, i64 } { ptr @.str.4631, i64 8, i64 0 } +endif7132: + br label %endif7129 +endif7129: %t15 = load %S.ast.Type, ptr %a2 %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from6847 -logic.from6847: - br i1 %t16, label %logic.end6849, label %logic.rhs6848 -logic.rhs6848: + br label %logic.from7133 +logic.from7133: + br i1 %t16, label %logic.end7135, label %logic.rhs7134 +logic.rhs7134: %t17 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t18 = load { ptr, i64, i64 }, ptr %t17 store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.4406, i64 4, i64 0 }, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.4632, i64 4, i64 0 }, ptr %a20 %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) %t22 = icmp ne i32 %t21, 0 - br label %logic.from6850 -logic.from6850: - br i1 %t22, label %logic.rhs6851, label %logic.end6852 -logic.rhs6851: + br label %logic.from7136 +logic.from7136: + br i1 %t22, label %logic.rhs7137, label %logic.end7138 +logic.rhs7137: %t23 = load ptr, ptr %a1 %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic6853, label %ok6854 -panic6853: - call void @finch_panic(ptr @.str.4407, i64 3995, ptr @.str.4408) + br i1 %t24, label %panic7139, label %ok7140 +panic7139: + call void @finch_panic(ptr @.str.4633, i64 4123, ptr @.str.4634) unreachable -ok6854: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 27 +ok7140: + %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 29 %t26 = load %S.platform.Target, ptr %t25 %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend6855 -logic.rend6855: - br label %logic.end6852 -logic.end6852: - %t28 = phi i1 [ false, %logic.from6850 ], [ %t27, %logic.rend6855 ] - br label %logic.rend6856 -logic.rend6856: - br label %logic.end6849 -logic.end6849: - %t29 = phi i1 [ true, %logic.from6847 ], [ %t28, %logic.rend6856 ] - br label %logic.from6857 -logic.from6857: - br i1 %t29, label %logic.rhs6858, label %logic.end6859 -logic.rhs6858: + br label %logic.rend7141 +logic.rend7141: + br label %logic.end7138 +logic.end7138: + %t28 = phi i1 [ false, %logic.from7136 ], [ %t27, %logic.rend7141 ] + br label %logic.rend7142 +logic.rend7142: + br label %logic.end7135 +logic.end7135: + %t29 = phi i1 [ true, %logic.from7133 ], [ %t28, %logic.rend7142 ] + br label %logic.from7143 +logic.from7143: + br i1 %t29, label %logic.rhs7144, label %logic.end7145 +logic.rhs7144: %t30 = load %S.ast.Type, ptr %a2 %t31 = call i64 @finch.gen.bitsOf(%S.ast.Type %t30) %t32 = icmp slt i64 %t31, 32 - br label %logic.rend6860 -logic.rend6860: - br label %logic.end6859 -logic.end6859: - %t33 = phi i1 [ false, %logic.from6857 ], [ %t32, %logic.rend6860 ] - br i1 %t33, label %then6861, label %endif6863 -then6861: - ret { ptr, i64, i64 } { ptr @.str.4409, i64 8, i64 0 } -endif6863: + br label %logic.rend7146 +logic.rend7146: + br label %logic.end7145 +logic.end7145: + %t33 = phi i1 [ false, %logic.from7143 ], [ %t32, %logic.rend7146 ] + br i1 %t33, label %then7147, label %endif7149 +then7147: + ret { ptr, i64, i64 } { ptr @.str.4635, i64 8, i64 0 } +endif7149: %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t35 = load { ptr, i64, i64 }, ptr %t34 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4410, i64 4, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.4636, i64 4, i64 0 }, ptr %a37 %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) %t39 = icmp ne i32 %t38, 0 - br label %logic.from6864 -logic.from6864: - br i1 %t39, label %logic.rhs6865, label %logic.end6866 -logic.rhs6865: + br label %logic.from7150 +logic.from7150: + br i1 %t39, label %logic.rhs7151, label %logic.end7152 +logic.rhs7151: %t40 = load %S.ast.Type, ptr %a2 %t41 = call i64 @finch.gen.bitsOf(%S.ast.Type %t40) %t42 = icmp slt i64 %t41, 32 - br label %logic.rend6867 -logic.rend6867: - br label %logic.end6866 -logic.end6866: - %t43 = phi i1 [ false, %logic.from6864 ], [ %t42, %logic.rend6867 ] - br i1 %t43, label %then6868, label %endif6870 -then6868: - ret { ptr, i64, i64 } { ptr @.str.4411, i64 8, i64 0 } -endif6870: - ret { ptr, i64, i64 } { ptr @.str.4412, i64 0, i64 0 } + br label %logic.rend7153 +logic.rend7153: + br label %logic.end7152 +logic.end7152: + %t43 = phi i1 [ false, %logic.from7150 ], [ %t42, %logic.rend7153 ] + br i1 %t43, label %then7154, label %endif7156 +then7154: + ret { ptr, i64, i64 } { ptr @.str.4637, i64 8, i64 0 } +endif7156: + ret { ptr, i64, i64 } { ptr @.str.4638, i64 0, i64 0 } } define internal { ptr, i64, i64 } @finch.gen.cLL(ptr %p0, %S.ast.Type %p1) { @@ -60073,13 +64038,13 @@ entry: %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t4 = load { ptr, i64, i64 }, ptr %t3 store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4413, i64 3, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.4639, i64 3, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_eq(ptr %a5, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br i1 %t8, label %then6871, label %endif6873 -then6871: - ret { ptr, i64, i64 } { ptr @.str.4414, i64 3, i64 0 } -endif6873: + br i1 %t8, label %then7157, label %endif7159 +then7157: + ret { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 } +endif7159: %t9 = load ptr, ptr %a1 %t10 = load %S.ast.Type, ptr %a2 %t11 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t9, %S.ast.Type %t10) @@ -60091,1596 +64056,1735 @@ entry: %a1 = alloca ptr, align 16 %a2 = alloca %S.ast.Node, align 16 %a3 = alloca %S.cimport.CFunc, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca i64, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca %S.ast.Type, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 %a45 = alloca { ptr, i64, i64 }, align 16 %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 %a55 = alloca { ptr, i64, i64 }, align 16 %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 %a59 = alloca { ptr, i64, i64 }, align 16 %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 %a65 = alloca { ptr, i64, i64 }, align 16 %a66 = alloca { ptr, i64, i64 }, align 16 %a67 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a75 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 %a78 = alloca { ptr, i64, i64 }, align 16 %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 %a82 = alloca { ptr, i64, i64 }, align 16 %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 %a97 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca { ptr, i64, i64 }, align 16 %a103 = alloca { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca i64, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a153 = alloca %S.gen.Plan, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a110 = alloca i64, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 %a170 = alloca { ptr, i64, i64 }, align 16 %a172 = alloca { ptr, i64, i64 }, align 16 %a173 = alloca { ptr, i64, i64 }, align 16 %a174 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a183 = alloca { ptr, i64, i64 }, align 16 %a184 = alloca { ptr, i64, i64 }, align 16 %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 + %a192 = alloca %S.ast.Type, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca i64, align 16 + %a208 = alloca %S.ast.Type, align 16 + %a213 = alloca %S.ast.Type, align 16 + %a221 = alloca %S.ast.Type, align 16 %a222 = alloca %S.ast.Type, align 16 - %a231 = alloca %S.gen.Abi, align 16 - %a232 = alloca %S.gen.Abi, align 16 - %a234 = alloca %S.gen.Abi, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca %S.gen.Plan, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a250 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 %a265 = alloca { ptr, i64, i64 }, align 16 %a266 = alloca { ptr, i64, i64 }, align 16 + %a267 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 %a270 = alloca { ptr, i64, i64 }, align 16 %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca %S.gen.Val, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 + %a275 = alloca { ptr, i64, i64 }, align 16 + %a276 = alloca { ptr, i64, i64 }, align 16 + %a285 = alloca i64, align 16 + %a300 = alloca %S.ast.Type, align 16 + %a301 = alloca %S.ast.Type, align 16 + %a303 = alloca %S.ast.Type, align 16 + %a312 = alloca %S.gen.Abi, align 16 + %a313 = alloca %S.gen.Abi, align 16 + %a315 = alloca %S.gen.Abi, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 %a341 = alloca { ptr, i64, i64 }, align 16 %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 + %a343 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a356 = alloca %S.gen.Val, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 + %a368 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a380 = alloca { ptr, i64, i64 }, align 16 %a381 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca i64, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 + %a384 = alloca { ptr, i64, i64 }, align 16 + %a385 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a398 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 %a407 = alloca { ptr, i64, i64 }, align 16 %a408 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 + %a409 = alloca { ptr, i64, i64 }, align 16 %a412 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a422 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a431 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 %a456 = alloca { ptr, i64, i64 }, align 16 %a457 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 + %a462 = alloca { ptr, i64, i64 }, align 16 + %a473 = alloca i64, align 16 + %a487 = alloca { ptr, i64, i64 }, align 16 + %a488 = alloca { ptr, i64, i64 }, align 16 + %a489 = alloca { ptr, i64, i64 }, align 16 %a491 = alloca { ptr, i64, i64 }, align 16 %a492 = alloca { ptr, i64, i64 }, align 16 %a493 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a500 = alloca { ptr, i64, i64 }, align 16 + %a501 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a515 = alloca { ptr, i64, i64 }, align 16 %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca %S.gen.Val, align 16 - %a537 = alloca %S.ast.Type, align 16 - %a538 = alloca %S.ast.Type, align 16 - %a540 = alloca %S.ast.Type, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 + %a531 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 + %a533 = alloca { ptr, i64, i64 }, align 16 + %a536 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = alloca { ptr, i64, i64 }, align 16 + %a563 = alloca { ptr, i64, i64 }, align 16 %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 + %a572 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a574 = alloca { ptr, i64, i64 }, align 16 %a587 = alloca { ptr, i64, i64 }, align 16 + %a588 = alloca { ptr, i64, i64 }, align 16 + %a589 = alloca { ptr, i64, i64 }, align 16 + %a591 = alloca { ptr, i64, i64 }, align 16 + %a592 = alloca { ptr, i64, i64 }, align 16 + %a593 = alloca { ptr, i64, i64 }, align 16 + %a597 = alloca { ptr, i64, i64 }, align 16 %a598 = alloca { ptr, i64, i64 }, align 16 %a599 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 + %a615 = alloca %S.gen.Val, align 16 + %a618 = alloca %S.ast.Type, align 16 + %a619 = alloca %S.ast.Type, align 16 + %a621 = alloca %S.ast.Type, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a625 = alloca { ptr, i64, i64 }, align 16 + %a639 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a661 = alloca { ptr, i64, i64 }, align 16 + %a662 = alloca { ptr, i64, i64 }, align 16 + %a664 = alloca { ptr, i64, i64 }, align 16 + %a667 = alloca { ptr, i64, i64 }, align 16 %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 + %a679 = alloca { ptr, i64, i64 }, align 16 %a680 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca i64, align 16 - %a699 = alloca i64, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a697 = alloca { ptr, i64, i64 }, align 16 + %a698 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a702 = alloca { ptr, i64, i64 }, align 16 + %a710 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a729 = alloca { ptr, i64, i64 }, align 16 + %a730 = alloca { ptr, i64, i64 }, align 16 + %a731 = alloca { ptr, i64, i64 }, align 16 + %a734 = alloca { ptr, i64, i64 }, align 16 %a735 = alloca { ptr, i64, i64 }, align 16 %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca { ptr, i64, i64 }, align 16 %a749 = alloca { ptr, i64, i64 }, align 16 %a750 = alloca { ptr, i64, i64 }, align 16 %a754 = alloca { ptr, i64, i64 }, align 16 %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 + %a761 = alloca { ptr, i64, i64 }, align 16 %a773 = alloca { ptr, i64, i64 }, align 16 + %a774 = alloca { ptr, i64, i64 }, align 16 %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca i64, align 16 + %a780 = alloca i64, align 16 + %a785 = alloca { ptr, i64, i64 }, align 16 + %a786 = alloca { ptr, i64, i64 }, align 16 %a799 = alloca { ptr, i64, i64 }, align 16 %a800 = alloca { ptr, i64, i64 }, align 16 %a801 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 + %a816 = alloca { ptr, i64, i64 }, align 16 + %a817 = alloca { ptr, i64, i64 }, align 16 %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 %a820 = alloca { ptr, i64, i64 }, align 16 + %a821 = alloca { ptr, i64, i64 }, align 16 %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 + %a825 = alloca { ptr, i64, i64 }, align 16 + %a826 = alloca { ptr, i64, i64 }, align 16 + %a827 = alloca { ptr, i64, i64 }, align 16 %a829 = alloca { ptr, i64, i64 }, align 16 %a830 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 + %a831 = alloca { ptr, i64, i64 }, align 16 + %a835 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca { ptr, i64, i64 }, align 16 %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 + %a839 = alloca { ptr, i64, i64 }, align 16 %a840 = alloca { ptr, i64, i64 }, align 16 %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 %a844 = alloca { ptr, i64, i64 }, align 16 %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 + %a847 = alloca { ptr, i64, i64 }, align 16 %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 + %a849 = alloca { ptr, i64, i64 }, align 16 %a852 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca %S.ast.Type, align 16 - %a859 = alloca %S.ast.Type, align 16 - %a874 = alloca %S.ast.Type, align 16 - %a875 = alloca %S.ast.Type, align 16 + %a853 = alloca { ptr, i64, i64 }, align 16 + %a854 = alloca { ptr, i64, i64 }, align 16 + %a856 = alloca { ptr, i64, i64 }, align 16 + %a857 = alloca { ptr, i64, i64 }, align 16 + %a858 = alloca { ptr, i64, i64 }, align 16 + %a864 = alloca { ptr, i64, i64 }, align 16 + %a868 = alloca { ptr, i64, i64 }, align 16 + %a869 = alloca { ptr, i64, i64 }, align 16 + %a871 = alloca { ptr, i64, i64 }, align 16 + %a872 = alloca { ptr, i64, i64 }, align 16 + %a873 = alloca { ptr, i64, i64 }, align 16 + %a876 = alloca { ptr, i64, i64 }, align 16 + %a877 = alloca { ptr, i64, i64 }, align 16 + %a878 = alloca { ptr, i64, i64 }, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 %a881 = alloca { ptr, i64, i64 }, align 16 + %a882 = alloca { ptr, i64, i64 }, align 16 %a885 = alloca { ptr, i64, i64 }, align 16 %a886 = alloca { ptr, i64, i64 }, align 16 + %a887 = alloca { ptr, i64, i64 }, align 16 + %a889 = alloca { ptr, i64, i64 }, align 16 + %a890 = alloca { ptr, i64, i64 }, align 16 %a891 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca %S.ast.Type, align 16 - %a907 = alloca %S.ast.Type, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca { ptr, i64, i64 }, align 16 + %a896 = alloca { ptr, i64, i64 }, align 16 + %a899 = alloca { ptr, i64, i64 }, align 16 + %a900 = alloca { ptr, i64, i64 }, align 16 + %a901 = alloca { ptr, i64, i64 }, align 16 + %a903 = alloca { ptr, i64, i64 }, align 16 + %a904 = alloca { ptr, i64, i64 }, align 16 + %a905 = alloca { ptr, i64, i64 }, align 16 + %a909 = alloca { ptr, i64, i64 }, align 16 + %a910 = alloca { ptr, i64, i64 }, align 16 + %a911 = alloca { ptr, i64, i64 }, align 16 %a913 = alloca { ptr, i64, i64 }, align 16 + %a914 = alloca { ptr, i64, i64 }, align 16 + %a915 = alloca { ptr, i64, i64 }, align 16 %a918 = alloca { ptr, i64, i64 }, align 16 + %a919 = alloca { ptr, i64, i64 }, align 16 + %a921 = alloca { ptr, i64, i64 }, align 16 + %a922 = alloca { ptr, i64, i64 }, align 16 %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 %a925 = alloca { ptr, i64, i64 }, align 16 + %a926 = alloca { ptr, i64, i64 }, align 16 %a927 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca { ptr, i64, i64 }, align 16 %a929 = alloca { ptr, i64, i64 }, align 16 %a932 = alloca { ptr, i64, i64 }, align 16 %a933 = alloca { ptr, i64, i64 }, align 16 - %a934 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca %S.ast.Type, align 16 - %a946 = alloca %S.ast.Type, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 + %a939 = alloca %S.ast.Type, align 16 + %a940 = alloca %S.ast.Type, align 16 %a955 = alloca %S.ast.Type, align 16 %a956 = alloca %S.ast.Type, align 16 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a966 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a972 = alloca { ptr, i64, i64 }, align 16 + %a987 = alloca %S.ast.Type, align 16 + %a988 = alloca %S.ast.Type, align 16 + %a993 = alloca { ptr, i64, i64 }, align 16 + %a994 = alloca { ptr, i64, i64 }, align 16 + %a999 = alloca { ptr, i64, i64 }, align 16 + %a1004 = alloca { ptr, i64, i64 }, align 16 + %a1005 = alloca { ptr, i64, i64 }, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 + %a1008 = alloca { ptr, i64, i64 }, align 16 + %a1009 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 + %a1013 = alloca { ptr, i64, i64 }, align 16 + %a1014 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 + %a1017 = alloca { ptr, i64, i64 }, align 16 + %a1018 = alloca { ptr, i64, i64 }, align 16 + %a1019 = alloca { ptr, i64, i64 }, align 16 + %a1026 = alloca %S.ast.Type, align 16 + %a1027 = alloca %S.ast.Type, align 16 + %a1031 = alloca { ptr, i64, i64 }, align 16 + %a1032 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca %S.ast.Type, align 16 + %a1037 = alloca %S.ast.Type, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 store %S.cimport.CFunc %p2, ptr %a3 - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6874, label %endif6876 -then6874: - %t8 = load ptr, ptr %a1 - %t9 = load %S.ast.Node, ptr %a2 - %t10 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - store { ptr, i64, i64 } { ptr @.str.4415, i64 16, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4416, i64 35, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t19, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - call void @finch.gen.fail(ptr %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t25) - br label %endif6876 -endif6876: - %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i32 0, i32 1 - %t28 = load i64, ptr %t27 - store i64 %t28, ptr %a29 - %t30 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t31 = load i1, ptr %t30 - br i1 %t31, label %then6877, label %else6878 -then6877: - %t32 = load i64, ptr %a29 - %t33 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp slt i64 %t32, %t35 - br i1 %t36, label %then6880, label %endif6882 -then6880: - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Node, ptr %a2 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic7160, label %ok7161 +panic7160: + call void @finch_panic(ptr @.str.4641, i64 4140, ptr @.str.4642) + unreachable +ok7161: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + br i1 %t7, label %then7162, label %endif7164 +then7162: + store { ptr, i64, i64 } zeroinitializer, ptr %a8 + %t9 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a10 + br label %each.cond7165 +each.cond7165: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body7166, label %each.end7168 +each.body7166: + %t15 = load ptr, ptr %t9 + %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 %t13 + %t17 = load %S.ast.Type, ptr %t16 + store %S.ast.Type %t17, ptr %a18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t20 = load %S.ast.Type, ptr %a18 + %t21 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t20) + %t22 = load i64, ptr %t19 + %t23 = add i64 %t22, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t23, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t24 = load ptr, ptr %a8 + %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i64 %t22 + store { ptr, i64, i64 } %t21, ptr %t25 + store i64 %t23, ptr %t19 + br label %each.step7167 +each.step7167: + %t26 = load i64, ptr %a10 + %t27 = add i64 %t26, 1 + store i64 %t27, ptr %a10 + br label %each.cond7165 +each.end7168: + %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t29 = load i1, ptr %t28 + br i1 %t29, label %then7169, label %endif7171 +then7169: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %a8 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.4643, i64 3, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %endif7171 +endif7171: + %t35 = load ptr, ptr %a1 + %t36 = load %S.ast.Node, ptr %a2 + %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t38 = load i64, ptr %t37 %t39 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } { ptr @.str.4417, i64 1, i64 0 }, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.4418, i64 17, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - %t49 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - call void @finch_str_from_int(ptr %a52, i64 %t51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t48, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4419, i64 22, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a63, i64 %t62) - %t64 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a66 + %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 + %t41 = load i64, ptr %t40 + %t42 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.4644, i64 17, i64 0 }, ptr %a45 + store { ptr, i64, i64 } %t43, ptr %a46 + call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) + %t47 = load { ptr, i64, i64 }, ptr %a44 + store { ptr, i64, i64 } %t47, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.4645, i64 7, i64 0 }, ptr %a50 + call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) + %t51 = load { ptr, i64, i64 }, ptr %a48 + %t52 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t53 = load %S.ast.Type, ptr %t52 + %t54 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t53) + store { ptr, i64, i64 } %t51, ptr %a56 + store { ptr, i64, i64 } %t54, ptr %a57 + call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) + %t58 = load { ptr, i64, i64 }, ptr %a55 + store { ptr, i64, i64 } %t58, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a61 + call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) + %t62 = load { ptr, i64, i64 }, ptr %a59 + %t63 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t64 = load { ptr, i64, i64 }, ptr %t63 + store { ptr, i64, i64 } %t62, ptr %a66 store { ptr, i64, i64 } %t64, ptr %a67 call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) %t68 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } %t68) - br label %endif6882 -endif6882: - br label %endif6879 -else6878: - %t69 = load i64, ptr %a29 - %t70 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp ne i64 %t69, %t72 - br i1 %t73, label %then6883, label %endif6885 -then6883: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a2 - %t76 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } { ptr @.str.4420, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4421, i64 8, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - %t86 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - call void @finch_str_from_int(ptr %a89, i64 %t88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t85, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4422, i64 22, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a95 - %t99 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a100, i64 %t99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t105) - br label %endif6885 -endif6885: - br label %endif6879 -endif6879: - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t108 = load %S.ast.Type, ptr %t107 - %t109 = load %S.ast.Node, ptr %a2 - %t110 = call %S.ast.Type @finch.gen.resolve(ptr %t106, %S.ast.Type %t108, %S.ast.Node %t109) - store %S.ast.Type %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Node, ptr %a2 - %t114 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - %t116 = load %S.ast.Type, ptr %a111 - call void @finch.gen.checkByValue(ptr %t112, %S.ast.Node %t113, { ptr, i64, i64 } %t115, %S.ast.Type %t116, { ptr, i64, i64 } { ptr @.str.4423, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a117 - %t118 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a119 - br label %each.cond6886 -each.cond6886: - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = load i64, ptr %a119 - %t123 = icmp slt i64 %t122, %t121 - br i1 %t123, label %each.body6887, label %each.end6889 -each.body6887: - %t124 = load ptr, ptr %t118 - %t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i64 %t122 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = load %S.ast.Type, ptr %a127 - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call %S.ast.Type @finch.gen.resolve(ptr %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = load %S.ast.Type, ptr %a132 - call void @finch.gen.checkByValue(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t136, %S.ast.Type %t137, { ptr, i64, i64 } { ptr @.str.4424, i64 5, i64 0 }) - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a117, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %a132 - store %S.ast.Type %t139, ptr %a140 - call void @finch.copy.S_ast_Type(ptr %a141, ptr %a140) - %t142 = load %S.ast.Type, ptr %a141 - %t143 = load i64, ptr %t138 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a117, i64 %t144, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a117 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 %t143 - store %S.ast.Type %t142, ptr %t146 - store i64 %t144, ptr %t138 - br label %each.step6888 -each.step6888: - %t147 = load i64, ptr %a119 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a119 - br label %each.cond6886 -each.end6889: - %t149 = load ptr, ptr %a1 - %t150 = load %S.ast.Type, ptr %a111 - %t151 = load { ptr, i64, i64 }, ptr %a117 - %t152 = call %S.gen.Plan @finch.gen.makePlan(ptr %t149, %S.ast.Type %t150, { ptr, i64, i64 } %t151) - store %S.gen.Plan %t152, ptr %a153 - store { ptr, i64, i64 } zeroinitializer, ptr %a154 - store { ptr, i64, i64 } zeroinitializer, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.4425, i64 0, i64 0 }, ptr %a156 - %t157 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 3 - %t158 = load i1, ptr %t157 - br i1 %t158, label %then6890, label %endif6892 -then6890: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.ast.Type, ptr %a111 - %t162 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t161) - %t163 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t163, ptr %a156 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Type, ptr %a111 - %t167 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t165, %S.ast.Type %t166) - store { ptr, i64, i64 } { ptr @.str.4426, i64 9, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4427, i64 10, i64 0 }, ptr %a174 + store { ptr, i64, i64 } %t68, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.4647, i64 1, i64 0 }, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4648, i64 2, i64 0 }, ptr %a74 + call void @finch_str_join(ptr %a75, ptr %a8, ptr %a74) + %t76 = load { ptr, i64, i64 }, ptr %a75 + store { ptr, i64, i64 } %t72, ptr %a78 + store { ptr, i64, i64 } %t76, ptr %a79 + call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) + %t80 = load { ptr, i64, i64 }, ptr %a77 + store { ptr, i64, i64 } %t80, ptr %a82 + store { ptr, i64, i64 } { ptr @.str.4649, i64 5, i64 0 }, ptr %a83 + call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) + %t84 = load { ptr, i64, i64 }, ptr %a81 + call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t84, { ptr, i64, i64 } { ptr @.str.4650, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7164 +endif7164: + %t85 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 + %t87 = load i64, ptr %t86 + %t88 = icmp sgt i64 %t87, 0 + br i1 %t88, label %then7172, label %endif7174 +then7172: + %t89 = load ptr, ptr %a1 + %t90 = load %S.ast.Node, ptr %a2 + %t91 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t92 = load { ptr, i64, i64 }, ptr %t91 + store { ptr, i64, i64 } { ptr @.str.4651, i64 16, i64 0 }, ptr %a94 + store { ptr, i64, i64 } %t92, ptr %a95 + call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) + %t96 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t96, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.4652, i64 35, i64 0 }, ptr %a99 + call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) + %t100 = load { ptr, i64, i64 }, ptr %a97 + %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 + %t102 = load { ptr, i64, i64 }, ptr %t101 + store { ptr, i64, i64 } %t100, ptr %a104 + store { ptr, i64, i64 } %t102, ptr %a105 + call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) + %t106 = load { ptr, i64, i64 }, ptr %a103 + call void @finch.gen.fail(ptr %t89, %S.ast.Node %t90, { ptr, i64, i64 } %t106) + br label %endif7174 +endif7174: + %t107 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t107, i32 0, i32 1 + %t109 = load i64, ptr %t108 + store i64 %t109, ptr %a110 + %t111 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t112 = load i1, ptr %t111 + br i1 %t112, label %then7175, label %else7176 +then7175: + %t113 = load i64, ptr %a110 + %t114 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = icmp slt i64 %t113, %t116 + br i1 %t117, label %then7178, label %endif7180 +then7178: + %t118 = load ptr, ptr %a1 + %t119 = load %S.ast.Node, ptr %a2 + %t120 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.4653, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.4654, i64 17, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a126 + %t130 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 + %t132 = load i64, ptr %t131 + call void @finch_str_from_int(ptr %a133, i64 %t132) + %t134 = load { ptr, i64, i64 }, ptr %a133 + store { ptr, i64, i64 } %t129, ptr %a136 + store { ptr, i64, i64 } %t134, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a135 + store { ptr, i64, i64 } %t138, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.4655, i64 22, i64 0 }, ptr %a141 + call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = load i64, ptr %a110 + call void @finch_str_from_int(ptr %a144, i64 %t143) + %t145 = load { ptr, i64, i64 }, ptr %a144 + store { ptr, i64, i64 } %t142, ptr %a147 + store { ptr, i64, i64 } %t145, ptr %a148 + call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) + %t149 = load { ptr, i64, i64 }, ptr %a146 + call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t149) + br label %endif7180 +endif7180: + br label %endif7177 +else7176: + %t150 = load i64, ptr %a110 + %t151 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 + %t153 = load i64, ptr %t152 + %t154 = icmp ne i64 %t150, %t153 + br i1 %t154, label %then7181, label %endif7183 +then7181: + %t155 = load ptr, ptr %a1 + %t156 = load %S.ast.Node, ptr %a2 + %t157 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t158 = load { ptr, i64, i64 }, ptr %t157 + store { ptr, i64, i64 } { ptr @.str.4656, i64 1, i64 0 }, ptr %a160 + store { ptr, i64, i64 } %t158, ptr %a161 + call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) + %t162 = load { ptr, i64, i64 }, ptr %a159 + store { ptr, i64, i64 } %t162, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.4657, i64 8, i64 0 }, ptr %a165 + call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) + %t166 = load { ptr, i64, i64 }, ptr %a163 + %t167 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 + %t169 = load i64, ptr %t168 + call void @finch_str_from_int(ptr %a170, i64 %t169) + %t171 = load { ptr, i64, i64 }, ptr %a170 + store { ptr, i64, i64 } %t166, ptr %a173 + store { ptr, i64, i64 } %t171, ptr %a174 call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) %t175 = load { ptr, i64, i64 }, ptr %a172 - %t176 = load i64, ptr %t164 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a154, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a154 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t164 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t181 = load ptr, ptr %a1 - %t182 = load %S.ast.Type, ptr %a111 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t181, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.4428, i64 9, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.4429, i64 11, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t191, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load i64, ptr %t180 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a155 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t180 - br label %endif6892 -endif6892: - %t201 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond6893 -for.cond6893: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body6894, label %for.end6896 -for.body6894: - %t207 = load i64, ptr %a204 - %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i32 0, i32 1 - %t210 = load i64, ptr %t209 - %t211 = icmp slt i64 %t207, %t210 - br i1 %t211, label %then6897, label %endif6899 -then6897: - %t212 = load i64, ptr %a204 - %t213 = load { ptr, i64, i64 }, ptr %a117 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4430, i64 4042, i64 %t212, i64 %t214) + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.4658, i64 22, i64 0 }, ptr %a178 + call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a176 + %t180 = load i64, ptr %a110 + call void @finch_str_from_int(ptr %a181, i64 %t180) + %t182 = load { ptr, i64, i64 }, ptr %a181 + store { ptr, i64, i64 } %t179, ptr %a184 + store { ptr, i64, i64 } %t182, ptr %a185 + call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) + %t186 = load { ptr, i64, i64 }, ptr %a183 + call void @finch.gen.fail(ptr %t155, %S.ast.Node %t156, { ptr, i64, i64 } %t186) + br label %endif7183 +endif7183: + br label %endif7177 +endif7177: + %t187 = load ptr, ptr %a1 + %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 + %t189 = load %S.ast.Type, ptr %t188 + %t190 = load %S.ast.Node, ptr %a2 + %t191 = call %S.ast.Type @finch.gen.resolve(ptr %t187, %S.ast.Type %t189, %S.ast.Node %t190) + store %S.ast.Type %t191, ptr %a192 + %t193 = load ptr, ptr %a1 + %t194 = load %S.ast.Node, ptr %a2 + %t195 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t196 = load { ptr, i64, i64 }, ptr %t195 + %t197 = load %S.ast.Type, ptr %a192 + call void @finch.gen.checkByValue(ptr %t193, %S.ast.Node %t194, { ptr, i64, i64 } %t196, %S.ast.Type %t197, { ptr, i64, i64 } { ptr @.str.4659, i64 7, i64 0 }) + store { ptr, i64, i64 } zeroinitializer, ptr %a198 + %t199 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + store i64 0, ptr %a200 + br label %each.cond7184 +each.cond7184: + %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i32 0, i32 1 + %t202 = load i64, ptr %t201 + %t203 = load i64, ptr %a200 + %t204 = icmp slt i64 %t203, %t202 + br i1 %t204, label %each.body7185, label %each.end7187 +each.body7185: + %t205 = load ptr, ptr %t199 + %t206 = getelementptr inbounds %S.ast.Type, ptr %t205, i64 %t203 + %t207 = load %S.ast.Type, ptr %t206 + store %S.ast.Type %t207, ptr %a208 + %t209 = load ptr, ptr %a1 + %t210 = load %S.ast.Type, ptr %a208 + %t211 = load %S.ast.Node, ptr %a2 + %t212 = call %S.ast.Type @finch.gen.resolve(ptr %t209, %S.ast.Type %t210, %S.ast.Node %t211) + store %S.ast.Type %t212, ptr %a213 + %t214 = load ptr, ptr %a1 + %t215 = load %S.ast.Node, ptr %a2 + %t216 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t217 = load { ptr, i64, i64 }, ptr %t216 + %t218 = load %S.ast.Type, ptr %a213 + call void @finch.gen.checkByValue(ptr %t214, %S.ast.Node %t215, { ptr, i64, i64 } %t217, %S.ast.Type %t218, { ptr, i64, i64 } { ptr @.str.4660, i64 5, i64 0 }) + %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 + %t220 = load %S.ast.Type, ptr %a213 + store %S.ast.Type %t220, ptr %a221 + call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) + %t223 = load %S.ast.Type, ptr %a222 + %t224 = load i64, ptr %t219 + %t225 = add i64 %t224, 1 + call void @finch_arr_reserve(ptr %a198, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t226 = load ptr, ptr %a198 + %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 + store %S.ast.Type %t223, ptr %t227 + store i64 %t225, ptr %t219 + br label %each.step7186 +each.step7186: + %t228 = load i64, ptr %a200 + %t229 = add i64 %t228, 1 + store i64 %t229, ptr %a200 + br label %each.cond7184 +each.end7187: + %t230 = load ptr, ptr %a1 + %t231 = load %S.ast.Type, ptr %a192 + %t232 = load { ptr, i64, i64 }, ptr %a198 + %t233 = call %S.gen.Plan @finch.gen.makePlan(ptr %t230, %S.ast.Type %t231, { ptr, i64, i64 } %t232) + store %S.gen.Plan %t233, ptr %a234 + store { ptr, i64, i64 } zeroinitializer, ptr %a235 + store { ptr, i64, i64 } zeroinitializer, ptr %a236 + store { ptr, i64, i64 } { ptr @.str.4661, i64 0, i64 0 }, ptr %a237 + %t238 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 3 + %t239 = load i1, ptr %t238 + br i1 %t239, label %then7188, label %endif7190 +then7188: + %t240 = load ptr, ptr %a1 + %t241 = load ptr, ptr %a1 + %t242 = load %S.ast.Type, ptr %a192 + %t243 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t241, %S.ast.Type %t242) + %t244 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t240, { ptr, i64, i64 } %t243) + store { ptr, i64, i64 } %t244, ptr %a237 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t246 = load ptr, ptr %a1 + %t247 = load %S.ast.Type, ptr %a192 + %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t246, %S.ast.Type %t247) + store { ptr, i64, i64 } { ptr @.str.4662, i64 9, i64 0 }, ptr %a250 + store { ptr, i64, i64 } %t248, ptr %a251 + call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) + %t252 = load { ptr, i64, i64 }, ptr %a249 + store { ptr, i64, i64 } %t252, ptr %a254 + store { ptr, i64, i64 } { ptr @.str.4663, i64 10, i64 0 }, ptr %a255 + call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a253 + %t257 = load i64, ptr %t245 + %t258 = add i64 %t257, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t259 = load ptr, ptr %a235 + %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 + store { ptr, i64, i64 } %t256, ptr %t260 + store i64 %t258, ptr %t245 + %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t262 = load ptr, ptr %a1 + %t263 = load %S.ast.Type, ptr %a192 + %t264 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t262, %S.ast.Type %t263) + store { ptr, i64, i64 } { ptr @.str.4664, i64 9, i64 0 }, ptr %a266 + store { ptr, i64, i64 } %t264, ptr %a267 + call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) + %t268 = load { ptr, i64, i64 }, ptr %a265 + store { ptr, i64, i64 } %t268, ptr %a270 + store { ptr, i64, i64 } { ptr @.str.4665, i64 11, i64 0 }, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + %t273 = load { ptr, i64, i64 }, ptr %a237 + store { ptr, i64, i64 } %t272, ptr %a275 + store { ptr, i64, i64 } %t273, ptr %a276 + call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a274 + %t278 = load i64, ptr %t261 + %t279 = add i64 %t278, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t279, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t280 = load ptr, ptr %a236 + %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t280, i64 %t278 + store { ptr, i64, i64 } %t277, ptr %t281 + store i64 %t279, ptr %t261 + br label %endif7190 +endif7190: + %t282 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 + %t284 = load i64, ptr %t283 + store i64 0, ptr %a285 + br label %for.cond7191 +for.cond7191: + %t286 = load i64, ptr %a285 + %t287 = icmp slt i64 %t286, %t284 + br i1 %t287, label %for.body7192, label %for.end7194 +for.body7192: + %t288 = load i64, ptr %a285 + %t289 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 + %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 + %t291 = load i64, ptr %t290 + %t292 = icmp slt i64 %t288, %t291 + br i1 %t292, label %then7195, label %endif7197 +then7195: + %t293 = load i64, ptr %a285 + %t294 = load { ptr, i64, i64 }, ptr %a198 + %t295 = extractvalue { ptr, i64, i64 } %t294, 1 + %t296 = icmp uge i64 %t293, %t295 + br i1 %t296, label %range7198, label %inrange7199 +range7198: + call void @finch_panic_index(ptr @.str.4666, i64 4180, i64 %t293, i64 %t295) unreachable -inrange6901: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i64 %t212 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - store %S.ast.Type %t221, ptr %a222 - %t223 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 1 - %t224 = load i64, ptr %a204 - %t225 = load { ptr, i64, i64 }, ptr %t223 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range6902, label %inrange6903 -range6902: - call void @finch_panic_index(ptr @.str.4431, i64 4043, i64 %t224, i64 %t226) +inrange7199: + %t297 = extractvalue { ptr, i64, i64 } %t294, 0 + %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 %t293 + %t299 = load %S.ast.Type, ptr %t298 + store %S.ast.Type %t299, ptr %a300 + call void @finch.copy.S_ast_Type(ptr %a301, ptr %a300) + %t302 = load %S.ast.Type, ptr %a301 + store %S.ast.Type %t302, ptr %a303 + %t304 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 1 + %t305 = load i64, ptr %a285 + %t306 = load { ptr, i64, i64 }, ptr %t304 + %t307 = extractvalue { ptr, i64, i64 } %t306, 1 + %t308 = icmp uge i64 %t305, %t307 + br i1 %t308, label %range7200, label %inrange7201 +range7200: + call void @finch_panic_index(ptr @.str.4667, i64 4181, i64 %t305, i64 %t307) unreachable -inrange6903: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.gen.Abi, ptr %t228, i64 %t224 - %t230 = load %S.gen.Abi, ptr %t229 - store %S.gen.Abi %t230, ptr %a231 - call void @finch.copy.S_gen_Abi(ptr %a232, ptr %a231) - %t233 = load %S.gen.Abi, ptr %a232 - store %S.gen.Abi %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t238 = load i64, ptr %a204 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range6904, label %inrange6905 -range6904: - call void @finch_panic_index(ptr @.str.4432, i64 4044, i64 %t238, i64 %t240) +inrange7201: + %t309 = extractvalue { ptr, i64, i64 } %t306, 0 + %t310 = getelementptr inbounds %S.gen.Abi, ptr %t309, i64 %t305 + %t311 = load %S.gen.Abi, ptr %t310 + store %S.gen.Abi %t311, ptr %a312 + call void @finch.copy.S_gen_Abi(ptr %a313, ptr %a312) + %t314 = load %S.gen.Abi, ptr %a313 + store %S.gen.Abi %t314, ptr %a315 + %t316 = load ptr, ptr %a1 + %t317 = load ptr, ptr %a1 + %t318 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t319 = load i64, ptr %a285 + %t320 = load { ptr, i64, i64 }, ptr %t318 + %t321 = extractvalue { ptr, i64, i64 } %t320, 1 + %t322 = icmp uge i64 %t319, %t321 + br i1 %t322, label %range7202, label %inrange7203 +range7202: + call void @finch_panic_index(ptr @.str.4668, i64 4182, i64 %t319, i64 %t321) unreachable -inrange6905: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = load %S.ast.Node, ptr %t243 - %t245 = load %S.ast.Type, ptr %a222 - %t246 = call %S.gen.Val @finch.gen.exprWant(ptr %t236, %S.ast.Node %t244, %S.ast.Type %t245) - %t247 = load %S.ast.Type, ptr %a222 - %t248 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t249 = load i64, ptr %a204 - %t250 = load { ptr, i64, i64 }, ptr %t248 - %t251 = extractvalue { ptr, i64, i64 } %t250, 1 - %t252 = icmp uge i64 %t249, %t251 - br i1 %t252, label %range6906, label %inrange6907 -range6906: - call void @finch_panic_index(ptr @.str.4433, i64 4044, i64 %t249, i64 %t251) +inrange7203: + %t323 = extractvalue { ptr, i64, i64 } %t320, 0 + %t324 = getelementptr inbounds %S.ast.Node, ptr %t323, i64 %t319 + %t325 = load %S.ast.Node, ptr %t324 + %t326 = load %S.ast.Type, ptr %a303 + %t327 = call %S.gen.Val @finch.gen.exprWant(ptr %t317, %S.ast.Node %t325, %S.ast.Type %t326) + %t328 = load %S.ast.Type, ptr %a303 + %t329 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t330 = load i64, ptr %a285 + %t331 = load { ptr, i64, i64 }, ptr %t329 + %t332 = extractvalue { ptr, i64, i64 } %t331, 1 + %t333 = icmp uge i64 %t330, %t332 + br i1 %t333, label %range7204, label %inrange7205 +range7204: + call void @finch_panic_index(ptr @.str.4669, i64 4182, i64 %t330, i64 %t332) unreachable -inrange6907: - %t253 = extractvalue { ptr, i64, i64 } %t250, 0 - %t254 = getelementptr inbounds %S.ast.Node, ptr %t253, i64 %t249 - %t255 = load %S.ast.Node, ptr %t254 - %t256 = load i64, ptr %a204 - %t257 = add i64 %t256, 1 - call void @finch_str_from_int(ptr %a258, i64 %t257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.4434, i64 9, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4435, i64 4, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a264 - %t268 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } %t267, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - %t274 = call %S.gen.Val @finch.gen.coerce(ptr %t235, %S.gen.Val %t246, %S.ast.Type %t247, %S.ast.Node %t255, { ptr, i64, i64 } %t273) - store %S.gen.Val %t274, ptr %a275 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0 - %t277 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4436, i64 6, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br i1 %t281, label %then6908, label %else6909 -then6908: - %t282 = load ptr, ptr %a1 - %t283 = load ptr, ptr %a1 - %t284 = load %S.ast.Type, ptr %a222 - %t285 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t284) - %t286 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t286, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a222 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - %t292 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0 - %t293 = load { ptr, i64, i64 }, ptr %t292 - %t294 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.store(ptr %t288, { ptr, i64, i64 } %t291, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = load %S.ast.Type, ptr %a222 - %t297 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t295, %S.ast.Type %t296) - store { ptr, i64, i64 } { ptr @.str.4437, i64 10, i64 0 }, ptr %a299 - store { ptr, i64, i64 } %t297, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4438, i64 8, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a302 - %t306 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 3 - %t307 = load i64, ptr %t306 - call void @finch_str_from_int(ptr %a308, i64 %t307) - %t309 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t305, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t313, ptr %a314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t316 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_copy(ptr %a318, ptr %a317) - %t319 = load { ptr, i64, i64 }, ptr %a318 - %t320 = load i64, ptr %t315 - %t321 = add i64 %t320, 1 - call void @finch_arr_reserve(ptr %a154, i64 %t321, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t322 = load ptr, ptr %a154 - %t323 = getelementptr inbounds { ptr, i64, i64 }, ptr %t322, i64 %t320 - store { ptr, i64, i64 } %t319, ptr %t323 - store i64 %t321, ptr %t315 - %t324 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t325 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t325, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.4439, i64 1, i64 0 }, ptr %a328 - call void @finch_str_concat(ptr %a326, ptr %a327, ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a326 - %t330 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t329, ptr %a332 - store { ptr, i64, i64 } %t330, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a331 - %t335 = load i64, ptr %t324 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %a155 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t324 - br label %endif6910 -else6909: - %t339 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0 - %t340 = load { ptr, i64, i64 }, ptr %t339 - store { ptr, i64, i64 } %t340, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4440, i64 8, i64 0 }, ptr %a342 - %t343 = call i32 @finch_str_eq(ptr %a341, ptr %a342) - %t344 = icmp ne i32 %t343, 0 - br i1 %t344, label %then6911, label %else6912 -then6911: - %t345 = load ptr, ptr %a1 - %t346 = load ptr, ptr %a1 - %t347 = load %S.ast.Type, ptr %a222 - %t348 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t346, %S.ast.Type %t347) - %t349 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t345, { ptr, i64, i64 } %t348) - store { ptr, i64, i64 } %t349, ptr %a350 - %t351 = load ptr, ptr %a1 - %t352 = load ptr, ptr %a1 - %t353 = load %S.ast.Type, ptr %a222 - %t354 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t352, %S.ast.Type %t353) - %t355 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = load { ptr, i64, i64 }, ptr %a350 - call void @finch.gen.store(ptr %t351, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356, { ptr, i64, i64 } %t357) - %t358 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t359 = load i64, ptr %t358 - %t360 = add i64 %t359, 1 - call void @finch_arr_reserve(ptr %a154, i64 %t360, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t361 = load ptr, ptr %a154 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i64 %t359 - store { ptr, i64, i64 } { ptr @.str.4441, i64 3, i64 0 }, ptr %t362 - store i64 %t360, ptr %t358 - %t363 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4442, i64 4, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a365 - %t369 = load i64, ptr %t363 - %t370 = add i64 %t369, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t370, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t371 = load ptr, ptr %a155 - %t372 = getelementptr inbounds { ptr, i64, i64 }, ptr %t371, i64 %t369 - store { ptr, i64, i64 } %t368, ptr %t372 - store i64 %t370, ptr %t363 - br label %endif6913 -else6912: - %t373 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 0 +inrange7205: + %t334 = extractvalue { ptr, i64, i64 } %t331, 0 + %t335 = getelementptr inbounds %S.ast.Node, ptr %t334, i64 %t330 + %t336 = load %S.ast.Node, ptr %t335 + %t337 = load i64, ptr %a285 + %t338 = add i64 %t337, 1 + call void @finch_str_from_int(ptr %a339, i64 %t338) + %t340 = load { ptr, i64, i64 }, ptr %a339 + store { ptr, i64, i64 } { ptr @.str.4670, i64 9, i64 0 }, ptr %a342 + store { ptr, i64, i64 } %t340, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + %t344 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t344, ptr %a346 + store { ptr, i64, i64 } { ptr @.str.4671, i64 4, i64 0 }, ptr %a347 + call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347) + %t348 = load { ptr, i64, i64 }, ptr %a345 + %t349 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t350 = load { ptr, i64, i64 }, ptr %t349 + store { ptr, i64, i64 } %t348, ptr %a352 + store { ptr, i64, i64 } %t350, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a351 + %t355 = call %S.gen.Val @finch.gen.coerce(ptr %t316, %S.gen.Val %t327, %S.ast.Type %t328, %S.ast.Node %t336, { ptr, i64, i64 } %t354) + store %S.gen.Val %t355, ptr %a356 + %t357 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 0 + %t358 = load { ptr, i64, i64 }, ptr %t357 + store { ptr, i64, i64 } %t358, ptr %a359 + store { ptr, i64, i64 } { ptr @.str.4672, i64 6, i64 0 }, ptr %a360 + %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) + %t362 = icmp ne i32 %t361, 0 + br i1 %t362, label %then7206, label %else7207 +then7206: + %t363 = load ptr, ptr %a1 + %t364 = load ptr, ptr %a1 + %t365 = load %S.ast.Type, ptr %a303 + %t366 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t364, %S.ast.Type %t365) + %t367 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t363, { ptr, i64, i64 } %t366) + store { ptr, i64, i64 } %t367, ptr %a368 + %t369 = load ptr, ptr %a1 + %t370 = load ptr, ptr %a1 + %t371 = load %S.ast.Type, ptr %a303 + %t372 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t370, %S.ast.Type %t371) + %t373 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4443, i64 6, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6914, label %else6915 -then6914: - %t379 = load ptr, ptr %a1 - %t380 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t379, { ptr, i64, i64 } { ptr @.str.4444, i64 9, i64 0 }) - store { ptr, i64, i64 } %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a222 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - %t386 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0 - %t387 = load { ptr, i64, i64 }, ptr %t386 - %t388 = load { ptr, i64, i64 }, ptr %a381 - call void @finch.gen.store(ptr %t382, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387, { ptr, i64, i64 } %t388) - %t389 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i32 0, i32 1 - %t391 = load i64, ptr %t390 - store i64 0, ptr %a392 - br label %for.cond6917 -for.cond6917: - %t393 = load i64, ptr %a392 - %t394 = icmp slt i64 %t393, %t391 - br i1 %t394, label %for.body6918, label %for.end6920 -for.body6918: - %t395 = load ptr, ptr %a1 - %t396 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1 - %t397 = load i64, ptr %a392 - %t398 = load { ptr, i64, i64 }, ptr %t396 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range6921, label %inrange6922 -range6921: - call void @finch_panic_index(ptr @.str.4445, i64 4060, i64 %t397, i64 %t399) + %t375 = load { ptr, i64, i64 }, ptr %a368 + call void @finch.gen.store(ptr %t369, { ptr, i64, i64 } %t372, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375) + %t376 = load ptr, ptr %a1 + %t377 = load %S.ast.Type, ptr %a303 + %t378 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t376, %S.ast.Type %t377) + store { ptr, i64, i64 } { ptr @.str.4673, i64 10, i64 0 }, ptr %a380 + store { ptr, i64, i64 } %t378, ptr %a381 + call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) + %t382 = load { ptr, i64, i64 }, ptr %a379 + store { ptr, i64, i64 } %t382, ptr %a384 + store { ptr, i64, i64 } { ptr @.str.4674, i64 8, i64 0 }, ptr %a385 + call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) + %t386 = load { ptr, i64, i64 }, ptr %a383 + %t387 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 3 + %t388 = load i64, ptr %t387 + call void @finch_str_from_int(ptr %a389, i64 %t388) + %t390 = load { ptr, i64, i64 }, ptr %a389 + store { ptr, i64, i64 } %t386, ptr %a392 + store { ptr, i64, i64 } %t390, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a391 + store { ptr, i64, i64 } %t394, ptr %a395 + %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t397 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t397, ptr %a398 + call void @finch_str_copy(ptr %a399, ptr %a398) + %t400 = load { ptr, i64, i64 }, ptr %a399 + %t401 = load i64, ptr %t396 + %t402 = add i64 %t401, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t403 = load ptr, ptr %a235 + %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 + store { ptr, i64, i64 } %t400, ptr %t404 + store i64 %t402, ptr %t396 + %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t406 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t406, ptr %a408 + store { ptr, i64, i64 } { ptr @.str.4675, i64 1, i64 0 }, ptr %a409 + call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) + %t410 = load { ptr, i64, i64 }, ptr %a407 + %t411 = load { ptr, i64, i64 }, ptr %a368 + store { ptr, i64, i64 } %t410, ptr %a413 + store { ptr, i64, i64 } %t411, ptr %a414 + call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a412 + %t416 = load i64, ptr %t405 + %t417 = add i64 %t416, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t417, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t418 = load ptr, ptr %a236 + %t419 = getelementptr inbounds { ptr, i64, i64 }, ptr %t418, i64 %t416 + store { ptr, i64, i64 } %t415, ptr %t419 + store i64 %t417, ptr %t405 + br label %endif7208 +else7207: + %t420 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 0 + %t421 = load { ptr, i64, i64 }, ptr %t420 + store { ptr, i64, i64 } %t421, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.4676, i64 8, i64 0 }, ptr %a423 + %t424 = call i32 @finch_str_eq(ptr %a422, ptr %a423) + %t425 = icmp ne i32 %t424, 0 + br i1 %t425, label %then7209, label %else7210 +then7209: + %t426 = load ptr, ptr %a1 + %t427 = load ptr, ptr %a1 + %t428 = load %S.ast.Type, ptr %a303 + %t429 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t427, %S.ast.Type %t428) + %t430 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t426, { ptr, i64, i64 } %t429) + store { ptr, i64, i64 } %t430, ptr %a431 + %t432 = load ptr, ptr %a1 + %t433 = load ptr, ptr %a1 + %t434 = load %S.ast.Type, ptr %a303 + %t435 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t433, %S.ast.Type %t434) + %t436 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t437 = load { ptr, i64, i64 }, ptr %t436 + %t438 = load { ptr, i64, i64 }, ptr %a431 + call void @finch.gen.store(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t437, { ptr, i64, i64 } %t438) + %t439 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t440 = load i64, ptr %t439 + %t441 = add i64 %t440, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t441, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t442 = load ptr, ptr %a235 + %t443 = getelementptr inbounds { ptr, i64, i64 }, ptr %t442, i64 %t440 + store { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, ptr %t443 + store i64 %t441, ptr %t439 + %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t445 = load { ptr, i64, i64 }, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.4678, i64 4, i64 0 }, ptr %a447 + store { ptr, i64, i64 } %t445, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + %t449 = load { ptr, i64, i64 }, ptr %a446 + %t450 = load i64, ptr %t444 + %t451 = add i64 %t450, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t451, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t452 = load ptr, ptr %a236 + %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t452, i64 %t450 + store { ptr, i64, i64 } %t449, ptr %t453 + store i64 %t451, ptr %t444 + br label %endif7211 +else7210: + %t454 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 0 + %t455 = load { ptr, i64, i64 }, ptr %t454 + store { ptr, i64, i64 } %t455, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.4679, i64 6, i64 0 }, ptr %a457 + %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) + %t459 = icmp ne i32 %t458, 0 + br i1 %t459, label %then7212, label %else7213 +then7212: + %t460 = load ptr, ptr %a1 + %t461 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t460, { ptr, i64, i64 } { ptr @.str.4680, i64 9, i64 0 }) + store { ptr, i64, i64 } %t461, ptr %a462 + %t463 = load ptr, ptr %a1 + %t464 = load ptr, ptr %a1 + %t465 = load %S.ast.Type, ptr %a303 + %t466 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t464, %S.ast.Type %t465) + %t467 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t468 = load { ptr, i64, i64 }, ptr %t467 + %t469 = load { ptr, i64, i64 }, ptr %a462 + call void @finch.gen.store(ptr %t463, { ptr, i64, i64 } %t466, { ptr, i64, i64 } %t468, { ptr, i64, i64 } %t469) + %t470 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t471 = getelementptr inbounds { ptr, i64, i64 }, ptr %t470, i32 0, i32 1 + %t472 = load i64, ptr %t471 + store i64 0, ptr %a473 + br label %for.cond7215 +for.cond7215: + %t474 = load i64, ptr %a473 + %t475 = icmp slt i64 %t474, %t472 + br i1 %t475, label %for.body7216, label %for.end7218 +for.body7216: + %t476 = load ptr, ptr %a1 + %t477 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t478 = load i64, ptr %a473 + %t479 = load { ptr, i64, i64 }, ptr %t477 + %t480 = extractvalue { ptr, i64, i64 } %t479, 1 + %t481 = icmp uge i64 %t478, %t480 + br i1 %t481, label %range7219, label %inrange7220 +range7219: + call void @finch_panic_index(ptr @.str.4681, i64 4198, i64 %t478, i64 %t480) unreachable -inrange6922: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t401, i64 %t397 - %t403 = load { ptr, i64, i64 }, ptr %t402 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4446, i64 31, i64 0 }, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - %t409 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t409, ptr %a411 - store { ptr, i64, i64 } { ptr @.str.4447, i64 6, i64 0 }, ptr %a412 - call void @finch_str_concat(ptr %a410, ptr %a411, ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a410 - %t414 = load i64, ptr %a392 - %t415 = mul i64 8, %t414 - call void @finch_str_from_int(ptr %a416, i64 %t415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - store { ptr, i64, i64 } %t413, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a418 - %t422 = call { ptr, i64, i64 } @finch.gen.op(ptr %t404, { ptr, i64, i64 } %t421) - %t423 = call { ptr, i64, i64 } @finch.gen.load(ptr %t395, { ptr, i64, i64 } %t403, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t426 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1 - %t427 = load i64, ptr %a392 - %t428 = load { ptr, i64, i64 }, ptr %t426 - %t429 = extractvalue { ptr, i64, i64 } %t428, 1 - %t430 = icmp uge i64 %t427, %t429 - br i1 %t430, label %range6923, label %inrange6924 -range6923: - call void @finch_panic_index(ptr @.str.4448, i64 4061, i64 %t427, i64 %t429) - unreachable -inrange6924: - %t431 = extractvalue { ptr, i64, i64 } %t428, 0 - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %t431, i64 %t427 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t433, ptr %a434 - call void @finch_str_copy(ptr %a435, ptr %a434) - %t436 = load { ptr, i64, i64 }, ptr %a435 - %t437 = load i64, ptr %t425 - %t438 = add i64 %t437, 1 - call void @finch_arr_reserve(ptr %a154, i64 %t438, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t439 = load ptr, ptr %a154 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i64 %t437 - store { ptr, i64, i64 } %t436, ptr %t440 - store i64 %t438, ptr %t425 - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t442 = getelementptr inbounds %S.gen.Abi, ptr %a234, i32 0, i32 1 - %t443 = load i64, ptr %a392 - %t444 = load { ptr, i64, i64 }, ptr %t442 - %t445 = extractvalue { ptr, i64, i64 } %t444, 1 - %t446 = icmp uge i64 %t443, %t445 - br i1 %t446, label %range6925, label %inrange6926 -range6925: - call void @finch_panic_index(ptr @.str.4449, i64 4062, i64 %t443, i64 %t445) - unreachable -inrange6926: - %t447 = extractvalue { ptr, i64, i64 } %t444, 0 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i64 %t443 - %t449 = load { ptr, i64, i64 }, ptr %t448 - store { ptr, i64, i64 } %t449, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4450, i64 1, i64 0 }, ptr %a452 - call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) - %t453 = load { ptr, i64, i64 }, ptr %a450 - %t454 = load { ptr, i64, i64 }, ptr %a424 - store { ptr, i64, i64 } %t453, ptr %a456 - store { ptr, i64, i64 } %t454, ptr %a457 - call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a455 - %t459 = load i64, ptr %t441 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t460, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %a155 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i64 %t459 - store { ptr, i64, i64 } %t458, ptr %t462 - store i64 %t460, ptr %t441 - br label %for.step6919 -for.step6919: - %t463 = load i64, ptr %a392 - %t464 = add i64 %t463, 1 - store i64 %t464, ptr %a392 - br label %for.cond6917 -for.end6920: - br label %endif6916 -else6915: - %t465 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Type, ptr %a222 - %t468 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t466, %S.ast.Type %t467) - %t469 = load ptr, ptr %a1 - %t470 = load %S.ast.Type, ptr %a222 - %t471 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t469, %S.ast.Type %t470) - store { ptr, i64, i64 } %t468, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load i64, ptr %t465 - %t477 = add i64 %t476, 1 - call void @finch_arr_reserve(ptr %a154, i64 %t477, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t478 = load ptr, ptr %a154 - %t479 = getelementptr inbounds { ptr, i64, i64 }, ptr %t478, i64 %t476 - store { ptr, i64, i64 } %t475, ptr %t479 - store i64 %t477, ptr %t465 - %t480 = getelementptr inbounds %S.ast.Type, ptr %a222, i32 0, i32 0 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4451, i64 3, i64 0 }, ptr %a483 - %t484 = call i32 @finch_str_eq(ptr %a482, ptr %a483) - %t485 = icmp ne i32 %t484, 0 - br i1 %t485, label %then6927, label %else6928 -then6927: - %t486 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t487 = load ptr, ptr %a1 - %t488 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0 - %t489 = load { ptr, i64, i64 }, ptr %t488 - %t490 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t487, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } { ptr @.str.4452, i64 4, i64 0 }, ptr %a492 - store { ptr, i64, i64 } %t490, ptr %a493 +inrange7220: + %t482 = extractvalue { ptr, i64, i64 } %t479, 0 + %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t478 + %t484 = load { ptr, i64, i64 }, ptr %t483 + %t485 = load ptr, ptr %a1 + %t486 = load { ptr, i64, i64 }, ptr %a462 + store { ptr, i64, i64 } { ptr @.str.4682, i64 31, i64 0 }, ptr %a488 + store { ptr, i64, i64 } %t486, ptr %a489 + call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) + %t490 = load { ptr, i64, i64 }, ptr %a487 + store { ptr, i64, i64 } %t490, ptr %a492 + store { ptr, i64, i64 } { ptr @.str.4683, i64 6, i64 0 }, ptr %a493 call void @finch_str_concat(ptr %a491, ptr %a492, ptr %a493) %t494 = load { ptr, i64, i64 }, ptr %a491 - %t495 = load i64, ptr %t486 - %t496 = add i64 %t495, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t496, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t497 = load ptr, ptr %a155 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t495 - store { ptr, i64, i64 } %t494, ptr %t498 - store i64 %t496, ptr %t486 - br label %endif6929 -else6928: - %t499 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t500 = load ptr, ptr %a1 - %t501 = load %S.ast.Type, ptr %a222 - %t502 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t500, %S.ast.Type %t501) - %t503 = load ptr, ptr %a1 - %t504 = load %S.ast.Type, ptr %a222 - %t505 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t503, %S.ast.Type %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t509, ptr %a511 - store { ptr, i64, i64 } { ptr @.str.4453, i64 1, i64 0 }, ptr %a512 - call void @finch_str_concat(ptr %a510, ptr %a511, ptr %a512) - %t513 = load { ptr, i64, i64 }, ptr %a510 - %t514 = getelementptr inbounds %S.gen.Val, ptr %a275, i32 0, i32 0 - %t515 = load { ptr, i64, i64 }, ptr %t514 - store { ptr, i64, i64 } %t513, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a516 - %t520 = load i64, ptr %t499 - %t521 = add i64 %t520, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t521, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t522 = load ptr, ptr %a155 - %t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t522, i64 %t520 - store { ptr, i64, i64 } %t519, ptr %t523 - store i64 %t521, ptr %t499 - br label %endif6929 -endif6929: - br label %endif6916 -endif6916: - br label %endif6913 -endif6913: - br label %endif6910 -endif6910: - br label %for.step6895 -endif6899: - %t524 = load ptr, ptr %a1 - %t525 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t526 = load i64, ptr %a204 - %t527 = load { ptr, i64, i64 }, ptr %t525 - %t528 = extractvalue { ptr, i64, i64 } %t527, 1 - %t529 = icmp uge i64 %t526, %t528 - br i1 %t529, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4454, i64 4075, i64 %t526, i64 %t528) + %t495 = load i64, ptr %a473 + %t496 = mul i64 8, %t495 + call void @finch_str_from_int(ptr %a497, i64 %t496) + %t498 = load { ptr, i64, i64 }, ptr %a497 + store { ptr, i64, i64 } %t494, ptr %a500 + store { ptr, i64, i64 } %t498, ptr %a501 + call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) + %t502 = load { ptr, i64, i64 }, ptr %a499 + %t503 = call { ptr, i64, i64 } @finch.gen.op(ptr %t485, { ptr, i64, i64 } %t502) + %t504 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t484, { ptr, i64, i64 } %t503) + store { ptr, i64, i64 } %t504, ptr %a505 + %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t507 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t508 = load i64, ptr %a473 + %t509 = load { ptr, i64, i64 }, ptr %t507 + %t510 = extractvalue { ptr, i64, i64 } %t509, 1 + %t511 = icmp uge i64 %t508, %t510 + br i1 %t511, label %range7221, label %inrange7222 +range7221: + call void @finch_panic_index(ptr @.str.4684, i64 4199, i64 %t508, i64 %t510) unreachable -inrange6931: - %t530 = extractvalue { ptr, i64, i64 } %t527, 0 - %t531 = getelementptr inbounds %S.ast.Node, ptr %t530, i64 %t526 - %t532 = load %S.ast.Node, ptr %t531 - %t533 = call %S.gen.Val @finch.gen.expr(ptr %t524, %S.ast.Node %t532) - store %S.gen.Val %t533, ptr %a534 - %t535 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 1 - %t536 = load %S.ast.Type, ptr %t535 - store %S.ast.Type %t536, ptr %a537 - call void @finch.copy.S_ast_Type(ptr %a538, ptr %a537) - %t539 = load %S.ast.Type, ptr %a538 - store %S.ast.Type %t539, ptr %a540 - %t541 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t542 = load { ptr, i64, i64 }, ptr %t541 - store { ptr, i64, i64 } %t542, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.4455, i64 4, i64 0 }, ptr %a544 - %t545 = call i32 @finch_str_eq(ptr %a543, ptr %a544) - %t546 = icmp ne i32 %t545, 0 - br i1 %t546, label %then6932, label %endif6934 -then6932: +inrange7222: + %t512 = extractvalue { ptr, i64, i64 } %t509, 0 + %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t508 + %t514 = load { ptr, i64, i64 }, ptr %t513 + store { ptr, i64, i64 } %t514, ptr %a515 + call void @finch_str_copy(ptr %a516, ptr %a515) + %t517 = load { ptr, i64, i64 }, ptr %a516 + %t518 = load i64, ptr %t506 + %t519 = add i64 %t518, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t519, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t520 = load ptr, ptr %a235 + %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t518 + store { ptr, i64, i64 } %t517, ptr %t521 + store i64 %t519, ptr %t506 + %t522 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t523 = getelementptr inbounds %S.gen.Abi, ptr %a315, i32 0, i32 1 + %t524 = load i64, ptr %a473 + %t525 = load { ptr, i64, i64 }, ptr %t523 + %t526 = extractvalue { ptr, i64, i64 } %t525, 1 + %t527 = icmp uge i64 %t524, %t526 + br i1 %t527, label %range7223, label %inrange7224 +range7223: + call void @finch_panic_index(ptr @.str.4685, i64 4200, i64 %t524, i64 %t526) + unreachable +inrange7224: + %t528 = extractvalue { ptr, i64, i64 } %t525, 0 + %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t528, i64 %t524 + %t530 = load { ptr, i64, i64 }, ptr %t529 + store { ptr, i64, i64 } %t530, ptr %a532 + store { ptr, i64, i64 } { ptr @.str.4686, i64 1, i64 0 }, ptr %a533 + call void @finch_str_concat(ptr %a531, ptr %a532, ptr %a533) + %t534 = load { ptr, i64, i64 }, ptr %a531 + %t535 = load { ptr, i64, i64 }, ptr %a505 + store { ptr, i64, i64 } %t534, ptr %a537 + store { ptr, i64, i64 } %t535, ptr %a538 + call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) + %t539 = load { ptr, i64, i64 }, ptr %a536 + %t540 = load i64, ptr %t522 + %t541 = add i64 %t540, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t541, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t542 = load ptr, ptr %a236 + %t543 = getelementptr inbounds { ptr, i64, i64 }, ptr %t542, i64 %t540 + store { ptr, i64, i64 } %t539, ptr %t543 + store i64 %t541, ptr %t522 + br label %for.step7217 +for.step7217: + %t544 = load i64, ptr %a473 + %t545 = add i64 %t544, 1 + store i64 %t545, ptr %a473 + br label %for.cond7215 +for.end7218: + br label %endif7214 +else7213: + %t546 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 %t547 = load ptr, ptr %a1 - %t548 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t549 = load i64, ptr %a204 - %t550 = load { ptr, i64, i64 }, ptr %t548 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range6935, label %inrange6936 -range6935: - call void @finch_panic_index(ptr @.str.4456, i64 4078, i64 %t549, i64 %t551) + %t548 = load %S.ast.Type, ptr %a303 + %t549 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t547, %S.ast.Type %t548) + %t550 = load ptr, ptr %a1 + %t551 = load %S.ast.Type, ptr %a303 + %t552 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t550, %S.ast.Type %t551) + store { ptr, i64, i64 } %t549, ptr %a554 + store { ptr, i64, i64 } %t552, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + %t556 = load { ptr, i64, i64 }, ptr %a553 + %t557 = load i64, ptr %t546 + %t558 = add i64 %t557, 1 + call void @finch_arr_reserve(ptr %a235, i64 %t558, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t559 = load ptr, ptr %a235 + %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i64 %t557 + store { ptr, i64, i64 } %t556, ptr %t560 + store i64 %t558, ptr %t546 + %t561 = getelementptr inbounds %S.ast.Type, ptr %a303, i32 0, i32 0 + %t562 = load { ptr, i64, i64 }, ptr %t561 + store { ptr, i64, i64 } %t562, ptr %a563 + store { ptr, i64, i64 } { ptr @.str.4687, i64 3, i64 0 }, ptr %a564 + %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) + %t566 = icmp ne i32 %t565, 0 + br i1 %t566, label %then7225, label %else7226 +then7225: + %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t568 = load ptr, ptr %a1 + %t569 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t570 = load { ptr, i64, i64 }, ptr %t569 + %t571 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t568, { ptr, i64, i64 } %t570) + store { ptr, i64, i64 } { ptr @.str.4688, i64 4, i64 0 }, ptr %a573 + store { ptr, i64, i64 } %t571, ptr %a574 + call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) + %t575 = load { ptr, i64, i64 }, ptr %a572 + %t576 = load i64, ptr %t567 + %t577 = add i64 %t576, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t577, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t578 = load ptr, ptr %a236 + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i64 %t576 + store { ptr, i64, i64 } %t575, ptr %t579 + store i64 %t577, ptr %t567 + br label %endif7227 +else7226: + %t580 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t581 = load ptr, ptr %a1 + %t582 = load %S.ast.Type, ptr %a303 + %t583 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t581, %S.ast.Type %t582) + %t584 = load ptr, ptr %a1 + %t585 = load %S.ast.Type, ptr %a303 + %t586 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t584, %S.ast.Type %t585) + store { ptr, i64, i64 } %t583, ptr %a588 + store { ptr, i64, i64 } %t586, ptr %a589 + call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) + %t590 = load { ptr, i64, i64 }, ptr %a587 + store { ptr, i64, i64 } %t590, ptr %a592 + store { ptr, i64, i64 } { ptr @.str.4689, i64 1, i64 0 }, ptr %a593 + call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) + %t594 = load { ptr, i64, i64 }, ptr %a591 + %t595 = getelementptr inbounds %S.gen.Val, ptr %a356, i32 0, i32 0 + %t596 = load { ptr, i64, i64 }, ptr %t595 + store { ptr, i64, i64 } %t594, ptr %a598 + store { ptr, i64, i64 } %t596, ptr %a599 + call void @finch_str_concat(ptr %a597, ptr %a598, ptr %a599) + %t600 = load { ptr, i64, i64 }, ptr %a597 + %t601 = load i64, ptr %t580 + %t602 = add i64 %t601, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t602, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t603 = load ptr, ptr %a236 + %t604 = getelementptr inbounds { ptr, i64, i64 }, ptr %t603, i64 %t601 + store { ptr, i64, i64 } %t600, ptr %t604 + store i64 %t602, ptr %t580 + br label %endif7227 +endif7227: + br label %endif7214 +endif7214: + br label %endif7211 +endif7211: + br label %endif7208 +endif7208: + br label %for.step7193 +endif7197: + %t605 = load ptr, ptr %a1 + %t606 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t607 = load i64, ptr %a285 + %t608 = load { ptr, i64, i64 }, ptr %t606 + %t609 = extractvalue { ptr, i64, i64 } %t608, 1 + %t610 = icmp uge i64 %t607, %t609 + br i1 %t610, label %range7228, label %inrange7229 +range7228: + call void @finch_panic_index(ptr @.str.4690, i64 4213, i64 %t607, i64 %t609) unreachable -inrange6936: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.ast.Node, ptr %t553, i64 %t549 - %t555 = load %S.ast.Node, ptr %t554 - call void @finch.gen.fail(ptr %t547, %S.ast.Node %t555, { ptr, i64, i64 } { ptr @.str.4457, i64 23, i64 0 }) - br label %endif6934 -endif6934: - %t556 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - store { ptr, i64, i64 } { ptr @.str.4458, i64 6, i64 0 }, ptr %a559 - %t560 = call i32 @finch_str_eq(ptr %a558, ptr %a559) - %t561 = icmp ne i32 %t560, 0 - br label %logic.from6937 -logic.from6937: - br i1 %t561, label %logic.end6939, label %logic.rhs6938 -logic.rhs6938: - %t562 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t563 = load { ptr, i64, i64 }, ptr %t562 - store { ptr, i64, i64 } %t563, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4459, i64 5, i64 0 }, ptr %a565 - %t566 = call i32 @finch_str_eq(ptr %a564, ptr %a565) - %t567 = icmp ne i32 %t566, 0 - br label %logic.rend6940 -logic.rend6940: - br label %logic.end6939 -logic.end6939: - %t568 = phi i1 [ true, %logic.from6937 ], [ %t567, %logic.rend6940 ] - br i1 %t568, label %then6941, label %endif6943 -then6941: - %t569 = load ptr, ptr %a1 - %t570 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t571 = load i64, ptr %a204 - %t572 = load { ptr, i64, i64 }, ptr %t570 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 %t571, %t573 - br i1 %t574, label %range6944, label %inrange6945 -range6944: - call void @finch_panic_index(ptr @.str.4460, i64 4081, i64 %t571, i64 %t573) +inrange7229: + %t611 = extractvalue { ptr, i64, i64 } %t608, 0 + %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 %t607 + %t613 = load %S.ast.Node, ptr %t612 + %t614 = call %S.gen.Val @finch.gen.expr(ptr %t605, %S.ast.Node %t613) + store %S.gen.Val %t614, ptr %a615 + %t616 = getelementptr inbounds %S.gen.Val, ptr %a615, i32 0, i32 1 + %t617 = load %S.ast.Type, ptr %t616 + store %S.ast.Type %t617, ptr %a618 + call void @finch.copy.S_ast_Type(ptr %a619, ptr %a618) + %t620 = load %S.ast.Type, ptr %a619 + store %S.ast.Type %t620, ptr %a621 + %t622 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t623 = load { ptr, i64, i64 }, ptr %t622 + store { ptr, i64, i64 } %t623, ptr %a624 + store { ptr, i64, i64 } { ptr @.str.4691, i64 4, i64 0 }, ptr %a625 + %t626 = call i32 @finch_str_eq(ptr %a624, ptr %a625) + %t627 = icmp ne i32 %t626, 0 + br i1 %t627, label %then7230, label %endif7232 +then7230: + %t628 = load ptr, ptr %a1 + %t629 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t630 = load i64, ptr %a285 + %t631 = load { ptr, i64, i64 }, ptr %t629 + %t632 = extractvalue { ptr, i64, i64 } %t631, 1 + %t633 = icmp uge i64 %t630, %t632 + br i1 %t633, label %range7233, label %inrange7234 +range7233: + call void @finch_panic_index(ptr @.str.4692, i64 4216, i64 %t630, i64 %t632) unreachable -inrange6945: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Node, ptr %t575, i64 %t571 - %t577 = load %S.ast.Node, ptr %t576 - call void @finch.gen.fail(ptr %t569, %S.ast.Node %t577, { ptr, i64, i64 } { ptr @.str.4461, i64 68, i64 0 }) - br label %endif6943 -endif6943: - %t578 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 0 - %t579 = load { ptr, i64, i64 }, ptr %t578 - store { ptr, i64, i64 } %t579, ptr %a580 - call void @finch_str_copy(ptr %a581, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t582, ptr %a583 - %t584 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.4462, i64 3, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br i1 %t589, label %then6946, label %else6947 -then6946: - %t590 = load ptr, ptr %a1 - %t591 = load { ptr, i64, i64 }, ptr %a583 - %t592 = load %S.ast.Type, ptr %a540 - %t593 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4463, i64 5, i64 0 }) - %t594 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t590, { ptr, i64, i64 } %t591, %S.ast.Type %t592, %S.ast.Type %t593) - store { ptr, i64, i64 } %t594, ptr %a583 - %t595 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4464, i64 5, i64 0 }) - store %S.ast.Type %t595, ptr %a540 - br label %endif6948 -else6947: - %t596 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - store { ptr, i64, i64 } { ptr @.str.4465, i64 3, i64 0 }, ptr %a599 - %t600 = call i32 @finch_str_eq(ptr %a598, ptr %a599) - %t601 = icmp ne i32 %t600, 0 - br i1 %t601, label %then6949, label %else6950 -then6949: - %t602 = load ptr, ptr %a1 - %t603 = load { ptr, i64, i64 }, ptr %a583 - %t604 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t602, { ptr, i64, i64 } %t603) - store { ptr, i64, i64 } %t604, ptr %a583 - %t605 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4466, i64 3, i64 0 }) - store %S.ast.Type %t605, ptr %a540 - br label %endif6951 -else6950: - %t606 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t607 = load { ptr, i64, i64 }, ptr %t606 - store { ptr, i64, i64 } %t607, ptr %a608 - store { ptr, i64, i64 } { ptr @.str.4467, i64 4, i64 0 }, ptr %a609 - %t610 = call i32 @finch_str_eq(ptr %a608, ptr %a609) - %t611 = icmp ne i32 %t610, 0 - br i1 %t611, label %then6952, label %else6953 -then6952: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Val, ptr %a534, i32 0, i32 0 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } { ptr @.str.4468, i64 8, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.4469, i64 7, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - %t622 = load { ptr, i64, i64 }, ptr %a619 - %t623 = call { ptr, i64, i64 } @finch.gen.op(ptr %t612, { ptr, i64, i64 } %t622) - store { ptr, i64, i64 } %t623, ptr %a583 - %t624 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }) - store %S.ast.Type %t624, ptr %a540 - br label %endif6954 -else6953: - %t625 = load %S.ast.Type, ptr %a540 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.from6955 -logic.from6955: - br i1 %t626, label %logic.end6957, label %logic.rhs6956 -logic.rhs6956: - %t627 = getelementptr inbounds %S.ast.Type, ptr %a540, i32 0, i32 0 - %t628 = load { ptr, i64, i64 }, ptr %t627 - store { ptr, i64, i64 } %t628, ptr %a629 - store { ptr, i64, i64 } { ptr @.str.4471, i64 4, i64 0 }, ptr %a630 - %t631 = call i32 @finch_str_eq(ptr %a629, ptr %a630) - %t632 = icmp ne i32 %t631, 0 - br label %logic.rend6958 -logic.rend6958: - br label %logic.end6957 -logic.end6957: - %t633 = phi i1 [ true, %logic.from6955 ], [ %t632, %logic.rend6958 ] - br label %logic.from6959 -logic.from6959: - br i1 %t633, label %logic.rhs6960, label %logic.end6961 -logic.rhs6960: - %t634 = load %S.ast.Type, ptr %a540 - %t635 = call i64 @finch.gen.bitsOf(%S.ast.Type %t634) - %t636 = icmp slt i64 %t635, 32 - br label %logic.rend6962 -logic.rend6962: - br label %logic.end6961 -logic.end6961: - %t637 = phi i1 [ false, %logic.from6959 ], [ %t636, %logic.rend6962 ] - br i1 %t637, label %then6963, label %endif6965 -then6963: - %t638 = load ptr, ptr %a1 - %t639 = load { ptr, i64, i64 }, ptr %a583 - %t640 = load %S.ast.Type, ptr %a540 - %t641 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4472, i64 3, i64 0 }) - %t642 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t638, { ptr, i64, i64 } %t639, %S.ast.Type %t640, %S.ast.Type %t641) - store { ptr, i64, i64 } %t642, ptr %a583 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4473, i64 3, i64 0 }) - store %S.ast.Type %t643, ptr %a540 - br label %endif6965 -endif6965: - br label %endif6954 -endif6954: - br label %endif6951 -endif6951: - br label %endif6948 -endif6948: - %t644 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - %t645 = load ptr, ptr %a1 - %t646 = load %S.ast.Type, ptr %a540 - %t647 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t645, %S.ast.Type %t646) - store { ptr, i64, i64 } %t647, ptr %a649 - store { ptr, i64, i64 } { ptr @.str.4474, i64 1, i64 0 }, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a648 - %t652 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t652, ptr %a655 - call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a653 - %t657 = load i64, ptr %t644 - %t658 = add i64 %t657, 1 - call void @finch_arr_reserve(ptr %a155, i64 %t658, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t659 = load ptr, ptr %a155 - %t660 = getelementptr inbounds { ptr, i64, i64 }, ptr %t659, i64 %t657 - store { ptr, i64, i64 } %t656, ptr %t660 - store i64 %t658, ptr %t644 - br label %for.step6895 -for.step6895: - %t661 = load i64, ptr %a204 - %t662 = add i64 %t661, 1 - store i64 %t662, ptr %a204 - br label %for.cond6893 -for.end6896: - %t663 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 2 - %t664 = load { ptr, i64, i64 }, ptr %t663 - store { ptr, i64, i64 } %t664, ptr %a665 - call void @finch_str_copy(ptr %a666, ptr %a665) - %t667 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.4475, i64 0, i64 0 }, ptr %a669 - %t670 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0 - %t671 = getelementptr inbounds %S.gen.Abi, ptr %t670, i32 0, i32 0 - %t672 = load { ptr, i64, i64 }, ptr %t671 - store { ptr, i64, i64 } %t672, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.4476, i64 6, i64 0 }, ptr %a674 - %t675 = call i32 @finch_str_eq(ptr %a673, ptr %a674) - %t676 = icmp ne i32 %t675, 0 - br i1 %t676, label %then6966, label %endif6968 -then6966: - %t677 = load ptr, ptr %a1 - %t678 = load %S.ast.Type, ptr %a111 - %t679 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t677, %S.ast.Type %t678) - store { ptr, i64, i64 } %t679, ptr %a669 - br label %endif6968 -endif6968: - store { ptr, i64, i64 } { ptr @.str.4477, i64 0, i64 0 }, ptr %a680 - %t681 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t682 = load i1, ptr %t681 - br i1 %t682, label %then6969, label %endif6971 -then6969: - store { ptr, i64, i64 } { ptr @.str.4478, i64 5, i64 0 }, ptr %a680 - %t683 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - %t684 = load i64, ptr %t683 - %t685 = icmp eq i64 %t684, 0 - br i1 %t685, label %then6972, label %endif6974 -then6972: - store { ptr, i64, i64 } { ptr @.str.4479, i64 3, i64 0 }, ptr %a680 - br label %endif6974 -endif6974: - br label %endif6971 -endif6971: - %t686 = load ptr, ptr %a1 - %t687 = icmp eq ptr %t686, null - br i1 %t687, label %panic6975, label %ok6976 -panic6975: - call void @finch_panic(ptr @.str.4480, i64 4112, ptr @.str.4481) +inrange7234: + %t634 = extractvalue { ptr, i64, i64 } %t631, 0 + %t635 = getelementptr inbounds %S.ast.Node, ptr %t634, i64 %t630 + %t636 = load %S.ast.Node, ptr %t635 + call void @finch.gen.fail(ptr %t628, %S.ast.Node %t636, { ptr, i64, i64 } { ptr @.str.4693, i64 23, i64 0 }) + br label %endif7232 +endif7232: + %t637 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t638 = load { ptr, i64, i64 }, ptr %t637 + store { ptr, i64, i64 } %t638, ptr %a639 + store { ptr, i64, i64 } { ptr @.str.4694, i64 6, i64 0 }, ptr %a640 + %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) + %t642 = icmp ne i32 %t641, 0 + br label %logic.from7235 +logic.from7235: + br i1 %t642, label %logic.end7237, label %logic.rhs7236 +logic.rhs7236: + %t643 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t644 = load { ptr, i64, i64 }, ptr %t643 + store { ptr, i64, i64 } %t644, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.4695, i64 5, i64 0 }, ptr %a646 + %t647 = call i32 @finch_str_eq(ptr %a645, ptr %a646) + %t648 = icmp ne i32 %t647, 0 + br label %logic.rend7238 +logic.rend7238: + br label %logic.end7237 +logic.end7237: + %t649 = phi i1 [ true, %logic.from7235 ], [ %t648, %logic.rend7238 ] + br i1 %t649, label %then7239, label %endif7241 +then7239: + %t650 = load ptr, ptr %a1 + %t651 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t652 = load i64, ptr %a285 + %t653 = load { ptr, i64, i64 }, ptr %t651 + %t654 = extractvalue { ptr, i64, i64 } %t653, 1 + %t655 = icmp uge i64 %t652, %t654 + br i1 %t655, label %range7242, label %inrange7243 +range7242: + call void @finch_panic_index(ptr @.str.4696, i64 4219, i64 %t652, i64 %t654) unreachable -ok6976: - %t688 = getelementptr inbounds %S.gen.Gen, ptr %t686, i32 0, i32 36 - %t689 = getelementptr inbounds { ptr, i64, i64 }, ptr %t688, i32 0, i32 1 - %t690 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t691 = load { ptr, i64, i64 }, ptr %t690 - store { ptr, i64, i64 } { ptr @.str.4482, i64 2, i64 0 }, ptr %a693 - store { ptr, i64, i64 } %t691, ptr %a694 - call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a692 - store i64 -1, ptr %a696 - %t697 = load i64, ptr %t689 - %t698 = load ptr, ptr %t688 - store i64 0, ptr %a699 - br label %find.cond6977 -find.cond6977: - %t700 = load i64, ptr %a699 - %t701 = icmp slt i64 %t700, %t697 - br i1 %t701, label %find.body6978, label %find.end6981 -find.body6978: - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t698, i64 %t700 - %t703 = load { ptr, i64, i64 }, ptr %t702 - store { ptr, i64, i64 } %t703, ptr %a704 - store { ptr, i64, i64 } %t695, ptr %a705 - %t706 = call i32 @finch_str_eq(ptr %a704, ptr %a705) - %t707 = icmp ne i32 %t706, 0 - br i1 %t707, label %find.hit6979, label %find.next6980 -find.hit6979: - store i64 %t700, ptr %a696 - br label %find.end6981 -find.next6980: - %t708 = add i64 %t700, 1 - store i64 %t708, ptr %a699 - br label %find.cond6977 -find.end6981: - %t709 = load i64, ptr %a696 - %t710 = icmp sge i64 %t709, 0 - %t711 = xor i1 %t710, true - br i1 %t711, label %then6982, label %endif6984 -then6982: - %t712 = load ptr, ptr %a1 - %t713 = icmp eq ptr %t712, null - br i1 %t713, label %panic6985, label %ok6986 -panic6985: - call void @finch_panic(ptr @.str.4483, i64 4113, ptr @.str.4484) - unreachable -ok6986: - %t714 = getelementptr inbounds %S.gen.Gen, ptr %t712, i32 0, i32 36 - %t715 = getelementptr inbounds { ptr, i64, i64 }, ptr %t714, i32 0, i32 1 - %t716 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t717 = load { ptr, i64, i64 }, ptr %t716 - store { ptr, i64, i64 } { ptr @.str.4485, i64 2, i64 0 }, ptr %a719 - store { ptr, i64, i64 } %t717, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - %t721 = load { ptr, i64, i64 }, ptr %a718 - %t722 = load i64, ptr %t715 - %t723 = add i64 %t722, 1 - call void @finch_arr_reserve(ptr %t714, i64 %t723, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t724 = load ptr, ptr %t714 - %t725 = getelementptr inbounds { ptr, i64, i64 }, ptr %t724, i64 %t722 - store { ptr, i64, i64 } %t721, ptr %t725 - store i64 %t723, ptr %t715 - %t726 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t727 = load { ptr, i64, i64 }, ptr %t726 - %t728 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t727) - %t729 = xor i1 %t728, true - br i1 %t729, label %then6987, label %endif6989 -then6987: - %t730 = load ptr, ptr %a1 - %t731 = icmp eq ptr %t730, null - br i1 %t731, label %panic6990, label %ok6991 -panic6990: - call void @finch_panic(ptr @.str.4486, i64 4115, ptr @.str.4487) - unreachable -ok6991: - %t732 = getelementptr inbounds %S.gen.Gen, ptr %t730, i32 0, i32 2 - %t733 = getelementptr inbounds { ptr, i64, i64 }, ptr %t732, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.4488, i64 7, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4489, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a739 - %t743 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - %t747 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t747, ptr %a749 - store { ptr, i64, i64 } { ptr @.str.4490, i64 2, i64 0 }, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - %t751 = load { ptr, i64, i64 }, ptr %a748 - %t752 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 +inrange7243: + %t656 = extractvalue { ptr, i64, i64 } %t653, 0 + %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t652 + %t658 = load %S.ast.Node, ptr %t657 + call void @finch.gen.fail(ptr %t650, %S.ast.Node %t658, { ptr, i64, i64 } { ptr @.str.4697, i64 68, i64 0 }) + br label %endif7241 +endif7241: + %t659 = getelementptr inbounds %S.gen.Val, ptr %a615, i32 0, i32 0 + %t660 = load { ptr, i64, i64 }, ptr %t659 + store { ptr, i64, i64 } %t660, ptr %a661 + call void @finch_str_copy(ptr %a662, ptr %a661) + %t663 = load { ptr, i64, i64 }, ptr %a662 + store { ptr, i64, i64 } %t663, ptr %a664 + %t665 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t666 = load { ptr, i64, i64 }, ptr %t665 + store { ptr, i64, i64 } %t666, ptr %a667 + store { ptr, i64, i64 } { ptr @.str.4698, i64 3, i64 0 }, ptr %a668 + %t669 = call i32 @finch_str_eq(ptr %a667, ptr %a668) + %t670 = icmp ne i32 %t669, 0 + br i1 %t670, label %then7244, label %else7245 +then7244: + %t671 = load ptr, ptr %a1 + %t672 = load { ptr, i64, i64 }, ptr %a664 + %t673 = load %S.ast.Type, ptr %a621 + %t674 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4699, i64 5, i64 0 }) + %t675 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t671, { ptr, i64, i64 } %t672, %S.ast.Type %t673, %S.ast.Type %t674) + store { ptr, i64, i64 } %t675, ptr %a664 + %t676 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4700, i64 5, i64 0 }) + store %S.ast.Type %t676, ptr %a621 + br label %endif7246 +else7245: + %t677 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t678 = load { ptr, i64, i64 }, ptr %t677 + store { ptr, i64, i64 } %t678, ptr %a679 + store { ptr, i64, i64 } { ptr @.str.4701, i64 3, i64 0 }, ptr %a680 + %t681 = call i32 @finch_str_eq(ptr %a679, ptr %a680) + %t682 = icmp ne i32 %t681, 0 + br i1 %t682, label %then7247, label %else7248 +then7247: + %t683 = load ptr, ptr %a1 + %t684 = load { ptr, i64, i64 }, ptr %a664 + %t685 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t683, { ptr, i64, i64 } %t684) + store { ptr, i64, i64 } %t685, ptr %a664 + %t686 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4702, i64 3, i64 0 }) + store %S.ast.Type %t686, ptr %a621 + br label %endif7249 +else7248: + %t687 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t688 = load { ptr, i64, i64 }, ptr %t687 + store { ptr, i64, i64 } %t688, ptr %a689 + store { ptr, i64, i64 } { ptr @.str.4703, i64 4, i64 0 }, ptr %a690 + %t691 = call i32 @finch_str_eq(ptr %a689, ptr %a690) + %t692 = icmp ne i32 %t691, 0 + br i1 %t692, label %then7250, label %else7251 +then7250: + %t693 = load ptr, ptr %a1 + %t694 = getelementptr inbounds %S.gen.Val, ptr %a615, i32 0, i32 0 + %t695 = load { ptr, i64, i64 }, ptr %t694 + store { ptr, i64, i64 } { ptr @.str.4704, i64 8, i64 0 }, ptr %a697 + store { ptr, i64, i64 } %t695, ptr %a698 + call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) + %t699 = load { ptr, i64, i64 }, ptr %a696 + store { ptr, i64, i64 } %t699, ptr %a701 + store { ptr, i64, i64 } { ptr @.str.4705, i64 7, i64 0 }, ptr %a702 + call void @finch_str_concat(ptr %a700, ptr %a701, ptr %a702) + %t703 = load { ptr, i64, i64 }, ptr %a700 + %t704 = call { ptr, i64, i64 } @finch.gen.op(ptr %t693, { ptr, i64, i64 } %t703) + store { ptr, i64, i64 } %t704, ptr %a664 + %t705 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4706, i64 3, i64 0 }) + store %S.ast.Type %t705, ptr %a621 + br label %endif7252 +else7251: + %t706 = load %S.ast.Type, ptr %a621 + %t707 = call i1 @finch.gen.isInt(%S.ast.Type %t706) + br label %logic.from7253 +logic.from7253: + br i1 %t707, label %logic.end7255, label %logic.rhs7254 +logic.rhs7254: + %t708 = getelementptr inbounds %S.ast.Type, ptr %a621, i32 0, i32 0 + %t709 = load { ptr, i64, i64 }, ptr %t708 + store { ptr, i64, i64 } %t709, ptr %a710 + store { ptr, i64, i64 } { ptr @.str.4707, i64 4, i64 0 }, ptr %a711 + %t712 = call i32 @finch_str_eq(ptr %a710, ptr %a711) + %t713 = icmp ne i32 %t712, 0 + br label %logic.rend7256 +logic.rend7256: + br label %logic.end7255 +logic.end7255: + %t714 = phi i1 [ true, %logic.from7253 ], [ %t713, %logic.rend7256 ] + br label %logic.from7257 +logic.from7257: + br i1 %t714, label %logic.rhs7258, label %logic.end7259 +logic.rhs7258: + %t715 = load %S.ast.Type, ptr %a621 + %t716 = call i64 @finch.gen.bitsOf(%S.ast.Type %t715) + %t717 = icmp slt i64 %t716, 32 + br label %logic.rend7260 +logic.rend7260: + br label %logic.end7259 +logic.end7259: + %t718 = phi i1 [ false, %logic.from7257 ], [ %t717, %logic.rend7260 ] + br i1 %t718, label %then7261, label %endif7263 +then7261: + %t719 = load ptr, ptr %a1 + %t720 = load { ptr, i64, i64 }, ptr %a664 + %t721 = load %S.ast.Type, ptr %a621 + %t722 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }) + %t723 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t719, { ptr, i64, i64 } %t720, %S.ast.Type %t721, %S.ast.Type %t722) + store { ptr, i64, i64 } %t723, ptr %a664 + %t724 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4709, i64 3, i64 0 }) + store %S.ast.Type %t724, ptr %a621 + br label %endif7263 +endif7263: + br label %endif7252 +endif7252: + br label %endif7249 +endif7249: + br label %endif7246 +endif7246: + %t725 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + %t726 = load ptr, ptr %a1 + %t727 = load %S.ast.Type, ptr %a621 + %t728 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t726, %S.ast.Type %t727) + store { ptr, i64, i64 } %t728, ptr %a730 + store { ptr, i64, i64 } { ptr @.str.4710, i64 1, i64 0 }, ptr %a731 + call void @finch_str_concat(ptr %a729, ptr %a730, ptr %a731) + %t732 = load { ptr, i64, i64 }, ptr %a729 + %t733 = load { ptr, i64, i64 }, ptr %a664 + store { ptr, i64, i64 } %t732, ptr %a735 + store { ptr, i64, i64 } %t733, ptr %a736 + call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) + %t737 = load { ptr, i64, i64 }, ptr %a734 + %t738 = load i64, ptr %t725 + %t739 = add i64 %t738, 1 + call void @finch_arr_reserve(ptr %a236, i64 %t739, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t740 = load ptr, ptr %a236 + %t741 = getelementptr inbounds { ptr, i64, i64 }, ptr %t740, i64 %t738 + store { ptr, i64, i64 } %t737, ptr %t741 + store i64 %t739, ptr %t725 + br label %for.step7193 +for.step7193: + %t742 = load i64, ptr %a285 + %t743 = add i64 %t742, 1 + store i64 %t743, ptr %a285 + br label %for.cond7191 +for.end7194: + %t744 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 2 + %t745 = load { ptr, i64, i64 }, ptr %t744 + store { ptr, i64, i64 } %t745, ptr %a746 + call void @finch_str_copy(ptr %a747, ptr %a746) + %t748 = load { ptr, i64, i64 }, ptr %a747 + store { ptr, i64, i64 } %t748, ptr %a749 + store { ptr, i64, i64 } { ptr @.str.4711, i64 0, i64 0 }, ptr %a750 + %t751 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 0 + %t752 = getelementptr inbounds %S.gen.Abi, ptr %t751, i32 0, i32 0 %t753 = load { ptr, i64, i64 }, ptr %t752 - store { ptr, i64, i64 } %t751, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - %t757 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t757, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.4491, i64 1, i64 0 }, ptr %a760 - call void @finch_str_concat(ptr %a758, ptr %a759, ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a758 - %t762 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4492, i64 2, i64 0 }, ptr %a763 - call void @finch_str_join(ptr %a764, ptr %a154, ptr %a763) - %t765 = load { ptr, i64, i64 }, ptr %a764 - store { ptr, i64, i64 } %t761, ptr %a767 - store { ptr, i64, i64 } %t765, ptr %a768 - call void @finch_str_concat(ptr %a766, ptr %a767, ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a766 - %t770 = load { ptr, i64, i64 }, ptr %a680 - store { ptr, i64, i64 } %t769, ptr %a772 - store { ptr, i64, i64 } %t770, ptr %a773 - call void @finch_str_concat(ptr %a771, ptr %a772, ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a771 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.4493, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a775 - %t779 = load i64, ptr %t733 - %t780 = add i64 %t779, 1 - call void @finch_arr_reserve(ptr %t732, i64 %t780, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t781 = load ptr, ptr %t732 - %t782 = getelementptr inbounds { ptr, i64, i64 }, ptr %t781, i64 %t779 - store { ptr, i64, i64 } %t778, ptr %t782 - store i64 %t780, ptr %t733 - br label %endif6989 -endif6989: - br label %endif6984 -endif6984: - store { ptr, i64, i64 } { ptr @.str.4494, i64 0, i64 0 }, ptr %a783 - %t784 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t785 = load i1, ptr %t784 - br i1 %t785, label %then6992, label %endif6994 -then6992: - %t786 = getelementptr inbounds { ptr, i64, i64 }, ptr %a154, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a787 - call void @finch_str_join(ptr %a788, ptr %a154, ptr %a787) - %t789 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4495, i64 2, i64 0 }, ptr %a791 - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_concat(ptr %a790, ptr %a791, ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a790 - %t794 = load { ptr, i64, i64 }, ptr %a680 - store { ptr, i64, i64 } %t793, ptr %a796 - store { ptr, i64, i64 } %t794, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a801 + store { ptr, i64, i64 } %t753, ptr %a754 + store { ptr, i64, i64 } { ptr @.str.4712, i64 6, i64 0 }, ptr %a755 + %t756 = call i32 @finch_str_eq(ptr %a754, ptr %a755) + %t757 = icmp ne i32 %t756, 0 + br i1 %t757, label %then7264, label %endif7266 +then7264: + %t758 = load ptr, ptr %a1 + %t759 = load %S.ast.Type, ptr %a192 + %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t758, %S.ast.Type %t759) + store { ptr, i64, i64 } %t760, ptr %a750 + br label %endif7266 +endif7266: + store { ptr, i64, i64 } { ptr @.str.4713, i64 0, i64 0 }, ptr %a761 + %t762 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t763 = load i1, ptr %t762 + br i1 %t763, label %then7267, label %endif7269 +then7267: + store { ptr, i64, i64 } { ptr @.str.4714, i64 5, i64 0 }, ptr %a761 + %t764 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + %t765 = load i64, ptr %t764 + %t766 = icmp eq i64 %t765, 0 + br i1 %t766, label %then7270, label %endif7272 +then7270: + store { ptr, i64, i64 } { ptr @.str.4715, i64 3, i64 0 }, ptr %a761 + br label %endif7272 +endif7272: + br label %endif7269 +endif7269: + %t767 = load ptr, ptr %a1 + %t768 = icmp eq ptr %t767, null + br i1 %t768, label %panic7273, label %ok7274 +panic7273: + call void @finch_panic(ptr @.str.4716, i64 4250, ptr @.str.4717) + unreachable +ok7274: + %t769 = getelementptr inbounds %S.gen.Gen, ptr %t767, i32 0, i32 38 + %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i32 0, i32 1 + %t771 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t772 = load { ptr, i64, i64 }, ptr %t771 + store { ptr, i64, i64 } { ptr @.str.4718, i64 2, i64 0 }, ptr %a774 + store { ptr, i64, i64 } %t772, ptr %a775 + call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) + %t776 = load { ptr, i64, i64 }, ptr %a773 + store i64 -1, ptr %a777 + %t778 = load i64, ptr %t770 + %t779 = load ptr, ptr %t769 + store i64 0, ptr %a780 + br label %find.cond7275 +find.cond7275: + %t781 = load i64, ptr %a780 + %t782 = icmp slt i64 %t781, %t778 + br i1 %t782, label %find.body7276, label %find.end7279 +find.body7276: + %t783 = getelementptr inbounds { ptr, i64, i64 }, ptr %t779, i64 %t781 + %t784 = load { ptr, i64, i64 }, ptr %t783 + store { ptr, i64, i64 } %t784, ptr %a785 + store { ptr, i64, i64 } %t776, ptr %a786 + %t787 = call i32 @finch_str_eq(ptr %a785, ptr %a786) + %t788 = icmp ne i32 %t787, 0 + br i1 %t788, label %find.hit7277, label %find.next7278 +find.hit7277: + store i64 %t781, ptr %a777 + br label %find.end7279 +find.next7278: + %t789 = add i64 %t781, 1 + store i64 %t789, ptr %a780 + br label %find.cond7275 +find.end7279: + %t790 = load i64, ptr %a777 + %t791 = icmp sge i64 %t790, 0 + %t792 = xor i1 %t791, true + br i1 %t792, label %then7280, label %endif7282 +then7280: + %t793 = load ptr, ptr %a1 + %t794 = icmp eq ptr %t793, null + br i1 %t794, label %panic7283, label %ok7284 +panic7283: + call void @finch_panic(ptr @.str.4719, i64 4251, ptr @.str.4720) + unreachable +ok7284: + %t795 = getelementptr inbounds %S.gen.Gen, ptr %t793, i32 0, i32 38 + %t796 = getelementptr inbounds { ptr, i64, i64 }, ptr %t795, i32 0, i32 1 + %t797 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t798 = load { ptr, i64, i64 }, ptr %t797 + store { ptr, i64, i64 } { ptr @.str.4721, i64 2, i64 0 }, ptr %a800 + store { ptr, i64, i64 } %t798, ptr %a801 call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) %t802 = load { ptr, i64, i64 }, ptr %a799 - store { ptr, i64, i64 } %t802, ptr %a783 - br label %endif6994 -endif6994: - %t803 = load { ptr, i64, i64 }, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.4498, i64 4, i64 0 }, ptr %a805 - store { ptr, i64, i64 } %t803, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - %t807 = load { ptr, i64, i64 }, ptr %a804 - store { ptr, i64, i64 } %t807, ptr %a809 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a810 - call void @finch_str_concat(ptr %a808, ptr %a809, ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a808 - %t812 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - %t816 = load { ptr, i64, i64 }, ptr %a813 - %t817 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t816, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - %t821 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t821, ptr %a823 - store { ptr, i64, i64 } { ptr @.str.4500, i64 2, i64 0 }, ptr %a824 - call void @finch_str_concat(ptr %a822, ptr %a823, ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a822 - %t826 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - %t831 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t831, ptr %a833 - store { ptr, i64, i64 } { ptr @.str.4501, i64 1, i64 0 }, ptr %a834 - call void @finch_str_concat(ptr %a832, ptr %a833, ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a832 - %t836 = getelementptr inbounds { ptr, i64, i64 }, ptr %a155, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4502, i64 2, i64 0 }, ptr %a837 - call void @finch_str_join(ptr %a838, ptr %a155, ptr %a837) - %t839 = load { ptr, i64, i64 }, ptr %a838 - store { ptr, i64, i64 } %t835, ptr %a841 - store { ptr, i64, i64 } %t839, ptr %a842 - call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842) - %t843 = load { ptr, i64, i64 }, ptr %a840 - store { ptr, i64, i64 } %t843, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.4503, i64 1, i64 0 }, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - %t847 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t847, ptr %a848 - %t849 = getelementptr inbounds %S.ast.Type, ptr %a111, i32 0, i32 0 - %t850 = load { ptr, i64, i64 }, ptr %t849 - store { ptr, i64, i64 } %t850, ptr %a851 - store { ptr, i64, i64 } { ptr @.str.4504, i64 4, i64 0 }, ptr %a852 - %t853 = call i32 @finch_str_eq(ptr %a851, ptr %a852) - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %then6995, label %endif6997 -then6995: - %t855 = load ptr, ptr %a1 - %t856 = load { ptr, i64, i64 }, ptr %a848 - call void @finch.gen.emit(ptr %t855, { ptr, i64, i64 } %t856) - %t857 = load %S.ast.Type, ptr %a111 - store %S.ast.Type %t857, ptr %a858 - call void @finch.copy.S_ast_Type(ptr %a859, ptr %a858) - %t860 = load %S.ast.Type, ptr %a859 - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - ret %S.gen.Val %t861 -endif6997: - %t862 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 3 - %t863 = load i1, ptr %t862 - br i1 %t863, label %then6998, label %endif7000 -then6998: - %t864 = load ptr, ptr %a1 - %t865 = load { ptr, i64, i64 }, ptr %a848 - call void @finch.gen.emit(ptr %t864, { ptr, i64, i64 } %t865) - %t866 = load ptr, ptr %a1 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a111 - %t869 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t867, %S.ast.Type %t868) - %t870 = load { ptr, i64, i64 }, ptr %a156 - %t871 = call { ptr, i64, i64 } @finch.gen.load(ptr %t866, { ptr, i64, i64 } %t869, { ptr, i64, i64 } %t870) - %t872 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t871, 0 - %t873 = load %S.ast.Type, ptr %a111 - store %S.ast.Type %t873, ptr %a874 - call void @finch.copy.S_ast_Type(ptr %a875, ptr %a874) - %t876 = load %S.ast.Type, ptr %a875 - %t877 = insertvalue %S.gen.Val %t872, %S.ast.Type %t876, 1 - ret %S.gen.Val %t877 -endif7000: - %t878 = load ptr, ptr %a1 - %t879 = load { ptr, i64, i64 }, ptr %a848 - %t880 = call { ptr, i64, i64 } @finch.gen.op(ptr %t878, { ptr, i64, i64 } %t879) - store { ptr, i64, i64 } %t880, ptr %a881 - %t882 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0 - %t883 = getelementptr inbounds %S.gen.Abi, ptr %t882, i32 0, i32 0 - %t884 = load { ptr, i64, i64 }, ptr %t883 - store { ptr, i64, i64 } %t884, ptr %a885 - store { ptr, i64, i64 } { ptr @.str.4505, i64 6, i64 0 }, ptr %a886 - %t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886) - %t888 = icmp ne i32 %t887, 0 - br i1 %t888, label %then7001, label %endif7003 -then7001: - %t889 = load ptr, ptr %a1 - %t890 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t889, { ptr, i64, i64 } { ptr @.str.4506, i64 9, i64 0 }) - store { ptr, i64, i64 } %t890, ptr %a891 - %t892 = load ptr, ptr %a1 - %t893 = getelementptr inbounds %S.gen.Plan, ptr %a153, i32 0, i32 0 - %t894 = getelementptr inbounds %S.gen.Abi, ptr %t893, i32 0, i32 2 - %t895 = load { ptr, i64, i64 }, ptr %t894 - %t896 = load { ptr, i64, i64 }, ptr %a881 - %t897 = load { ptr, i64, i64 }, ptr %a891 - call void @finch.gen.store(ptr %t892, { ptr, i64, i64 } %t895, { ptr, i64, i64 } %t896, { ptr, i64, i64 } %t897) - %t898 = load ptr, ptr %a1 - %t899 = load ptr, ptr %a1 - %t900 = load %S.ast.Type, ptr %a111 - %t901 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t899, %S.ast.Type %t900) - %t902 = load { ptr, i64, i64 }, ptr %a891 - %t903 = call { ptr, i64, i64 } @finch.gen.load(ptr %t898, { ptr, i64, i64 } %t901, { ptr, i64, i64 } %t902) - %t904 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t903, 0 - %t905 = load %S.ast.Type, ptr %a111 - store %S.ast.Type %t905, ptr %a906 - call void @finch.copy.S_ast_Type(ptr %a907, ptr %a906) - %t908 = load %S.ast.Type, ptr %a907 - %t909 = insertvalue %S.gen.Val %t904, %S.ast.Type %t908, 1 - ret %S.gen.Val %t909 -endif7003: - %t910 = getelementptr inbounds %S.ast.Type, ptr %a111, i32 0, i32 0 - %t911 = load { ptr, i64, i64 }, ptr %t910 - store { ptr, i64, i64 } %t911, ptr %a912 - store { ptr, i64, i64 } { ptr @.str.4507, i64 3, i64 0 }, ptr %a913 - %t914 = call i32 @finch_str_eq(ptr %a912, ptr %a913) - %t915 = icmp ne i32 %t914, 0 - br i1 %t915, label %then7004, label %endif7006 -then7004: - %t916 = load ptr, ptr %a1 - %t917 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t916) - store { ptr, i64, i64 } %t917, ptr %a918 - %t919 = load ptr, ptr %a1 - %t920 = load { ptr, i64, i64 }, ptr %a918 - call void @finch.gen.store(ptr %t919, { ptr, i64, i64 } { ptr @.str.4508, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4509, i64 15, i64 0 }, { ptr, i64, i64 } %t920) - %t921 = load ptr, ptr %a1 - %t922 = load { ptr, i64, i64 }, ptr %a918 - store { ptr, i64, i64 } { ptr @.str.4510, i64 32, i64 0 }, ptr %a924 - store { ptr, i64, i64 } %t922, ptr %a925 - call void @finch_str_concat(ptr %a923, ptr %a924, ptr %a925) - %t926 = load { ptr, i64, i64 }, ptr %a923 - store { ptr, i64, i64 } %t926, ptr %a928 - store { ptr, i64, i64 } { ptr @.str.4511, i64 6, i64 0 }, ptr %a929 - call void @finch_str_concat(ptr %a927, ptr %a928, ptr %a929) - %t930 = load { ptr, i64, i64 }, ptr %a927 - %t931 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t930, ptr %a933 - store { ptr, i64, i64 } %t931, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - %t935 = load { ptr, i64, i64 }, ptr %a932 - store { ptr, i64, i64 } %t935, ptr %a937 - store { ptr, i64, i64 } { ptr @.str.4512, i64 1, i64 0 }, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - call void @finch.gen.emit(ptr %t921, { ptr, i64, i64 } %t939) - %t940 = load ptr, ptr %a1 - %t941 = load { ptr, i64, i64 }, ptr %a918 - %t942 = call { ptr, i64, i64 } @finch.gen.load(ptr %t940, { ptr, i64, i64 } { ptr @.str.4513, i64 17, i64 0 }, { ptr, i64, i64 } %t941) - %t943 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t942, 0 - %t944 = load %S.ast.Type, ptr %a111 - store %S.ast.Type %t944, ptr %a945 - call void @finch.copy.S_ast_Type(ptr %a946, ptr %a945) - %t947 = load %S.ast.Type, ptr %a946 - %t948 = insertvalue %S.gen.Val %t943, %S.ast.Type %t947, 1 - ret %S.gen.Val %t948 -endif7006: - %t949 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t949, ptr %a950 - call void @finch_str_copy(ptr %a951, ptr %a950) - %t952 = load { ptr, i64, i64 }, ptr %a951 + %t803 = load i64, ptr %t796 + %t804 = add i64 %t803, 1 + call void @finch_arr_reserve(ptr %t795, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t805 = load ptr, ptr %t795 + %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 + store { ptr, i64, i64 } %t802, ptr %t806 + store i64 %t804, ptr %t796 + %t807 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t808 = load { ptr, i64, i64 }, ptr %t807 + %t809 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t808) + %t810 = xor i1 %t809, true + br i1 %t810, label %then7285, label %endif7287 +then7285: + %t811 = load ptr, ptr %a1 + %t812 = icmp eq ptr %t811, null + br i1 %t812, label %panic7288, label %ok7289 +panic7288: + call void @finch_panic(ptr @.str.4722, i64 4253, ptr @.str.4723) + unreachable +ok7289: + %t813 = getelementptr inbounds %S.gen.Gen, ptr %t811, i32 0, i32 2 + %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %t813, i32 0, i32 1 + %t815 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.4724, i64 7, i64 0 }, ptr %a817 + store { ptr, i64, i64 } %t815, ptr %a818 + call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) + %t819 = load { ptr, i64, i64 }, ptr %a816 + store { ptr, i64, i64 } %t819, ptr %a821 + store { ptr, i64, i64 } { ptr @.str.4725, i64 1, i64 0 }, ptr %a822 + call void @finch_str_concat(ptr %a820, ptr %a821, ptr %a822) + %t823 = load { ptr, i64, i64 }, ptr %a820 + %t824 = load { ptr, i64, i64 }, ptr %a749 + store { ptr, i64, i64 } %t823, ptr %a826 + store { ptr, i64, i64 } %t824, ptr %a827 + call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) + %t828 = load { ptr, i64, i64 }, ptr %a825 + store { ptr, i64, i64 } %t828, ptr %a830 + store { ptr, i64, i64 } { ptr @.str.4726, i64 2, i64 0 }, ptr %a831 + call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) + %t832 = load { ptr, i64, i64 }, ptr %a829 + %t833 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t834 = load { ptr, i64, i64 }, ptr %t833 + store { ptr, i64, i64 } %t832, ptr %a836 + store { ptr, i64, i64 } %t834, ptr %a837 + call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) + %t838 = load { ptr, i64, i64 }, ptr %a835 + store { ptr, i64, i64 } %t838, ptr %a840 + store { ptr, i64, i64 } { ptr @.str.4727, i64 1, i64 0 }, ptr %a841 + call void @finch_str_concat(ptr %a839, ptr %a840, ptr %a841) + %t842 = load { ptr, i64, i64 }, ptr %a839 + %t843 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4728, i64 2, i64 0 }, ptr %a844 + call void @finch_str_join(ptr %a845, ptr %a235, ptr %a844) + %t846 = load { ptr, i64, i64 }, ptr %a845 + store { ptr, i64, i64 } %t842, ptr %a848 + store { ptr, i64, i64 } %t846, ptr %a849 + call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) + %t850 = load { ptr, i64, i64 }, ptr %a847 + %t851 = load { ptr, i64, i64 }, ptr %a761 + store { ptr, i64, i64 } %t850, ptr %a853 + store { ptr, i64, i64 } %t851, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a852 + store { ptr, i64, i64 } %t855, ptr %a857 + store { ptr, i64, i64 } { ptr @.str.4729, i64 1, i64 0 }, ptr %a858 + call void @finch_str_concat(ptr %a856, ptr %a857, ptr %a858) + %t859 = load { ptr, i64, i64 }, ptr %a856 + %t860 = load i64, ptr %t814 + %t861 = add i64 %t860, 1 + call void @finch_arr_reserve(ptr %t813, i64 %t861, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t862 = load ptr, ptr %t813 + %t863 = getelementptr inbounds { ptr, i64, i64 }, ptr %t862, i64 %t860 + store { ptr, i64, i64 } %t859, ptr %t863 + store i64 %t861, ptr %t814 + br label %endif7287 +endif7287: + br label %endif7282 +endif7282: + store { ptr, i64, i64 } { ptr @.str.4730, i64 0, i64 0 }, ptr %a864 + %t865 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 + %t866 = load i1, ptr %t865 + br i1 %t866, label %then7290, label %endif7292 +then7290: + %t867 = getelementptr inbounds { ptr, i64, i64 }, ptr %a235, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4732, i64 2, i64 0 }, ptr %a868 + call void @finch_str_join(ptr %a869, ptr %a235, ptr %a868) + %t870 = load { ptr, i64, i64 }, ptr %a869 + store { ptr, i64, i64 } { ptr @.str.4731, i64 2, i64 0 }, ptr %a872 + store { ptr, i64, i64 } %t870, ptr %a873 + call void @finch_str_concat(ptr %a871, ptr %a872, ptr %a873) + %t874 = load { ptr, i64, i64 }, ptr %a871 + %t875 = load { ptr, i64, i64 }, ptr %a761 + store { ptr, i64, i64 } %t874, ptr %a877 + store { ptr, i64, i64 } %t875, ptr %a878 + call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) + %t879 = load { ptr, i64, i64 }, ptr %a876 + store { ptr, i64, i64 } %t879, ptr %a881 + store { ptr, i64, i64 } { ptr @.str.4733, i64 1, i64 0 }, ptr %a882 + call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) + %t883 = load { ptr, i64, i64 }, ptr %a880 + store { ptr, i64, i64 } %t883, ptr %a864 + br label %endif7292 +endif7292: + %t884 = load { ptr, i64, i64 }, ptr %a750 + store { ptr, i64, i64 } { ptr @.str.4734, i64 4, i64 0 }, ptr %a886 + store { ptr, i64, i64 } %t884, ptr %a887 + call void @finch_str_concat(ptr %a885, ptr %a886, ptr %a887) + %t888 = load { ptr, i64, i64 }, ptr %a885 + store { ptr, i64, i64 } %t888, ptr %a890 + store { ptr, i64, i64 } { ptr @.str.4735, i64 1, i64 0 }, ptr %a891 + call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) + %t892 = load { ptr, i64, i64 }, ptr %a889 + %t893 = load { ptr, i64, i64 }, ptr %a749 + store { ptr, i64, i64 } %t892, ptr %a895 + store { ptr, i64, i64 } %t893, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + %t897 = load { ptr, i64, i64 }, ptr %a894 + %t898 = load { ptr, i64, i64 }, ptr %a864 + store { ptr, i64, i64 } %t897, ptr %a900 + store { ptr, i64, i64 } %t898, ptr %a901 + call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) + %t902 = load { ptr, i64, i64 }, ptr %a899 + store { ptr, i64, i64 } %t902, ptr %a904 + store { ptr, i64, i64 } { ptr @.str.4736, i64 2, i64 0 }, ptr %a905 + call void @finch_str_concat(ptr %a903, ptr %a904, ptr %a905) + %t906 = load { ptr, i64, i64 }, ptr %a903 + %t907 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 + %t908 = load { ptr, i64, i64 }, ptr %t907 + store { ptr, i64, i64 } %t906, ptr %a910 + store { ptr, i64, i64 } %t908, ptr %a911 + call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) + %t912 = load { ptr, i64, i64 }, ptr %a909 + store { ptr, i64, i64 } %t912, ptr %a914 + store { ptr, i64, i64 } { ptr @.str.4737, i64 1, i64 0 }, ptr %a915 + call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) + %t916 = load { ptr, i64, i64 }, ptr %a913 + %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %a236, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4738, i64 2, i64 0 }, ptr %a918 + call void @finch_str_join(ptr %a919, ptr %a236, ptr %a918) + %t920 = load { ptr, i64, i64 }, ptr %a919 + store { ptr, i64, i64 } %t916, ptr %a922 + store { ptr, i64, i64 } %t920, ptr %a923 + call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) + %t924 = load { ptr, i64, i64 }, ptr %a921 + store { ptr, i64, i64 } %t924, ptr %a926 + store { ptr, i64, i64 } { ptr @.str.4739, i64 1, i64 0 }, ptr %a927 + call void @finch_str_concat(ptr %a925, ptr %a926, ptr %a927) + %t928 = load { ptr, i64, i64 }, ptr %a925 + store { ptr, i64, i64 } %t928, ptr %a929 + %t930 = getelementptr inbounds %S.ast.Type, ptr %a192, i32 0, i32 0 + %t931 = load { ptr, i64, i64 }, ptr %t930 + store { ptr, i64, i64 } %t931, ptr %a932 + store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a933 + %t934 = call i32 @finch_str_eq(ptr %a932, ptr %a933) + %t935 = icmp ne i32 %t934, 0 + br i1 %t935, label %then7293, label %endif7295 +then7293: + %t936 = load ptr, ptr %a1 + %t937 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.emit(ptr %t936, { ptr, i64, i64 } %t937) + %t938 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t938, ptr %a939 + call void @finch.copy.S_ast_Type(ptr %a940, ptr %a939) + %t941 = load %S.ast.Type, ptr %a940 + %t942 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t941, 1 + ret %S.gen.Val %t942 +endif7295: + %t943 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 3 + %t944 = load i1, ptr %t943 + br i1 %t944, label %then7296, label %endif7298 +then7296: + %t945 = load ptr, ptr %a1 + %t946 = load { ptr, i64, i64 }, ptr %a929 + call void @finch.gen.emit(ptr %t945, { ptr, i64, i64 } %t946) + %t947 = load ptr, ptr %a1 + %t948 = load ptr, ptr %a1 + %t949 = load %S.ast.Type, ptr %a192 + %t950 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t948, %S.ast.Type %t949) + %t951 = load { ptr, i64, i64 }, ptr %a237 + %t952 = call { ptr, i64, i64 } @finch.gen.load(ptr %t947, { ptr, i64, i64 } %t950, { ptr, i64, i64 } %t951) %t953 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t952, 0 - %t954 = load %S.ast.Type, ptr %a111 + %t954 = load %S.ast.Type, ptr %a192 store %S.ast.Type %t954, ptr %a955 call void @finch.copy.S_ast_Type(ptr %a956, ptr %a955) %t957 = load %S.ast.Type, ptr %a956 %t958 = insertvalue %S.gen.Val %t953, %S.ast.Type %t957, 1 ret %S.gen.Val %t958 +endif7298: + %t959 = load ptr, ptr %a1 + %t960 = load { ptr, i64, i64 }, ptr %a929 + %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t959, { ptr, i64, i64 } %t960) + store { ptr, i64, i64 } %t961, ptr %a962 + %t963 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 0 + %t964 = getelementptr inbounds %S.gen.Abi, ptr %t963, i32 0, i32 0 + %t965 = load { ptr, i64, i64 }, ptr %t964 + store { ptr, i64, i64 } %t965, ptr %a966 + store { ptr, i64, i64 } { ptr @.str.4741, i64 6, i64 0 }, ptr %a967 + %t968 = call i32 @finch_str_eq(ptr %a966, ptr %a967) + %t969 = icmp ne i32 %t968, 0 + br i1 %t969, label %then7299, label %endif7301 +then7299: + %t970 = load ptr, ptr %a1 + %t971 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t970, { ptr, i64, i64 } { ptr @.str.4742, i64 9, i64 0 }) + store { ptr, i64, i64 } %t971, ptr %a972 + %t973 = load ptr, ptr %a1 + %t974 = getelementptr inbounds %S.gen.Plan, ptr %a234, i32 0, i32 0 + %t975 = getelementptr inbounds %S.gen.Abi, ptr %t974, i32 0, i32 2 + %t976 = load { ptr, i64, i64 }, ptr %t975 + %t977 = load { ptr, i64, i64 }, ptr %a962 + %t978 = load { ptr, i64, i64 }, ptr %a972 + call void @finch.gen.store(ptr %t973, { ptr, i64, i64 } %t976, { ptr, i64, i64 } %t977, { ptr, i64, i64 } %t978) + %t979 = load ptr, ptr %a1 + %t980 = load ptr, ptr %a1 + %t981 = load %S.ast.Type, ptr %a192 + %t982 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t980, %S.ast.Type %t981) + %t983 = load { ptr, i64, i64 }, ptr %a972 + %t984 = call { ptr, i64, i64 } @finch.gen.load(ptr %t979, { ptr, i64, i64 } %t982, { ptr, i64, i64 } %t983) + %t985 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t984, 0 + %t986 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t986, ptr %a987 + call void @finch.copy.S_ast_Type(ptr %a988, ptr %a987) + %t989 = load %S.ast.Type, ptr %a988 + %t990 = insertvalue %S.gen.Val %t985, %S.ast.Type %t989, 1 + ret %S.gen.Val %t990 +endif7301: + %t991 = getelementptr inbounds %S.ast.Type, ptr %a192, i32 0, i32 0 + %t992 = load { ptr, i64, i64 }, ptr %t991 + store { ptr, i64, i64 } %t992, ptr %a993 + store { ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }, ptr %a994 + %t995 = call i32 @finch_str_eq(ptr %a993, ptr %a994) + %t996 = icmp ne i32 %t995, 0 + br i1 %t996, label %then7302, label %endif7304 +then7302: + %t997 = load ptr, ptr %a1 + %t998 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t997) + store { ptr, i64, i64 } %t998, ptr %a999 + %t1000 = load ptr, ptr %a1 + %t1001 = load { ptr, i64, i64 }, ptr %a999 + call void @finch.gen.store(ptr %t1000, { ptr, i64, i64 } { ptr @.str.4744, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4745, i64 15, i64 0 }, { ptr, i64, i64 } %t1001) + %t1002 = load ptr, ptr %a1 + %t1003 = load { ptr, i64, i64 }, ptr %a999 + store { ptr, i64, i64 } { ptr @.str.4746, i64 32, i64 0 }, ptr %a1005 + store { ptr, i64, i64 } %t1003, ptr %a1006 + call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) + %t1007 = load { ptr, i64, i64 }, ptr %a1004 + store { ptr, i64, i64 } %t1007, ptr %a1009 + store { ptr, i64, i64 } { ptr @.str.4747, i64 6, i64 0 }, ptr %a1010 + call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) + %t1011 = load { ptr, i64, i64 }, ptr %a1008 + %t1012 = load { ptr, i64, i64 }, ptr %a962 + store { ptr, i64, i64 } %t1011, ptr %a1014 + store { ptr, i64, i64 } %t1012, ptr %a1015 + call void @finch_str_concat(ptr %a1013, ptr %a1014, ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1013 + store { ptr, i64, i64 } %t1016, ptr %a1018 + store { ptr, i64, i64 } { ptr @.str.4748, i64 1, i64 0 }, ptr %a1019 + call void @finch_str_concat(ptr %a1017, ptr %a1018, ptr %a1019) + %t1020 = load { ptr, i64, i64 }, ptr %a1017 + call void @finch.gen.emit(ptr %t1002, { ptr, i64, i64 } %t1020) + %t1021 = load ptr, ptr %a1 + %t1022 = load { ptr, i64, i64 }, ptr %a999 + %t1023 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1021, { ptr, i64, i64 } { ptr @.str.4749, i64 17, i64 0 }, { ptr, i64, i64 } %t1022) + %t1024 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1023, 0 + %t1025 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t1025, ptr %a1026 + call void @finch.copy.S_ast_Type(ptr %a1027, ptr %a1026) + %t1028 = load %S.ast.Type, ptr %a1027 + %t1029 = insertvalue %S.gen.Val %t1024, %S.ast.Type %t1028, 1 + ret %S.gen.Val %t1029 +endif7304: + %t1030 = load { ptr, i64, i64 }, ptr %a962 + store { ptr, i64, i64 } %t1030, ptr %a1031 + call void @finch_str_copy(ptr %a1032, ptr %a1031) + %t1033 = load { ptr, i64, i64 }, ptr %a1032 + %t1034 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1033, 0 + %t1035 = load %S.ast.Type, ptr %a192 + store %S.ast.Type %t1035, ptr %a1036 + call void @finch.copy.S_ast_Type(ptr %a1037, ptr %a1036) + %t1038 = load %S.ast.Type, ptr %a1037 + %t1039 = insertvalue %S.gen.Val %t1034, %S.ast.Type %t1038, 1 + ret %S.gen.Val %t1039 } define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { @@ -61695,15 +65799,15 @@ entry: %t2 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.4514, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4750, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4515, i64 6, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4751, i64 6, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4516, i64 4, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4752, i64 4, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4517, i64 4, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4753, i64 4, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4518, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4754, i64 5, i64 0 }, ptr %t8 %t9 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t10 = insertvalue { ptr, i64, i64 } %t9, i64 5, 1 %t11 = insertvalue { ptr, i64, i64 } %t10, i64 5, 2 @@ -61714,27 +65818,27 @@ entry: %t16 = load i64, ptr %t13 %t17 = load ptr, ptr %a12 store i64 0, ptr %a18 - br label %find.cond7007 -find.cond7007: + br label %find.cond7305 +find.cond7305: %t19 = load i64, ptr %a18 %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body7008, label %find.end7011 -find.body7008: + br i1 %t20, label %find.body7306, label %find.end7309 +find.body7306: %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i64 %t19 %t22 = load { ptr, i64, i64 }, ptr %t21 store { ptr, i64, i64 } %t22, ptr %a23 store { ptr, i64, i64 } %t14, ptr %a24 %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %find.hit7009, label %find.next7010 -find.hit7009: + br i1 %t26, label %find.hit7307, label %find.next7308 +find.hit7307: store i64 %t19, ptr %a15 - br label %find.end7011 -find.next7010: + br label %find.end7309 +find.next7308: %t27 = add i64 %t19, 1 store i64 %t27, ptr %a18 - br label %find.cond7007 -find.end7011: + br label %find.cond7305 +find.end7309: %t28 = load i64, ptr %a15 %t29 = icmp sge i64 %t28, 0 ret i1 %t29 @@ -61760,51 +65864,51 @@ entry: %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t3 = call ptr @finch_alloc(i64 %t2) %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.4519, i64 6, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.4755, i64 6, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.4520, i64 4, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.4756, i64 4, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.4521, i64 7, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.4757, i64 7, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.4758, i64 5, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.4523, i64 5, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.4759, i64 5, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.4524, i64 7, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.4760, i64 7, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.4525, i64 4, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.4761, i64 4, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.4526, i64 3, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.4762, i64 3, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.4763, i64 3, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.4528, i64 3, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.4764, i64 3, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.4529, i64 5, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.4765, i64 5, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.4530, i64 4, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.4766, i64 4, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.4531, i64 6, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.4767, i64 6, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.4532, i64 4, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.4768, i64 4, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.4533, i64 5, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.4769, i64 5, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.4534, i64 3, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.4770, i64 3, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.4535, i64 4, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.4771, i64 4, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.4536, i64 6, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.4772, i64 6, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.4537, i64 6, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.4773, i64 6, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.4538, i64 6, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.4774, i64 6, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.4539, i64 4, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.4775, i64 4, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.4540, i64 5, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.4776, i64 5, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.4541, i64 6, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.4777, i64 6, i64 0 }, ptr %t26 %t27 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 %t28 = insertvalue { ptr, i64, i64 } %t27, i64 23, 1 %t29 = insertvalue { ptr, i64, i64 } %t28, i64 23, 2 @@ -61812,51 +65916,51 @@ entry: %t31 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t32 = call ptr @finch_alloc(i64 %t31) %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 0 - store { ptr, i64, i64 } { ptr @.str.4542, i64 7, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.4778, i64 7, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.4543, i64 7, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.4779, i64 7, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.4544, i64 7, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.4780, i64 7, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.4545, i64 7, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.4781, i64 7, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.4546, i64 7, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.4782, i64 7, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.4547, i64 7, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.4783, i64 7, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.4548, i64 6, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.4784, i64 6, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.4549, i64 6, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.4785, i64 6, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.4550, i64 6, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.4786, i64 6, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.4551, i64 6, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.4787, i64 6, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.4552, i64 6, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.4553, i64 6, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.4789, i64 6, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.4554, i64 8, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.4790, i64 8, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.4555, i64 8, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.4791, i64 8, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.4556, i64 8, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.4792, i64 8, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.4557, i64 8, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.4793, i64 8, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.4558, i64 8, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.4794, i64 8, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.4559, i64 8, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.4795, i64 8, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.4560, i64 8, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.4796, i64 8, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.4561, i64 8, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.4797, i64 8, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.4562, i64 6, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.4798, i64 6, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.4563, i64 8, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.4799, i64 8, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.4564, i64 8, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.4800, i64 8, i64 0 }, ptr %t55 %t56 = insertvalue { ptr, i64, i64 } undef, ptr %t32, 0 %t57 = insertvalue { ptr, i64, i64 } %t56, i64 23, 1 %t58 = insertvalue { ptr, i64, i64 } %t57, i64 23, 2 @@ -61867,53 +65971,53 @@ entry: %t63 = load i64, ptr %t60 %t64 = load ptr, ptr %a30 store i64 0, ptr %a65 - br label %find.cond7012 -find.cond7012: + br label %find.cond7310 +find.cond7310: %t66 = load i64, ptr %a65 %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body7013, label %find.end7016 -find.body7013: + br i1 %t67, label %find.body7311, label %find.end7314 +find.body7311: %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t66 %t69 = load { ptr, i64, i64 }, ptr %t68 store { ptr, i64, i64 } %t69, ptr %a70 store { ptr, i64, i64 } %t61, ptr %a71 %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %find.hit7014, label %find.next7015 -find.hit7014: + br i1 %t73, label %find.hit7312, label %find.next7313 +find.hit7312: store i64 %t66, ptr %a62 - br label %find.end7016 -find.next7015: + br label %find.end7314 +find.next7313: %t74 = add i64 %t66, 1 store i64 %t74, ptr %a65 - br label %find.cond7012 -find.end7016: + br label %find.cond7310 +find.end7314: %t75 = load i64, ptr %a62 store i64 %t75, ptr %a76 %t77 = load i64, ptr %a76 %t78 = icmp slt i64 %t77, 0 - br i1 %t78, label %then7017, label %endif7019 -then7017: - ret { ptr, i64, i64 } { ptr @.str.4565, i64 0, i64 0 } -endif7019: + br i1 %t78, label %then7315, label %endif7317 +then7315: + ret { ptr, i64, i64 } { ptr @.str.4801, i64 0, i64 0 } +endif7317: %t79 = load i64, ptr %a76 %t80 = load { ptr, i64, i64 }, ptr %a59 %t81 = extractvalue { ptr, i64, i64 } %t80, 1 %t82 = icmp uge i64 %t79, %t81 - br i1 %t82, label %range7020, label %inrange7021 -range7020: - call void @finch_panic_index(ptr @.str.4567, i64 4161, i64 %t79, i64 %t81) + br i1 %t82, label %range7318, label %inrange7319 +range7318: + call void @finch_panic_index(ptr @.str.4803, i64 4299, i64 %t79, i64 %t81) unreachable -inrange7021: +inrange7319: %t83 = extractvalue { ptr, i64, i64 } %t80, 0 %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t79 %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.4566, i64 28, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.4802, i64 28, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.4568, i64 14, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.4804, i64 14, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 ret { ptr, i64, i64 } %t93 @@ -61926,464 +66030,485 @@ entry: %a5 = alloca { ptr, i64, i64 }, align 16 %a6 = alloca { ptr, i64, i64 }, align 16 %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a37 = alloca %S.gen.Val, align 16 + %a19 = alloca %S.docs.Doc, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca %S.ast.Node, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca i64, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.gen.Place, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca i64, align 16 + %a60 = alloca %S.gen.Val, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca %S.ast.Node, align 16 + %a106 = alloca %S.ast.Node, align 16 + %a108 = alloca %S.ast.Node, align 16 + %a111 = alloca { ptr, i64, i64 }, align 16 + %a112 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca i64, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 %a154 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.gen.Val, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca %S.gen.Place, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 %a176 = alloca { ptr, i64, i64 }, align 16 %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.ast.Type, align 16 - %a195 = alloca %S.ast.Type, align 16 + %a192 = alloca %S.gen.Val, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 %a204 = alloca { ptr, i64, i64 }, align 16 %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 + %a217 = alloca %S.ast.Type, align 16 + %a218 = alloca %S.ast.Type, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 %a232 = alloca { ptr, i64, i64 }, align 16 %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a243 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 %a247 = alloca { ptr, i64, i64 }, align 16 %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 %a260 = alloca { ptr, i64, i64 }, align 16 %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a272 = alloca { ptr, i64, i64 }, align 16 + %a274 = alloca { ptr, i64, i64 }, align 16 %a275 = alloca { ptr, i64, i64 }, align 16 %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 + %a283 = alloca { ptr, i64, i64 }, align 16 %a284 = alloca { ptr, i64, i64 }, align 16 %a285 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 %a302 = alloca { ptr, i64, i64 }, align 16 + %a303 = alloca { ptr, i64, i64 }, align 16 %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 %a317 = alloca { ptr, i64, i64 }, align 16 %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 %a325 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 %a328 = alloca { ptr, i64, i64 }, align 16 %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 %a332 = alloca { ptr, i64, i64 }, align 16 %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 %a343 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a348 = alloca { ptr, i64, i64 }, align 16 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 %a355 = alloca { ptr, i64, i64 }, align 16 %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca { ptr, i64, i64 }, align 16 %a360 = alloca { ptr, i64, i64 }, align 16 + %a361 = alloca { ptr, i64, i64 }, align 16 + %a362 = alloca { ptr, i64, i64 }, align 16 %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 %a366 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 %a369 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 + %a377 = alloca { ptr, i64, i64 }, align 16 + %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 + %a382 = alloca { ptr, i64, i64 }, align 16 + %a383 = alloca { ptr, i64, i64 }, align 16 %a387 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 + %a388 = alloca { ptr, i64, i64 }, align 16 + %a389 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a393 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a409 = alloca { ptr, i64, i64 }, align 16 %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 + %a436 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca { ptr, i64, i64 }, align 16 %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 %a452 = alloca { ptr, i64, i64 }, align 16 %a453 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 + %a463 = alloca { ptr, i64, i64 }, align 16 + %a464 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a470 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a476 = alloca { ptr, i64, i64 }, align 16 + %a481 = alloca { ptr, i64, i64 }, align 16 %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a507 = alloca { ptr, i64, i64 }, align 16 %a509 = alloca { ptr, i64, i64 }, align 16 %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a532 = alloca { ptr, i64, i64 }, align 16 %a533 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 + %a537 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca { ptr, i64, i64 }, align 16 + %a556 = alloca { ptr, i64, i64 }, align 16 %a558 = alloca { ptr, i64, i64 }, align 16 %a559 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 + %a564 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca { ptr, i64, i64 }, align 16 + %a566 = alloca { ptr, i64, i64 }, align 16 + %a568 = alloca { ptr, i64, i64 }, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a570 = alloca { ptr, i64, i64 }, align 16 + %a573 = alloca { ptr, i64, i64 }, align 16 + %a576 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca { ptr, i64, i64 }, align 16 %a580 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 + %a581 = alloca { ptr, i64, i64 }, align 16 + %a582 = alloca { ptr, i64, i64 }, align 16 + %a590 = alloca { ptr, i64, i64 }, align 16 %a597 = alloca { ptr, i64, i64 }, align 16 %a598 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 + %a603 = alloca { ptr, i64, i64 }, align 16 %a610 = alloca { ptr, i64, i64 }, align 16 %a611 = alloca { ptr, i64, i64 }, align 16 + %a612 = alloca { ptr, i64, i64 }, align 16 %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 + %a615 = alloca { ptr, i64, i64 }, align 16 + %a616 = alloca { ptr, i64, i64 }, align 16 %a619 = alloca { ptr, i64, i64 }, align 16 + %a620 = alloca { ptr, i64, i64 }, align 16 %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 %a623 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 + %a625 = alloca { ptr, i64, i64 }, align 16 + %a628 = alloca { ptr, i64, i64 }, align 16 + %a629 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 + %a632 = alloca { ptr, i64, i64 }, align 16 + %a633 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 + %a637 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 + %a644 = alloca { ptr, i64, i64 }, align 16 + %a645 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 %a678 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 %a681 = alloca { ptr, i64, i64 }, align 16 %a682 = alloca { ptr, i64, i64 }, align 16 + %a683 = alloca { ptr, i64, i64 }, align 16 + %a685 = alloca { ptr, i64, i64 }, align 16 %a686 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 + %a687 = alloca { ptr, i64, i64 }, align 16 %a690 = alloca { ptr, i64, i64 }, align 16 + %a691 = alloca { ptr, i64, i64 }, align 16 %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 %a694 = alloca { ptr, i64, i64 }, align 16 + %a695 = alloca { ptr, i64, i64 }, align 16 + %a696 = alloca { ptr, i64, i64 }, align 16 + %a699 = alloca { ptr, i64, i64 }, align 16 + %a700 = alloca { ptr, i64, i64 }, align 16 + %a701 = alloca { ptr, i64, i64 }, align 16 + %a703 = alloca { ptr, i64, i64 }, align 16 %a704 = alloca { ptr, i64, i64 }, align 16 %a705 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 + %a709 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a713 = alloca { ptr, i64, i64 }, align 16 + %a715 = alloca { ptr, i64, i64 }, align 16 + %a716 = alloca { ptr, i64, i64 }, align 16 + %a717 = alloca { ptr, i64, i64 }, align 16 + %a727 = alloca { ptr, i64, i64 }, align 16 + %a728 = alloca { ptr, i64, i64 }, align 16 + %a745 = alloca { ptr, i64, i64 }, align 16 %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 + %a764 = alloca { ptr, i64, i64 }, align 16 %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 %a775 = alloca { ptr, i64, i64 }, align 16 %a776 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca { ptr, i64, i64 }, align 16 %a779 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 + %a780 = alloca { ptr, i64, i64 }, align 16 + %a781 = alloca { ptr, i64, i64 }, align 16 %a784 = alloca { ptr, i64, i64 }, align 16 + %a785 = alloca { ptr, i64, i64 }, align 16 %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 %a788 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 + %a789 = alloca { ptr, i64, i64 }, align 16 + %a790 = alloca { ptr, i64, i64 }, align 16 + %a793 = alloca { ptr, i64, i64 }, align 16 + %a794 = alloca { ptr, i64, i64 }, align 16 + %a795 = alloca { ptr, i64, i64 }, align 16 + %a797 = alloca { ptr, i64, i64 }, align 16 + %a798 = alloca { ptr, i64, i64 }, align 16 + %a799 = alloca { ptr, i64, i64 }, align 16 + %a802 = alloca { ptr, i64, i64 }, align 16 %a805 = alloca { ptr, i64, i64 }, align 16 %a806 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 + %a807 = alloca { ptr, i64, i64 }, align 16 %a809 = alloca { ptr, i64, i64 }, align 16 %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 + %a811 = alloca { ptr, i64, i64 }, align 16 %a827 = alloca { ptr, i64, i64 }, align 16 + %a828 = alloca { ptr, i64, i64 }, align 16 %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 %a831 = alloca { ptr, i64, i64 }, align 16 + %a832 = alloca { ptr, i64, i64 }, align 16 + %a833 = alloca { ptr, i64, i64 }, align 16 + %a836 = alloca { ptr, i64, i64 }, align 16 + %a837 = alloca { ptr, i64, i64 }, align 16 %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca %S.gen.Val, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 + %a840 = alloca { ptr, i64, i64 }, align 16 + %a841 = alloca { ptr, i64, i64 }, align 16 + %a842 = alloca { ptr, i64, i64 }, align 16 + %a845 = alloca { ptr, i64, i64 }, align 16 + %a848 = alloca { ptr, i64, i64 }, align 16 + %a849 = alloca { ptr, i64, i64 }, align 16 + %a850 = alloca { ptr, i64, i64 }, align 16 + %a852 = alloca { ptr, i64, i64 }, align 16 + %a853 = alloca { ptr, i64, i64 }, align 16 + %a854 = alloca { ptr, i64, i64 }, align 16 %a861 = alloca { ptr, i64, i64 }, align 16 %a862 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 + %a877 = alloca %S.gen.Val, align 16 + %a880 = alloca { ptr, i64, i64 }, align 16 + %a883 = alloca { ptr, i64, i64 }, align 16 + %a884 = alloca { ptr, i64, i64 }, align 16 %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 + %a887 = alloca { ptr, i64, i64 }, align 16 + %a888 = alloca { ptr, i64, i64 }, align 16 + %a889 = alloca { ptr, i64, i64 }, align 16 + %a894 = alloca { ptr, i64, i64 }, align 16 + %a895 = alloca { ptr, i64, i64 }, align 16 %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 %a898 = alloca { ptr, i64, i64 }, align 16 + %a899 = alloca { ptr, i64, i64 }, align 16 %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 + %a908 = alloca { ptr, i64, i64 }, align 16 %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 %a914 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca { ptr, i64, i64 }, align 16 - %a918 = alloca { ptr, i64, i64 }, align 16 %a919 = alloca { ptr, i64, i64 }, align 16 + %a920 = alloca { ptr, i64, i64 }, align 16 %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 %a923 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 + %a924 = alloca { ptr, i64, i64 }, align 16 + %a925 = alloca { ptr, i64, i64 }, align 16 + %a928 = alloca { ptr, i64, i64 }, align 16 + %a929 = alloca { ptr, i64, i64 }, align 16 + %a930 = alloca { ptr, i64, i64 }, align 16 + %a932 = alloca { ptr, i64, i64 }, align 16 + %a933 = alloca { ptr, i64, i64 }, align 16 + %a934 = alloca { ptr, i64, i64 }, align 16 + %a937 = alloca { ptr, i64, i64 }, align 16 %a940 = alloca { ptr, i64, i64 }, align 16 %a941 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 + %a942 = alloca { ptr, i64, i64 }, align 16 %a944 = alloca { ptr, i64, i64 }, align 16 %a945 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 + %a946 = alloca { ptr, i64, i64 }, align 16 + %a962 = alloca { ptr, i64, i64 }, align 16 + %a963 = alloca { ptr, i64, i64 }, align 16 %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca %S.gen.Val, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 + %a966 = alloca { ptr, i64, i64 }, align 16 + %a967 = alloca { ptr, i64, i64 }, align 16 + %a968 = alloca { ptr, i64, i64 }, align 16 + %a971 = alloca { ptr, i64, i64 }, align 16 + %a974 = alloca { ptr, i64, i64 }, align 16 + %a975 = alloca { ptr, i64, i64 }, align 16 + %a976 = alloca { ptr, i64, i64 }, align 16 + %a978 = alloca { ptr, i64, i64 }, align 16 + %a979 = alloca { ptr, i64, i64 }, align 16 + %a980 = alloca { ptr, i64, i64 }, align 16 %a987 = alloca { ptr, i64, i64 }, align 16 %a988 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 + %a1003 = alloca %S.gen.Val, align 16 + %a1006 = alloca { ptr, i64, i64 }, align 16 %a1009 = alloca { ptr, i64, i64 }, align 16 + %a1010 = alloca { ptr, i64, i64 }, align 16 %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 %a1013 = alloca { ptr, i64, i64 }, align 16 + %a1014 = alloca { ptr, i64, i64 }, align 16 + %a1015 = alloca { ptr, i64, i64 }, align 16 %a1020 = alloca { ptr, i64, i64 }, align 16 %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca %S.gen.Val, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 + %a1022 = alloca { ptr, i64, i64 }, align 16 + %a1024 = alloca { ptr, i64, i64 }, align 16 + %a1025 = alloca { ptr, i64, i64 }, align 16 + %a1026 = alloca { ptr, i64, i64 }, align 16 + %a1030 = alloca { ptr, i64, i64 }, align 16 + %a1031 = alloca { ptr, i64, i64 }, align 16 + %a1032 = alloca { ptr, i64, i64 }, align 16 + %a1034 = alloca { ptr, i64, i64 }, align 16 + %a1035 = alloca { ptr, i64, i64 }, align 16 + %a1036 = alloca { ptr, i64, i64 }, align 16 + %a1043 = alloca { ptr, i64, i64 }, align 16 + %a1044 = alloca { ptr, i64, i64 }, align 16 + %a1069 = alloca %S.gen.Val, align 16 + %a1073 = alloca { ptr, i64, i64 }, align 16 + %a1074 = alloca { ptr, i64, i64 }, align 16 + %a1075 = alloca { ptr, i64, i64 }, align 16 %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca %S.gen.Val, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1116 = alloca { ptr, i64, i64 }, align 16 - %a1117 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 + %a1078 = alloca { ptr, i64, i64 }, align 16 + %a1079 = alloca { ptr, i64, i64 }, align 16 + %a1082 = alloca { ptr, i64, i64 }, align 16 + %a1085 = alloca { ptr, i64, i64 }, align 16 + %a1088 = alloca { ptr, i64, i64 }, align 16 + %a1089 = alloca { ptr, i64, i64 }, align 16 + %a1090 = alloca { ptr, i64, i64 }, align 16 + %a1092 = alloca { ptr, i64, i64 }, align 16 + %a1093 = alloca { ptr, i64, i64 }, align 16 + %a1094 = alloca { ptr, i64, i64 }, align 16 + %a1099 = alloca { ptr, i64, i64 }, align 16 + %a1100 = alloca { ptr, i64, i64 }, align 16 + %a1105 = alloca %S.gen.Val, align 16 + %a1124 = alloca { ptr, i64, i64 }, align 16 + %a1127 = alloca { ptr, i64, i64 }, align 16 + %a1128 = alloca { ptr, i64, i64 }, align 16 + %a1129 = alloca { ptr, i64, i64 }, align 16 %a1131 = alloca { ptr, i64, i64 }, align 16 %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1147 = alloca %S.gen.Val, align 16 - %a1153 = alloca { ptr, i64, i64 }, align 16 + %a1133 = alloca { ptr, i64, i64 }, align 16 + %a1138 = alloca { ptr, i64, i64 }, align 16 + %a1139 = alloca { ptr, i64, i64 }, align 16 + %a1140 = alloca { ptr, i64, i64 }, align 16 + %a1142 = alloca { ptr, i64, i64 }, align 16 + %a1143 = alloca { ptr, i64, i64 }, align 16 + %a1144 = alloca { ptr, i64, i64 }, align 16 %a1154 = alloca { ptr, i64, i64 }, align 16 %a1155 = alloca { ptr, i64, i64 }, align 16 - %a1157 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1173 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 + %a1170 = alloca %S.gen.Val, align 16 + %a1176 = alloca { ptr, i64, i64 }, align 16 + %a1177 = alloca { ptr, i64, i64 }, align 16 + %a1178 = alloca { ptr, i64, i64 }, align 16 + %a1180 = alloca { ptr, i64, i64 }, align 16 + %a1181 = alloca { ptr, i64, i64 }, align 16 %a1182 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca %S.gen.Val, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1203 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1222 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca i64, align 16 + %a1185 = alloca { ptr, i64, i64 }, align 16 + %a1196 = alloca { ptr, i64, i64 }, align 16 + %a1197 = alloca { ptr, i64, i64 }, align 16 + %a1205 = alloca { ptr, i64, i64 }, align 16 + %a1206 = alloca { ptr, i64, i64 }, align 16 + %a1221 = alloca %S.gen.Val, align 16 + %a1225 = alloca { ptr, i64, i64 }, align 16 + %a1226 = alloca { ptr, i64, i64 }, align 16 + %a1240 = alloca { ptr, i64, i64 }, align 16 + %a1241 = alloca { ptr, i64, i64 }, align 16 + %a1242 = alloca { ptr, i64, i64 }, align 16 + %a1244 = alloca { ptr, i64, i64 }, align 16 %a1245 = alloca { ptr, i64, i64 }, align 16 %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1265 = alloca i64, align 16 - %a1289 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1291 = alloca { ptr, i64, i64 }, align 16 - %a1293 = alloca { ptr, i64, i64 }, align 16 - %a1294 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1298 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1303 = alloca { ptr, i64, i64 }, align 16 - %a1304 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca i64, align 16 - %a1317 = alloca %S.ast.Type, align 16 - %a1338 = alloca %S.ast.Type, align 16 - %a1359 = alloca i64, align 16 - %a1377 = alloca i64, align 16 - %a1389 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1402 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1434 = alloca { ptr, i64, i64 }, align 16 - %a1435 = alloca { ptr, i64, i64 }, align 16 - %a1436 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 + %a1257 = alloca i64, align 16 + %a1268 = alloca { ptr, i64, i64 }, align 16 + %a1269 = alloca { ptr, i64, i64 }, align 16 + %a1270 = alloca { ptr, i64, i64 }, align 16 + %a1272 = alloca { ptr, i64, i64 }, align 16 + %a1273 = alloca { ptr, i64, i64 }, align 16 + %a1274 = alloca { ptr, i64, i64 }, align 16 + %a1288 = alloca i64, align 16 + %a1312 = alloca { ptr, i64, i64 }, align 16 + %a1313 = alloca { ptr, i64, i64 }, align 16 + %a1314 = alloca { ptr, i64, i64 }, align 16 + %a1316 = alloca { ptr, i64, i64 }, align 16 + %a1317 = alloca { ptr, i64, i64 }, align 16 + %a1318 = alloca { ptr, i64, i64 }, align 16 + %a1321 = alloca { ptr, i64, i64 }, align 16 + %a1322 = alloca { ptr, i64, i64 }, align 16 + %a1323 = alloca { ptr, i64, i64 }, align 16 + %a1325 = alloca { ptr, i64, i64 }, align 16 + %a1326 = alloca { ptr, i64, i64 }, align 16 + %a1327 = alloca { ptr, i64, i64 }, align 16 + %a1329 = alloca { ptr, i64, i64 }, align 16 + %a1332 = alloca i64, align 16 + %a1340 = alloca %S.ast.Type, align 16 + %a1361 = alloca %S.ast.Type, align 16 + %a1382 = alloca i64, align 16 + %a1395 = alloca %S.gen.StructDef, align 16 + %a1396 = alloca %S.gen.StructDef, align 16 + %a1398 = alloca %S.gen.StructDef, align 16 + %a1426 = alloca %S.ast.Node, align 16 + %a1427 = alloca %S.ast.Node, align 16 + %a1429 = alloca %S.ast.Node, align 16 + %a1438 = alloca { ptr, i64, i64 }, align 16 + %a1439 = alloca { ptr, i64, i64 }, align 16 + %a1440 = alloca { ptr, i64, i64 }, align 16 %a1442 = alloca { ptr, i64, i64 }, align 16 %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1445 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 + %a1444 = alloca { ptr, i64, i64 }, align 16 + %a1448 = alloca { ptr, i64, i64 }, align 16 + %a1449 = alloca { ptr, i64, i64 }, align 16 %a1451 = alloca { ptr, i64, i64 }, align 16 %a1452 = alloca { ptr, i64, i64 }, align 16 %a1453 = alloca { ptr, i64, i64 }, align 16 + %a1455 = alloca { ptr, i64, i64 }, align 16 + %a1456 = alloca { ptr, i64, i64 }, align 16 + %a1457 = alloca { ptr, i64, i64 }, align 16 + %a1489 = alloca i64, align 16 + %a1501 = alloca { ptr, i64, i64 }, align 16 + %a1511 = alloca { ptr, i64, i64 }, align 16 + %a1514 = alloca { ptr, i64, i64 }, align 16 + %a1515 = alloca { ptr, i64, i64 }, align 16 + %a1542 = alloca { ptr, i64, i64 }, align 16 + %a1543 = alloca { ptr, i64, i64 }, align 16 + %a1544 = alloca { ptr, i64, i64 }, align 16 + %a1546 = alloca { ptr, i64, i64 }, align 16 + %a1547 = alloca { ptr, i64, i64 }, align 16 + %a1548 = alloca { ptr, i64, i64 }, align 16 + %a1553 = alloca { ptr, i64, i64 }, align 16 + %a1554 = alloca { ptr, i64, i64 }, align 16 + %a1555 = alloca { ptr, i64, i64 }, align 16 + %a1557 = alloca { ptr, i64, i64 }, align 16 + %a1558 = alloca { ptr, i64, i64 }, align 16 + %a1559 = alloca { ptr, i64, i64 }, align 16 + %a1563 = alloca { ptr, i64, i64 }, align 16 + %a1564 = alloca { ptr, i64, i64 }, align 16 + %a1565 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -62392,1999 +66517,2186 @@ entry: call void @finch_str_copy(ptr %a6, ptr %a5) %t7 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t7, ptr %a8 - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.4569, i64 5, i64 0 }, ptr %a11 - %t12 = call i32 @finch_str_eq(ptr %a10, ptr %a11) - %t13 = icmp ne i32 %t12, 0 - br i1 %t13, label %then7022, label %endif7024 -then7022: - %t14 = load ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t14, %S.ast.Node %t15, { ptr, i64, i64 } { ptr @.str.4570, i64 86, i64 0 }) - br label %endif7024 -endif7024: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4571, i64 5, i64 0 }, ptr %a18 - %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) - %t20 = icmp ne i32 %t19, 0 - br i1 %t20, label %then7025, label %endif7027 -then7025: - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 0, ptr %a24 - br label %for.cond7028 -for.cond7028: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body7029, label %for.end7031 -for.body7029: - %t27 = load ptr, ptr %a1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4572, i64 4171, i64 %t29, i64 %t31) + %t9 = load ptr, ptr %a1 + %t10 = icmp eq ptr %t9, null + br i1 %t10, label %panic7320, label %ok7321 +panic7320: + call void @finch_panic(ptr @.str.4805, i64 4304, ptr @.str.4806) unreachable -inrange7033: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - %t36 = call %S.gen.Val @finch.gen.expr(ptr %t27, %S.ast.Node %t35) - store %S.gen.Val %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 1 - %t39 = getelementptr inbounds %S.ast.Type, ptr %t38, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4573, i64 4, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then7034, label %endif7036 -then7034: - %t45 = load ptr, ptr %a1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = load i64, ptr %a24 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range7037, label %inrange7038 -range7037: - call void @finch_panic_index(ptr @.str.4574, i64 4173, i64 %t47, i64 %t49) +ok7321: + %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 26 + %t12 = load i1, ptr %t11 + br label %logic.from7322 +logic.from7322: + br i1 %t12, label %logic.rhs7323, label %logic.end7324 +logic.rhs7323: + %t13 = load { ptr, i64, i64 }, ptr %a8 + %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) + br label %logic.rend7325 +logic.rend7325: + br label %logic.end7324 +logic.end7324: + %t15 = phi i1 [ false, %logic.from7322 ], [ %t14, %logic.rend7325 ] + br i1 %t15, label %then7326, label %endif7328 +then7326: + %t16 = call { ptr, i64, i64 } @finch.docs.builtins() + %t17 = load { ptr, i64, i64 }, ptr %a8 + %t18 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t16, { ptr, i64, i64 } %t17) + store %S.docs.Doc %t18, ptr %a19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %a19, i32 0, i32 0 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = icmp sgt i64 %t22, 0 + br i1 %t23, label %then7329, label %endif7331 +then7329: + %t24 = load ptr, ptr %a1 + %t25 = load %S.ast.Node, ptr %a2 + %t26 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t27 = load i64, ptr %t26 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = load %S.docs.Doc, ptr %a19 + %t31 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t30) + call void @finch.gen.noteRef(ptr %t24, %S.ast.Node %t25, i64 %t27, i64 %t29, { ptr, i64, i64 } %t31, { ptr, i64, i64 } { ptr @.str.4807, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7331 +endif7331: + br label %endif7328 +endif7328: + %t32 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t32, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.4808, i64 5, i64 0 }, ptr %a34 + %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) + %t36 = icmp ne i32 %t35, 0 + br i1 %t36, label %then7332, label %endif7334 +then7332: + %t37 = load ptr, ptr %a1 + %t38 = load %S.ast.Node, ptr %a2 + call void @finch.gen.fail(ptr %t37, %S.ast.Node %t38, { ptr, i64, i64 } { ptr @.str.4809, i64 86, i64 0 }) + br label %endif7334 +endif7334: + %t39 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t39, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.4810, i64 5, i64 0 }, ptr %a41 + %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) + %t43 = icmp ne i32 %t42, 0 + br i1 %t43, label %then7335, label %endif7337 +then7335: + %t44 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load i64, ptr %t45 + store i64 0, ptr %a47 + br label %for.cond7338 +for.cond7338: + %t48 = load i64, ptr %a47 + %t49 = icmp slt i64 %t48, %t46 + br i1 %t49, label %for.body7339, label %for.end7341 +for.body7339: + %t50 = load ptr, ptr %a1 + %t51 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t52 = load i64, ptr %a47 + %t53 = load { ptr, i64, i64 }, ptr %t51 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range7342, label %inrange7343 +range7342: + call void @finch_panic_index(ptr @.str.4811, i64 4315, i64 %t52, i64 %t54) unreachable -inrange7038: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t47 - %t53 = load %S.ast.Node, ptr %t52 - call void @finch.gen.fail(ptr %t45, %S.ast.Node %t53, { ptr, i64, i64 } { ptr @.str.4575, i64 53, i64 0 }) - br label %endif7036 -endif7036: - %t54 = load i64, ptr %a24 - %t55 = icmp sgt i64 %t54, 0 - br i1 %t55, label %then7039, label %endif7041 -then7039: - %t56 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t56, { ptr, i64, i64 } { ptr @.str.4576, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4577, i64 0, i64 0 }) - br label %endif7041 -endif7041: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.gen.Val, ptr %a37, i32 0, i32 1 - %t61 = load %S.ast.Type, ptr %t60 - call void @finch.gen.emitPrint(ptr %t57, { ptr, i64, i64 } %t59, %S.ast.Type %t61, i1 false) - br label %for.step7030 -for.step7030: - %t62 = load i64, ptr %a24 - %t63 = add i64 %t62, 1 - store i64 %t63, ptr %a24 - br label %for.cond7028 -for.end7031: - %t64 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t64, { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4579, i64 0, i64 0 }) - %t65 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 4, i64 0 }) - %t66 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t65, 1 - ret %S.gen.Val %t66 -endif7027: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.4581, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then7042, label %endif7044 -then7042: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t72, %S.ast.Node %t73, i64 0, i64 1, { ptr, i64, i64 } %t74) - %t75 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t76 = load { ptr, i64, i64 }, ptr %t75 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 0, %t77 - br i1 %t78, label %range7045, label %inrange7046 -range7045: - call void @finch_panic_index(ptr @.str.4582, i64 4185, i64 0, i64 %t77) +inrange7343: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds %S.ast.Node, ptr %t56, i64 %t52 + %t58 = load %S.ast.Node, ptr %t57 + %t59 = call %S.gen.Val @finch.gen.expr(ptr %t50, %S.ast.Node %t58) + store %S.gen.Val %t59, ptr %a60 + %t61 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 1 + %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 + %t63 = load { ptr, i64, i64 }, ptr %t62 + store { ptr, i64, i64 } %t63, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.4812, i64 4, i64 0 }, ptr %a65 + %t66 = call i32 @finch_str_eq(ptr %a64, ptr %a65) + %t67 = icmp ne i32 %t66, 0 + br i1 %t67, label %then7344, label %endif7346 +then7344: + %t68 = load ptr, ptr %a1 + %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t70 = load i64, ptr %a47 + %t71 = load { ptr, i64, i64 }, ptr %t69 + %t72 = extractvalue { ptr, i64, i64 } %t71, 1 + %t73 = icmp uge i64 %t70, %t72 + br i1 %t73, label %range7347, label %inrange7348 +range7347: + call void @finch_panic_index(ptr @.str.4813, i64 4317, i64 %t70, i64 %t72) unreachable -inrange7046: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds %S.ast.Node, ptr %t79, i64 0 - %t81 = load %S.ast.Node, ptr %t80 - store %S.ast.Node %t81, ptr %a82 - call void @finch.copy.S_ast_Node(ptr %a83, ptr %a82) - %t84 = load %S.ast.Node, ptr %a83 - store %S.ast.Node %t84, ptr %a85 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.4583, i64 3, i64 0 }, ptr %a89 - %t90 = call i32 @finch_str_eq(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - br label %logic.from7047 -logic.from7047: - br i1 %t91, label %logic.rhs7048, label %logic.end7049 -logic.rhs7048: - %t92 = load ptr, ptr %a1 - %t93 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 1 - %t94 = load { ptr, i64, i64 }, ptr %t93 - %t95 = call i64 @finch.gen.lookup(ptr %t92, { ptr, i64, i64 } %t94) - %t96 = icmp slt i64 %t95, 0 - br label %logic.rend7050 -logic.rend7050: - br label %logic.end7049 -logic.end7049: - %t97 = phi i1 [ false, %logic.from7047 ], [ %t96, %logic.rend7050 ] - br i1 %t97, label %then7051, label %endif7053 -then7051: - %t98 = load ptr, ptr %a1 - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic7054, label %ok7055 -panic7054: - call void @finch_panic(ptr @.str.4584, i64 4187, ptr @.str.4585) +inrange7348: + %t74 = extractvalue { ptr, i64, i64 } %t71, 0 + %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t70 + %t76 = load %S.ast.Node, ptr %t75 + call void @finch.gen.fail(ptr %t68, %S.ast.Node %t76, { ptr, i64, i64 } { ptr @.str.4814, i64 53, i64 0 }) + br label %endif7346 +endif7346: + %t77 = load i64, ptr %a47 + %t78 = icmp sgt i64 %t77, 0 + br i1 %t78, label %then7349, label %endif7351 +then7349: + %t79 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t79, { ptr, i64, i64 } { ptr @.str.4815, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4816, i64 0, i64 0 }) + br label %endif7351 +endif7351: + %t80 = load ptr, ptr %a1 + %t81 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 0 + %t82 = load { ptr, i64, i64 }, ptr %t81 + %t83 = getelementptr inbounds %S.gen.Val, ptr %a60, i32 0, i32 1 + %t84 = load %S.ast.Type, ptr %t83 + call void @finch.gen.emitPrint(ptr %t80, { ptr, i64, i64 } %t82, %S.ast.Type %t84, i1 false) + br label %for.step7340 +for.step7340: + %t85 = load i64, ptr %a47 + %t86 = add i64 %t85, 1 + store i64 %t86, ptr %a47 + br label %for.cond7338 +for.end7341: + %t87 = load ptr, ptr %a1 + call void @finch.gen.printf(ptr %t87, { ptr, i64, i64 } { ptr @.str.4817, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.4818, i64 0, i64 0 }) + %t88 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4819, i64 4, i64 0 }) + %t89 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t88, 1 + ret %S.gen.Val %t89 +endif7337: + %t90 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t90, ptr %a91 + store { ptr, i64, i64 } { ptr @.str.4820, i64 4, i64 0 }, ptr %a92 + %t93 = call i32 @finch_str_eq(ptr %a91, ptr %a92) + %t94 = icmp ne i32 %t93, 0 + br i1 %t94, label %then7352, label %endif7354 +then7352: + %t95 = load ptr, ptr %a1 + %t96 = load %S.ast.Node, ptr %a2 + %t97 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t95, %S.ast.Node %t96, i64 0, i64 1, { ptr, i64, i64 } %t97) + %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t99 = load { ptr, i64, i64 }, ptr %t98 + %t100 = extractvalue { ptr, i64, i64 } %t99, 1 + %t101 = icmp uge i64 0, %t100 + br i1 %t101, label %range7355, label %inrange7356 +range7355: + call void @finch_panic_index(ptr @.str.4821, i64 4329, i64 0, i64 %t100) unreachable -ok7055: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 13 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t104) - store i64 %t105, ptr %a106 - %t107 = load i64, ptr %a106 - %t108 = icmp sge i64 %t107, 0 - br i1 %t108, label %then7056, label %endif7058 -then7056: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a106 - %t111 = load %S.ast.Node, ptr %a85 - %t112 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t109, i64 %t110, %S.ast.Node %t111) - %t113 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4586, i64 3, i64 0 }) - %t115 = insertvalue %S.gen.Val %t113, %S.ast.Type %t114, 1 - ret %S.gen.Val %t115 -endif7058: - br label %endif7053 -endif7053: - %t116 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0 +inrange7356: + %t102 = extractvalue { ptr, i64, i64 } %t99, 0 + %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 0 + %t104 = load %S.ast.Node, ptr %t103 + store %S.ast.Node %t104, ptr %a105 + call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) + %t107 = load %S.ast.Node, ptr %a106 + store %S.ast.Node %t107, ptr %a108 + %t109 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 0 + %t110 = load { ptr, i64, i64 }, ptr %t109 + store { ptr, i64, i64 } %t110, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.4822, i64 3, i64 0 }, ptr %a112 + %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) + %t114 = icmp ne i32 %t113, 0 + br label %logic.from7357 +logic.from7357: + br i1 %t114, label %logic.rhs7358, label %logic.end7359 +logic.rhs7358: + %t115 = load ptr, ptr %a1 + %t116 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 1 %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.4587, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp eq i32 %t120, 0 - br label %logic.from7059 -logic.from7059: - br i1 %t121, label %logic.rhs7060, label %logic.end7061 -logic.rhs7060: - %t122 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4588, i64 6, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp eq i32 %t126, 0 - br label %logic.rend7062 -logic.rend7062: - br label %logic.end7061 -logic.end7061: - %t128 = phi i1 [ false, %logic.from7059 ], [ %t127, %logic.rend7062 ] - br label %logic.from7063 -logic.from7063: - br i1 %t128, label %logic.rhs7064, label %logic.end7065 -logic.rhs7064: - %t129 = getelementptr inbounds %S.ast.Node, ptr %a85, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t130, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4589, i64 5, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp eq i32 %t133, 0 - br label %logic.rend7066 -logic.rend7066: - br label %logic.end7065 -logic.end7065: - %t135 = phi i1 [ false, %logic.from7063 ], [ %t134, %logic.rend7066 ] - br i1 %t135, label %then7067, label %endif7069 -then7067: - %t136 = load ptr, ptr %a1 - %t137 = load %S.ast.Node, ptr %a85 - call void @finch.gen.fail(ptr %t136, %S.ast.Node %t137, { ptr, i64, i64 } { ptr @.str.4590, i64 63, i64 0 }) - br label %endif7069 -endif7069: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Node, ptr %a85 - %t140 = call %S.gen.Place @finch.gen.place(ptr %t138, %S.ast.Node %t139, i1 true) - store %S.gen.Place %t140, ptr %a141 - %t142 = getelementptr inbounds %S.gen.Place, ptr %a141, i32 0, i32 0 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } %t143, ptr %a144 - call void @finch_str_copy(ptr %a145, ptr %a144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - %t147 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t146, 0 - %t148 = getelementptr inbounds %S.gen.Place, ptr %a141, i32 0, i32 1 - %t149 = load %S.ast.Type, ptr %t148 - %t150 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t149) - %t151 = insertvalue %S.gen.Val %t147, %S.ast.Type %t150, 1 - ret %S.gen.Val %t151 -endif7044: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4591, i64 3, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br i1 %t156, label %then7070, label %endif7072 -then7070: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t157, %S.ast.Node %t158, i64 0, i64 1, { ptr, i64, i64 } %t159) - %t160 = load ptr, ptr %a1 - %t161 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = extractvalue { ptr, i64, i64 } %t162, 1 - %t164 = icmp uge i64 0, %t163 - br i1 %t164, label %range7073, label %inrange7074 -range7073: - call void @finch_panic_index(ptr @.str.4592, i64 4200, i64 0, i64 %t163) + %t118 = call i64 @finch.gen.lookup(ptr %t115, { ptr, i64, i64 } %t117) + %t119 = icmp slt i64 %t118, 0 + br label %logic.rend7360 +logic.rend7360: + br label %logic.end7359 +logic.end7359: + %t120 = phi i1 [ false, %logic.from7357 ], [ %t119, %logic.rend7360 ] + br i1 %t120, label %then7361, label %endif7363 +then7361: + %t121 = load ptr, ptr %a1 + %t122 = load ptr, ptr %a1 + %t123 = icmp eq ptr %t122, null + br i1 %t123, label %panic7364, label %ok7365 +panic7364: + call void @finch_panic(ptr @.str.4823, i64 4331, ptr @.str.4824) unreachable -inrange7074: - %t165 = extractvalue { ptr, i64, i64 } %t162, 0 - %t166 = getelementptr inbounds %S.ast.Node, ptr %t165, i64 0 - %t167 = load %S.ast.Node, ptr %t166 - %t168 = call %S.gen.Val @finch.gen.expr(ptr %t160, %S.ast.Node %t167) - store %S.gen.Val %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t170) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t174 = getelementptr inbounds %S.ast.Type, ptr %t173, i32 0, i32 0 - %t175 = load { ptr, i64, i64 }, ptr %t174 +ok7365: + %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 13 + %t125 = load { ptr, i64, i64 }, ptr %t124 + %t126 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 1 + %t127 = load { ptr, i64, i64 }, ptr %t126 + %t128 = call i64 @finch.gen.findFn(ptr %t121, { ptr, i64, i64 } %t125, { ptr, i64, i64 } %t127) + store i64 %t128, ptr %a129 + %t130 = load i64, ptr %a129 + %t131 = icmp sge i64 %t130, 0 + br i1 %t131, label %then7366, label %endif7368 +then7366: + %t132 = load ptr, ptr %a1 + %t133 = load i64, ptr %a129 + %t134 = load %S.ast.Node, ptr %a108 + %t135 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t132, i64 %t133, %S.ast.Node %t134) + %t136 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t135, 0 + %t137 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4825, i64 3, i64 0 }) + %t138 = insertvalue %S.gen.Val %t136, %S.ast.Type %t137, 1 + ret %S.gen.Val %t138 +endif7368: + br label %endif7363 +endif7363: + %t139 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 0 + %t140 = load { ptr, i64, i64 }, ptr %t139 + store { ptr, i64, i64 } %t140, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.4826, i64 3, i64 0 }, ptr %a142 + %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) + %t144 = icmp eq i32 %t143, 0 + br label %logic.from7369 +logic.from7369: + br i1 %t144, label %logic.rhs7370, label %logic.end7371 +logic.rhs7370: + %t145 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 0 + %t146 = load { ptr, i64, i64 }, ptr %t145 + store { ptr, i64, i64 } %t146, ptr %a147 + store { ptr, i64, i64 } { ptr @.str.4827, i64 6, i64 0 }, ptr %a148 + %t149 = call i32 @finch_str_eq(ptr %a147, ptr %a148) + %t150 = icmp eq i32 %t149, 0 + br label %logic.rend7372 +logic.rend7372: + br label %logic.end7371 +logic.end7371: + %t151 = phi i1 [ false, %logic.from7369 ], [ %t150, %logic.rend7372 ] + br label %logic.from7373 +logic.from7373: + br i1 %t151, label %logic.rhs7374, label %logic.end7375 +logic.rhs7374: + %t152 = getelementptr inbounds %S.ast.Node, ptr %a108, i32 0, i32 0 + %t153 = load { ptr, i64, i64 }, ptr %t152 + store { ptr, i64, i64 } %t153, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.4828, i64 5, i64 0 }, ptr %a155 + %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) + %t157 = icmp eq i32 %t156, 0 + br label %logic.rend7376 +logic.rend7376: + br label %logic.end7375 +logic.end7375: + %t158 = phi i1 [ false, %logic.from7373 ], [ %t157, %logic.rend7376 ] + br i1 %t158, label %then7377, label %endif7379 +then7377: + %t159 = load ptr, ptr %a1 + %t160 = load %S.ast.Node, ptr %a108 + call void @finch.gen.fail(ptr %t159, %S.ast.Node %t160, { ptr, i64, i64 } { ptr @.str.4829, i64 63, i64 0 }) + br label %endif7379 +endif7379: + %t161 = load ptr, ptr %a1 + %t162 = load %S.ast.Node, ptr %a108 + %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) + store %S.gen.Place %t163, ptr %a164 + %t165 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 + %t166 = load { ptr, i64, i64 }, ptr %t165 + store { ptr, i64, i64 } %t166, ptr %a167 + call void @finch_str_copy(ptr %a168, ptr %a167) + %t169 = load { ptr, i64, i64 }, ptr %a168 + %t170 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t169, 0 + %t171 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 + %t172 = load %S.ast.Type, ptr %t171 + %t173 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t172) + %t174 = insertvalue %S.gen.Val %t170, %S.ast.Type %t173, 1 + ret %S.gen.Val %t174 +endif7354: + %t175 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_copy(ptr %a177, ptr %a176) - %t178 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.4593, i64 3, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %then7075, label %else7076 -then7075: - %t185 = load ptr, ptr %a1 - %t186 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t185, { ptr, i64, i64 } %t187, %S.ast.Type %t189) - %t191 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t190, 0 - %t192 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t193 = load %S.ast.Type, ptr %t192 - store %S.ast.Type %t193, ptr %a194 - call void @finch.copy.S_ast_Type(ptr %a195, ptr %a194) - %t196 = load %S.ast.Type, ptr %a195 - %t197 = insertvalue %S.gen.Val %t191, %S.ast.Type %t196, 1 - %t198 = insertvalue %S.gen.Val %t197, i1 true, 2 - ret %S.gen.Val %t198 -else7076: - %t199 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t200 = load %S.ast.Type, ptr %t199 - %t201 = call i1 @finch.gen.isSigned(%S.ast.Type %t200) - br i1 %t201, label %then7078, label %else7079 -then7078: - %t202 = load ptr, ptr %a1 - %t203 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4594, i64 34, i64 0 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.4595, i64 6, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.4830, i64 3, i64 0 }, ptr %a177 + %t178 = call i32 @finch_str_eq(ptr %a176, ptr %a177) + %t179 = icmp ne i32 %t178, 0 + br i1 %t179, label %then7380, label %endif7382 +then7380: + %t180 = load ptr, ptr %a1 + %t181 = load %S.ast.Node, ptr %a2 + %t182 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t180, %S.ast.Node %t181, i64 0, i64 1, { ptr, i64, i64 } %t182) + %t183 = load ptr, ptr %a1 + %t184 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t185 = load { ptr, i64, i64 }, ptr %t184 + %t186 = extractvalue { ptr, i64, i64 } %t185, 1 + %t187 = icmp uge i64 0, %t186 + br i1 %t187, label %range7383, label %inrange7384 +range7383: + call void @finch_panic_index(ptr @.str.4831, i64 4344, i64 0, i64 %t186) + unreachable +inrange7384: + %t188 = extractvalue { ptr, i64, i64 } %t185, 0 + %t189 = getelementptr inbounds %S.ast.Node, ptr %t188, i64 0 + %t190 = load %S.ast.Node, ptr %t189 + %t191 = call %S.gen.Val @finch.gen.expr(ptr %t183, %S.ast.Node %t190) + store %S.gen.Val %t191, ptr %a192 + %t193 = load ptr, ptr %a1 + %t194 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t193) + store { ptr, i64, i64 } %t194, ptr %a195 + %t196 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t197 = getelementptr inbounds %S.ast.Type, ptr %t196, i32 0, i32 0 + %t198 = load { ptr, i64, i64 }, ptr %t197 + store { ptr, i64, i64 } %t198, ptr %a199 + call void @finch_str_copy(ptr %a200, ptr %a199) + %t201 = load { ptr, i64, i64 }, ptr %a200 + store { ptr, i64, i64 } %t201, ptr %a202 + %t203 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t203, ptr %a204 + store { ptr, i64, i64 } { ptr @.str.4832, i64 3, i64 0 }, ptr %a205 + %t206 = call i32 @finch_str_eq(ptr %a204, ptr %a205) + %t207 = icmp ne i32 %t206, 0 + br i1 %t207, label %then7385, label %else7386 +then7385: + %t208 = load ptr, ptr %a1 + %t209 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t210 = load { ptr, i64, i64 }, ptr %t209 + %t211 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t212 = load %S.ast.Type, ptr %t211 + %t213 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t208, { ptr, i64, i64 } %t210, %S.ast.Type %t212) + %t214 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t213, 0 + %t215 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 %t216 = load %S.ast.Type, ptr %t215 - %t217 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4596, i64 3, i64 0 }) - %t218 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t212, { ptr, i64, i64 } %t214, %S.ast.Type %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t211, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4597, i64 1, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - call void @finch.gen.emit(ptr %t202, { ptr, i64, i64 } %t226) - br label %endif7080 -else7079: - %t227 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t228 = load %S.ast.Type, ptr %t227 - %t229 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t228) - br i1 %t229, label %then7081, label %else7082 -then7081: - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4598, i64 35, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4599, i64 6, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a236 - %t240 = load ptr, ptr %a1 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t242 = load { ptr, i64, i64 }, ptr %t241 - %t243 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t244 = load %S.ast.Type, ptr %t243 - %t245 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4600, i64 3, i64 0 }) - %t246 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t240, { ptr, i64, i64 } %t242, %S.ast.Type %t244, %S.ast.Type %t245) - store { ptr, i64, i64 } %t239, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4601, i64 1, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - call void @finch.gen.emit(ptr %t230, { ptr, i64, i64 } %t254) - br label %endif7083 -else7082: - %t255 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t256 = load %S.ast.Type, ptr %t255 - %t257 = call i1 @finch.gen.isFloat(%S.ast.Type %t256) - br i1 %t257, label %then7084, label %else7085 -then7084: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4602, i64 36, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4603, i64 9, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a264 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4604, i64 5, i64 0 }) - %t274 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t268, { ptr, i64, i64 } %t270, %S.ast.Type %t272, %S.ast.Type %t273) - store { ptr, i64, i64 } %t267, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4605, i64 1, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } %t282) - br label %endif7086 -else7085: - %t283 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t283, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.4606, i64 4, i64 0 }, ptr %a285 - %t286 = call i32 @finch_str_eq(ptr %a284, ptr %a285) - %t287 = icmp ne i32 %t286, 0 - br i1 %t287, label %then7087, label %else7088 -then7087: - %t288 = load ptr, ptr %a1 - %t289 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4607, i64 35, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t293, ptr %a295 - store { ptr, i64, i64 } { ptr @.str.4608, i64 13, i64 0 }, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - %t298 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t297, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.4609, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - call void @finch.gen.emit(ptr %t288, { ptr, i64, i64 } %t307) - br label %endif7089 -else7088: - %t308 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.4610, i64 4, i64 0 }, ptr %a310 - %t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310) - %t312 = icmp ne i32 %t311, 0 - br i1 %t312, label %then7090, label %else7091 -then7090: - %t313 = load ptr, ptr %a1 - %t314 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t315 = load { ptr, i64, i64 }, ptr %t314 - store { ptr, i64, i64 } { ptr @.str.4611, i64 8, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.4612, i64 7, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a320 - %t324 = call { ptr, i64, i64 } @finch.gen.op(ptr %t313, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t324, ptr %a325 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4613, i64 35, i64 0 }, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4614, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a332 - %t336 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t335, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.4615, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - %t344 = load { ptr, i64, i64 }, ptr %a341 - call void @finch.gen.emit(ptr %t326, { ptr, i64, i64 } %t344) - br label %endif7092 -else7091: - %t345 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.4616, i64 3, i64 0 }, ptr %a347 - %t348 = call i32 @finch_str_eq(ptr %a346, ptr %a347) - %t349 = icmp ne i32 %t348, 0 - br i1 %t349, label %then7093, label %else7094 -then7093: - %t350 = load ptr, ptr %a1 - %t351 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.store(ptr %t350, { ptr, i64, i64 } { ptr @.str.4617, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4618, i64 15, i64 0 }, { ptr, i64, i64 } %t351) - %t352 = load ptr, ptr %a1 - %t353 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4619, i64 32, i64 0 }, ptr %a355 - store { ptr, i64, i64 } %t353, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.4620, i64 6, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a358 - %t362 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t363 = load { ptr, i64, i64 }, ptr %t362 - store { ptr, i64, i64 } %t361, ptr %a365 - store { ptr, i64, i64 } %t363, ptr %a366 + store %S.ast.Type %t216, ptr %a217 + call void @finch.copy.S_ast_Type(ptr %a218, ptr %a217) + %t219 = load %S.ast.Type, ptr %a218 + %t220 = insertvalue %S.gen.Val %t214, %S.ast.Type %t219, 1 + %t221 = insertvalue %S.gen.Val %t220, i1 true, 2 + ret %S.gen.Val %t221 +else7386: + %t222 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t223 = load %S.ast.Type, ptr %t222 + %t224 = call i1 @finch.gen.isSigned(%S.ast.Type %t223) + br i1 %t224, label %then7388, label %else7389 +then7388: + %t225 = load ptr, ptr %a1 + %t226 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4833, i64 34, i64 0 }, ptr %a228 + store { ptr, i64, i64 } %t226, ptr %a229 + call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) + %t230 = load { ptr, i64, i64 }, ptr %a227 + store { ptr, i64, i64 } %t230, ptr %a232 + store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a233 + call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) + %t234 = load { ptr, i64, i64 }, ptr %a231 + %t235 = load ptr, ptr %a1 + %t236 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t237 = load { ptr, i64, i64 }, ptr %t236 + %t238 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t239 = load %S.ast.Type, ptr %t238 + %t240 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4835, i64 3, i64 0 }) + %t241 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t235, { ptr, i64, i64 } %t237, %S.ast.Type %t239, %S.ast.Type %t240) + store { ptr, i64, i64 } %t234, ptr %a243 + store { ptr, i64, i64 } %t241, ptr %a244 + call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) + %t245 = load { ptr, i64, i64 }, ptr %a242 + store { ptr, i64, i64 } %t245, ptr %a247 + store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a248 + call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) + %t249 = load { ptr, i64, i64 }, ptr %a246 + call void @finch.gen.emit(ptr %t225, { ptr, i64, i64 } %t249) + br label %endif7390 +else7389: + %t250 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t251 = load %S.ast.Type, ptr %t250 + %t252 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t251) + br i1 %t252, label %then7391, label %else7392 +then7391: + %t253 = load ptr, ptr %a1 + %t254 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4837, i64 35, i64 0 }, ptr %a256 + store { ptr, i64, i64 } %t254, ptr %a257 + call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) + %t258 = load { ptr, i64, i64 }, ptr %a255 + store { ptr, i64, i64 } %t258, ptr %a260 + store { ptr, i64, i64 } { ptr @.str.4838, i64 6, i64 0 }, ptr %a261 + call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) + %t262 = load { ptr, i64, i64 }, ptr %a259 + %t263 = load ptr, ptr %a1 + %t264 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t265 = load { ptr, i64, i64 }, ptr %t264 + %t266 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t267 = load %S.ast.Type, ptr %t266 + %t268 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4839, i64 3, i64 0 }) + %t269 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t263, { ptr, i64, i64 } %t265, %S.ast.Type %t267, %S.ast.Type %t268) + store { ptr, i64, i64 } %t262, ptr %a271 + store { ptr, i64, i64 } %t269, ptr %a272 + call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) + %t273 = load { ptr, i64, i64 }, ptr %a270 + store { ptr, i64, i64 } %t273, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.4840, i64 1, i64 0 }, ptr %a276 + call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) + %t277 = load { ptr, i64, i64 }, ptr %a274 + call void @finch.gen.emit(ptr %t253, { ptr, i64, i64 } %t277) + br label %endif7393 +else7392: + %t278 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t279 = load %S.ast.Type, ptr %t278 + %t280 = call i1 @finch.gen.isFloat(%S.ast.Type %t279) + br i1 %t280, label %then7394, label %else7395 +then7394: + %t281 = load ptr, ptr %a1 + %t282 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4841, i64 36, i64 0 }, ptr %a284 + store { ptr, i64, i64 } %t282, ptr %a285 + call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) + %t286 = load { ptr, i64, i64 }, ptr %a283 + store { ptr, i64, i64 } %t286, ptr %a288 + store { ptr, i64, i64 } { ptr @.str.4842, i64 9, i64 0 }, ptr %a289 + call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) + %t290 = load { ptr, i64, i64 }, ptr %a287 + %t291 = load ptr, ptr %a1 + %t292 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t293 = load { ptr, i64, i64 }, ptr %t292 + %t294 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t295 = load %S.ast.Type, ptr %t294 + %t296 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4843, i64 5, i64 0 }) + %t297 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t291, { ptr, i64, i64 } %t293, %S.ast.Type %t295, %S.ast.Type %t296) + store { ptr, i64, i64 } %t290, ptr %a299 + store { ptr, i64, i64 } %t297, ptr %a300 + call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) + %t301 = load { ptr, i64, i64 }, ptr %a298 + store { ptr, i64, i64 } %t301, ptr %a303 + store { ptr, i64, i64 } { ptr @.str.4844, i64 1, i64 0 }, ptr %a304 + call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) + %t305 = load { ptr, i64, i64 }, ptr %a302 + call void @finch.gen.emit(ptr %t281, { ptr, i64, i64 } %t305) + br label %endif7396 +else7395: + %t306 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t306, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.4845, i64 4, i64 0 }, ptr %a308 + %t309 = call i32 @finch_str_eq(ptr %a307, ptr %a308) + %t310 = icmp ne i32 %t309, 0 + br i1 %t310, label %then7397, label %else7398 +then7397: + %t311 = load ptr, ptr %a1 + %t312 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4846, i64 35, i64 0 }, ptr %a314 + store { ptr, i64, i64 } %t312, ptr %a315 + call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) + %t316 = load { ptr, i64, i64 }, ptr %a313 + store { ptr, i64, i64 } %t316, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.4847, i64 13, i64 0 }, ptr %a319 + call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) + %t320 = load { ptr, i64, i64 }, ptr %a317 + %t321 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t322 = load { ptr, i64, i64 }, ptr %t321 + store { ptr, i64, i64 } %t320, ptr %a324 + store { ptr, i64, i64 } %t322, ptr %a325 + call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) + %t326 = load { ptr, i64, i64 }, ptr %a323 + store { ptr, i64, i64 } %t326, ptr %a328 + store { ptr, i64, i64 } { ptr @.str.4848, i64 1, i64 0 }, ptr %a329 + call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) + %t330 = load { ptr, i64, i64 }, ptr %a327 + call void @finch.gen.emit(ptr %t311, { ptr, i64, i64 } %t330) + br label %endif7399 +else7398: + %t331 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t331, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.4849, i64 4, i64 0 }, ptr %a333 + %t334 = call i32 @finch_str_eq(ptr %a332, ptr %a333) + %t335 = icmp ne i32 %t334, 0 + br i1 %t335, label %then7400, label %else7401 +then7400: + %t336 = load ptr, ptr %a1 + %t337 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t338 = load { ptr, i64, i64 }, ptr %t337 + store { ptr, i64, i64 } { ptr @.str.4850, i64 8, i64 0 }, ptr %a340 + store { ptr, i64, i64 } %t338, ptr %a341 + call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) + %t342 = load { ptr, i64, i64 }, ptr %a339 + store { ptr, i64, i64 } %t342, ptr %a344 + store { ptr, i64, i64 } { ptr @.str.4851, i64 7, i64 0 }, ptr %a345 + call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) + %t346 = load { ptr, i64, i64 }, ptr %a343 + %t347 = call { ptr, i64, i64 } @finch.gen.op(ptr %t336, { ptr, i64, i64 } %t346) + store { ptr, i64, i64 } %t347, ptr %a348 + %t349 = load ptr, ptr %a1 + %t350 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4852, i64 35, i64 0 }, ptr %a352 + store { ptr, i64, i64 } %t350, ptr %a353 + call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) + %t354 = load { ptr, i64, i64 }, ptr %a351 + store { ptr, i64, i64 } %t354, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.4853, i64 6, i64 0 }, ptr %a357 + call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) + %t358 = load { ptr, i64, i64 }, ptr %a355 + %t359 = load { ptr, i64, i64 }, ptr %a348 + store { ptr, i64, i64 } %t358, ptr %a361 + store { ptr, i64, i64 } %t359, ptr %a362 + call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) + %t363 = load { ptr, i64, i64 }, ptr %a360 + store { ptr, i64, i64 } %t363, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.4854, i64 1, i64 0 }, ptr %a366 call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) %t367 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t367, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.4621, i64 1, i64 0 }, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a368 - call void @finch.gen.emit(ptr %t352, { ptr, i64, i64 } %t371) - br label %endif7095 -else7094: - %t372 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4622, i64 5, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.from7096 -logic.from7096: - br i1 %t376, label %logic.rhs7097, label %logic.end7098 -logic.rhs7097: - %t377 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t378 = getelementptr inbounds %S.ast.Type, ptr %t377, i32 0, i32 1 - %t379 = load { ptr, i64, i64 }, ptr %t378 - %t380 = extractvalue { ptr, i64, i64 } %t379, 1 - %t381 = icmp uge i64 0, %t380 - br i1 %t381, label %range7099, label %inrange7100 -range7099: - call void @finch_panic_index(ptr @.str.4623, i64 4220, i64 0, i64 %t380) + call void @finch.gen.emit(ptr %t349, { ptr, i64, i64 } %t367) + br label %endif7402 +else7401: + %t368 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t368, ptr %a369 + store { ptr, i64, i64 } { ptr @.str.4855, i64 3, i64 0 }, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br i1 %t372, label %then7403, label %else7404 +then7403: + %t373 = load ptr, ptr %a1 + %t374 = load { ptr, i64, i64 }, ptr %a195 + call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.4856, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4857, i64 15, i64 0 }, { ptr, i64, i64 } %t374) + %t375 = load ptr, ptr %a1 + %t376 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4858, i64 32, i64 0 }, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + %t380 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t380, ptr %a382 + store { ptr, i64, i64 } { ptr @.str.4859, i64 6, i64 0 }, ptr %a383 + call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a381 + %t385 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t386 = load { ptr, i64, i64 }, ptr %t385 + store { ptr, i64, i64 } %t384, ptr %a388 + store { ptr, i64, i64 } %t386, ptr %a389 + call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) + %t390 = load { ptr, i64, i64 }, ptr %a387 + store { ptr, i64, i64 } %t390, ptr %a392 + store { ptr, i64, i64 } { ptr @.str.4860, i64 1, i64 0 }, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a391 + call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t394) + br label %endif7405 +else7404: + %t395 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t395, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.4861, i64 5, i64 0 }, ptr %a397 + %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) + %t399 = icmp ne i32 %t398, 0 + br label %logic.from7406 +logic.from7406: + br i1 %t399, label %logic.rhs7407, label %logic.end7408 +logic.rhs7407: + %t400 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t401 = getelementptr inbounds %S.ast.Type, ptr %t400, i32 0, i32 1 + %t402 = load { ptr, i64, i64 }, ptr %t401 + %t403 = extractvalue { ptr, i64, i64 } %t402, 1 + %t404 = icmp uge i64 0, %t403 + br i1 %t404, label %range7409, label %inrange7410 +range7409: + call void @finch_panic_index(ptr @.str.4862, i64 4364, i64 0, i64 %t403) unreachable -inrange7100: - %t382 = extractvalue { ptr, i64, i64 } %t379, 0 - %t383 = getelementptr inbounds %S.ast.Type, ptr %t382, i64 0 - %t384 = getelementptr inbounds %S.ast.Type, ptr %t383, i32 0, i32 0 - %t385 = load { ptr, i64, i64 }, ptr %t384 - store { ptr, i64, i64 } %t385, ptr %a386 - store { ptr, i64, i64 } { ptr @.str.4624, i64 2, i64 0 }, ptr %a387 - %t388 = call i32 @finch_str_eq(ptr %a386, ptr %a387) - %t389 = icmp ne i32 %t388, 0 - br label %logic.from7101 -logic.from7101: - br i1 %t389, label %logic.end7103, label %logic.rhs7102 -logic.rhs7102: - %t390 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - %t393 = extractvalue { ptr, i64, i64 } %t392, 1 - %t394 = icmp uge i64 0, %t393 - br i1 %t394, label %range7104, label %inrange7105 -range7104: - call void @finch_panic_index(ptr @.str.4625, i64 4220, i64 0, i64 %t393) +inrange7410: + %t405 = extractvalue { ptr, i64, i64 } %t402, 0 + %t406 = getelementptr inbounds %S.ast.Type, ptr %t405, i64 0 + %t407 = getelementptr inbounds %S.ast.Type, ptr %t406, i32 0, i32 0 + %t408 = load { ptr, i64, i64 }, ptr %t407 + store { ptr, i64, i64 } %t408, ptr %a409 + store { ptr, i64, i64 } { ptr @.str.4863, i64 2, i64 0 }, ptr %a410 + %t411 = call i32 @finch_str_eq(ptr %a409, ptr %a410) + %t412 = icmp ne i32 %t411, 0 + br label %logic.from7411 +logic.from7411: + br i1 %t412, label %logic.end7413, label %logic.rhs7412 +logic.rhs7412: + %t413 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t414 = getelementptr inbounds %S.ast.Type, ptr %t413, i32 0, i32 1 + %t415 = load { ptr, i64, i64 }, ptr %t414 + %t416 = extractvalue { ptr, i64, i64 } %t415, 1 + %t417 = icmp uge i64 0, %t416 + br i1 %t417, label %range7414, label %inrange7415 +range7414: + call void @finch_panic_index(ptr @.str.4864, i64 4364, i64 0, i64 %t416) unreachable -inrange7105: - %t395 = extractvalue { ptr, i64, i64 } %t392, 0 - %t396 = getelementptr inbounds %S.ast.Type, ptr %t395, i64 0 - %t397 = getelementptr inbounds %S.ast.Type, ptr %t396, i32 0, i32 0 - %t398 = load { ptr, i64, i64 }, ptr %t397 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.4626, i64 4, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br label %logic.rend7106 -logic.rend7106: - br label %logic.end7103 -logic.end7103: - %t403 = phi i1 [ true, %logic.from7101 ], [ %t402, %logic.rend7106 ] - br label %logic.rend7107 -logic.rend7107: - br label %logic.end7098 -logic.end7098: - %t404 = phi i1 [ false, %logic.from7096 ], [ %t403, %logic.rend7107 ] - br i1 %t404, label %then7108, label %else7109 -then7108: - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.store(ptr %t405, { ptr, i64, i64 } { ptr @.str.4627, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4628, i64 15, i64 0 }, { ptr, i64, i64 } %t406) - %t407 = load ptr, ptr %a1 - %t408 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4629, i64 36, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.4630, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a413 - %t417 = load ptr, ptr %a1 - %t418 = load %S.gen.Val, ptr %a169 - %t419 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t417, %S.gen.Val %t418) - store { ptr, i64, i64 } %t416, ptr %a421 - store { ptr, i64, i64 } %t419, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - %t423 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.4631, i64 1, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.emit(ptr %t407, { ptr, i64, i64 } %t427) - br label %endif7110 -else7109: - %t428 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t428, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.4632, i64 4, i64 0 }, ptr %a430 - %t431 = call i32 @finch_str_eq(ptr %a429, ptr %a430) - %t432 = icmp ne i32 %t431, 0 - br label %logic.from7111 -logic.from7111: - br i1 %t432, label %logic.end7113, label %logic.rhs7112 -logic.rhs7112: - %t433 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t433, ptr %a434 - store { ptr, i64, i64 } { ptr @.str.4633, i64 4, i64 0 }, ptr %a435 - %t436 = call i32 @finch_str_eq(ptr %a434, ptr %a435) - %t437 = icmp ne i32 %t436, 0 - br label %logic.rend7114 -logic.rend7114: - br label %logic.end7113 -logic.end7113: - %t438 = phi i1 [ true, %logic.from7111 ], [ %t437, %logic.rend7114 ] - br label %logic.from7115 -logic.from7115: - br i1 %t438, label %logic.end7117, label %logic.rhs7116 -logic.rhs7116: - %t439 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t439, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.4634, i64 5, i64 0 }, ptr %a441 - %t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441) - %t443 = icmp ne i32 %t442, 0 - br label %logic.rend7118 -logic.rend7118: - br label %logic.end7117 -logic.end7117: - %t444 = phi i1 [ true, %logic.from7115 ], [ %t443, %logic.rend7118 ] - br label %logic.from7119 -logic.from7119: - br i1 %t444, label %logic.end7121, label %logic.rhs7120 -logic.rhs7120: - %t445 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t445, ptr %a446 - store { ptr, i64, i64 } { ptr @.str.4635, i64 3, i64 0 }, ptr %a447 - %t448 = call i32 @finch_str_eq(ptr %a446, ptr %a447) - %t449 = icmp ne i32 %t448, 0 - br label %logic.rend7122 -logic.rend7122: - br label %logic.end7121 -logic.end7121: - %t450 = phi i1 [ true, %logic.from7119 ], [ %t449, %logic.rend7122 ] - br label %logic.from7123 -logic.from7123: - br i1 %t450, label %logic.end7125, label %logic.rhs7124 -logic.rhs7124: - %t451 = load { ptr, i64, i64 }, ptr %a179 +inrange7415: + %t418 = extractvalue { ptr, i64, i64 } %t415, 0 + %t419 = getelementptr inbounds %S.ast.Type, ptr %t418, i64 0 + %t420 = getelementptr inbounds %S.ast.Type, ptr %t419, i32 0, i32 0 + %t421 = load { ptr, i64, i64 }, ptr %t420 + store { ptr, i64, i64 } %t421, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.4865, i64 4, i64 0 }, ptr %a423 + %t424 = call i32 @finch_str_eq(ptr %a422, ptr %a423) + %t425 = icmp ne i32 %t424, 0 + br label %logic.rend7416 +logic.rend7416: + br label %logic.end7413 +logic.end7413: + %t426 = phi i1 [ true, %logic.from7411 ], [ %t425, %logic.rend7416 ] + br label %logic.rend7417 +logic.rend7417: + br label %logic.end7408 +logic.end7408: + %t427 = phi i1 [ false, %logic.from7406 ], [ %t426, %logic.rend7417 ] + br i1 %t427, label %then7418, label %else7419 +then7418: + %t428 = load ptr, ptr %a1 + %t429 = load { ptr, i64, i64 }, ptr %a195 + call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } { ptr @.str.4866, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4867, i64 15, i64 0 }, { ptr, i64, i64 } %t429) + %t430 = load ptr, ptr %a1 + %t431 = load { ptr, i64, i64 }, ptr %a195 + store { ptr, i64, i64 } { ptr @.str.4868, i64 36, i64 0 }, ptr %a433 + store { ptr, i64, i64 } %t431, ptr %a434 + call void @finch_str_concat(ptr %a432, ptr %a433, ptr %a434) + %t435 = load { ptr, i64, i64 }, ptr %a432 + store { ptr, i64, i64 } %t435, ptr %a437 + store { ptr, i64, i64 } { ptr @.str.4869, i64 6, i64 0 }, ptr %a438 + call void @finch_str_concat(ptr %a436, ptr %a437, ptr %a438) + %t439 = load { ptr, i64, i64 }, ptr %a436 + %t440 = load ptr, ptr %a1 + %t441 = load %S.gen.Val, ptr %a192 + %t442 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t440, %S.gen.Val %t441) + store { ptr, i64, i64 } %t439, ptr %a444 + store { ptr, i64, i64 } %t442, ptr %a445 + call void @finch_str_concat(ptr %a443, ptr %a444, ptr %a445) + %t446 = load { ptr, i64, i64 }, ptr %a443 + store { ptr, i64, i64 } %t446, ptr %a448 + store { ptr, i64, i64 } { ptr @.str.4870, i64 1, i64 0 }, ptr %a449 + call void @finch_str_concat(ptr %a447, ptr %a448, ptr %a449) + %t450 = load { ptr, i64, i64 }, ptr %a447 + call void @finch.gen.emit(ptr %t430, { ptr, i64, i64 } %t450) + br label %endif7420 +else7419: + %t451 = load { ptr, i64, i64 }, ptr %a202 store { ptr, i64, i64 } %t451, ptr %a452 - store { ptr, i64, i64 } { ptr @.str.4636, i64 6, i64 0 }, ptr %a453 + store { ptr, i64, i64 } { ptr @.str.4871, i64 4, i64 0 }, ptr %a453 %t454 = call i32 @finch_str_eq(ptr %a452, ptr %a453) %t455 = icmp ne i32 %t454, 0 - br label %logic.rend7126 -logic.rend7126: - br label %logic.end7125 -logic.end7125: - %t456 = phi i1 [ true, %logic.from7123 ], [ %t455, %logic.rend7126 ] - br label %logic.from7127 -logic.from7127: - br i1 %t456, label %logic.end7129, label %logic.rhs7128 -logic.rhs7128: - %t457 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t457, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.4637, i64 4, i64 0 }, ptr %a459 - %t460 = call i32 @finch_str_eq(ptr %a458, ptr %a459) - %t461 = icmp ne i32 %t460, 0 - br label %logic.rend7130 -logic.rend7130: - br label %logic.end7129 -logic.end7129: - %t462 = phi i1 [ true, %logic.from7127 ], [ %t461, %logic.rend7130 ] - br i1 %t462, label %then7131, label %else7132 -then7131: - %t463 = load ptr, ptr %a1 - %t464 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.store(ptr %t463, { ptr, i64, i64 } { ptr @.str.4638, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4639, i64 15, i64 0 }, { ptr, i64, i64 } %t464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a172 - %t467 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 0 - %t468 = load { ptr, i64, i64 }, ptr %t467 - %t469 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t470 = load %S.ast.Type, ptr %t469 - call void @finch.gen.emitFormat(ptr %t465, { ptr, i64, i64 } %t466, { ptr, i64, i64 } %t468, %S.ast.Type %t470, i1 false) - br label %endif7133 -else7132: - %t471 = load ptr, ptr %a1 - %t472 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t473 = load { ptr, i64, i64 }, ptr %t472 - %t474 = extractvalue { ptr, i64, i64 } %t473, 1 - %t475 = icmp uge i64 0, %t474 - br i1 %t475, label %range7134, label %inrange7135 -range7134: - call void @finch_panic_index(ptr @.str.4640, i64 4228, i64 0, i64 %t474) + br label %logic.from7421 +logic.from7421: + br i1 %t455, label %logic.end7423, label %logic.rhs7422 +logic.rhs7422: + %t456 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t456, ptr %a457 + store { ptr, i64, i64 } { ptr @.str.4872, i64 4, i64 0 }, ptr %a458 + %t459 = call i32 @finch_str_eq(ptr %a457, ptr %a458) + %t460 = icmp ne i32 %t459, 0 + br label %logic.rend7424 +logic.rend7424: + br label %logic.end7423 +logic.end7423: + %t461 = phi i1 [ true, %logic.from7421 ], [ %t460, %logic.rend7424 ] + br label %logic.from7425 +logic.from7425: + br i1 %t461, label %logic.end7427, label %logic.rhs7426 +logic.rhs7426: + %t462 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t462, ptr %a463 + store { ptr, i64, i64 } { ptr @.str.4873, i64 5, i64 0 }, ptr %a464 + %t465 = call i32 @finch_str_eq(ptr %a463, ptr %a464) + %t466 = icmp ne i32 %t465, 0 + br label %logic.rend7428 +logic.rend7428: + br label %logic.end7427 +logic.end7427: + %t467 = phi i1 [ true, %logic.from7425 ], [ %t466, %logic.rend7428 ] + br label %logic.from7429 +logic.from7429: + br i1 %t467, label %logic.end7431, label %logic.rhs7430 +logic.rhs7430: + %t468 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t468, ptr %a469 + store { ptr, i64, i64 } { ptr @.str.4874, i64 3, i64 0 }, ptr %a470 + %t471 = call i32 @finch_str_eq(ptr %a469, ptr %a470) + %t472 = icmp ne i32 %t471, 0 + br label %logic.rend7432 +logic.rend7432: + br label %logic.end7431 +logic.end7431: + %t473 = phi i1 [ true, %logic.from7429 ], [ %t472, %logic.rend7432 ] + br label %logic.from7433 +logic.from7433: + br i1 %t473, label %logic.end7435, label %logic.rhs7434 +logic.rhs7434: + %t474 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t474, ptr %a475 + store { ptr, i64, i64 } { ptr @.str.4875, i64 6, i64 0 }, ptr %a476 + %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) + %t478 = icmp ne i32 %t477, 0 + br label %logic.rend7436 +logic.rend7436: + br label %logic.end7435 +logic.end7435: + %t479 = phi i1 [ true, %logic.from7433 ], [ %t478, %logic.rend7436 ] + br label %logic.from7437 +logic.from7437: + br i1 %t479, label %logic.end7439, label %logic.rhs7438 +logic.rhs7438: + %t480 = load { ptr, i64, i64 }, ptr %a202 + store { ptr, i64, i64 } %t480, ptr %a481 + store { ptr, i64, i64 } { ptr @.str.4876, i64 4, i64 0 }, ptr %a482 + %t483 = call i32 @finch_str_eq(ptr %a481, ptr %a482) + %t484 = icmp ne i32 %t483, 0 + br label %logic.rend7440 +logic.rend7440: + br label %logic.end7439 +logic.end7439: + %t485 = phi i1 [ true, %logic.from7437 ], [ %t484, %logic.rend7440 ] + br i1 %t485, label %then7441, label %else7442 +then7441: + %t486 = load ptr, ptr %a1 + %t487 = load { ptr, i64, i64 }, ptr %a195 + call void @finch.gen.store(ptr %t486, { ptr, i64, i64 } { ptr @.str.4877, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4878, i64 15, i64 0 }, { ptr, i64, i64 } %t487) + %t488 = load ptr, ptr %a1 + %t489 = load { ptr, i64, i64 }, ptr %a195 + %t490 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 0 + %t491 = load { ptr, i64, i64 }, ptr %t490 + %t492 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t493 = load %S.ast.Type, ptr %t492 + call void @finch.gen.emitFormat(ptr %t488, { ptr, i64, i64 } %t489, { ptr, i64, i64 } %t491, %S.ast.Type %t493, i1 false) + br label %endif7443 +else7442: + %t494 = load ptr, ptr %a1 + %t495 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t496 = load { ptr, i64, i64 }, ptr %t495 + %t497 = extractvalue { ptr, i64, i64 } %t496, 1 + %t498 = icmp uge i64 0, %t497 + br i1 %t498, label %range7444, label %inrange7445 +range7444: + call void @finch_panic_index(ptr @.str.4879, i64 4372, i64 0, i64 %t497) unreachable -inrange7135: - %t476 = extractvalue { ptr, i64, i64 } %t473, 0 - %t477 = getelementptr inbounds %S.ast.Node, ptr %t476, i64 0 - %t478 = load %S.ast.Node, ptr %t477 - %t479 = getelementptr inbounds %S.gen.Val, ptr %a169, i32 0, i32 1 - %t480 = load %S.ast.Type, ptr %t479 - %t481 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t480) - store { ptr, i64, i64 } { ptr @.str.4641, i64 11, i64 0 }, ptr %a483 - store { ptr, i64, i64 } %t481, ptr %a484 - call void @finch_str_concat(ptr %a482, ptr %a483, ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a482 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.4642, i64 9, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - %t489 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t471, %S.ast.Node %t478, { ptr, i64, i64 } %t489) - br label %endif7133 -endif7133: - br label %endif7110 -endif7110: - br label %endif7095 -endif7095: - br label %endif7092 -endif7092: - br label %endif7089 -endif7089: - br label %endif7086 -endif7086: - br label %endif7083 -endif7083: - br label %endif7080 -endif7080: - br label %endif7077 -endif7077: - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a172 - %t492 = call { ptr, i64, i64 } @finch.gen.load(ptr %t490, { ptr, i64, i64 } { ptr @.str.4643, i64 17, i64 0 }, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4644, i64 3, i64 0 }) - %t495 = insertvalue %S.gen.Val %t493, %S.ast.Type %t494, 1 - %t496 = insertvalue %S.gen.Val %t495, i1 true, 2 - ret %S.gen.Val %t496 -endif7072: - %t497 = load { ptr, i64, i64 }, ptr %a8 - %t498 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t497) - store { ptr, i64, i64 } %t498, ptr %a499 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %a499, i32 0, i32 1 - %t501 = load i64, ptr %t500 - %t502 = icmp sgt i64 %t501, 0 - br i1 %t502, label %then7136, label %endif7138 -then7136: - %t503 = load ptr, ptr %a1 - %t504 = load %S.ast.Node, ptr %a2 - %t505 = load { ptr, i64, i64 }, ptr %a499 - %t506 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t505) - %t507 = call %S.gen.Val @finch.gen.convert(ptr %t503, %S.ast.Node %t504, %S.ast.Type %t506) - ret %S.gen.Val %t507 -endif7138: - %t508 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t508, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.4645, i64 9, i64 0 }, ptr %a510 - %t511 = call i32 @finch_str_eq(ptr %a509, ptr %a510) - %t512 = icmp ne i32 %t511, 0 - br label %logic.from7139 -logic.from7139: - br i1 %t512, label %logic.end7141, label %logic.rhs7140 -logic.rhs7140: - %t513 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t513, ptr %a514 - store { ptr, i64, i64 } { ptr @.str.4646, i64 11, i64 0 }, ptr %a515 - %t516 = call i32 @finch_str_eq(ptr %a514, ptr %a515) - %t517 = icmp ne i32 %t516, 0 - br label %logic.rend7142 -logic.rend7142: - br label %logic.end7141 -logic.end7141: - %t518 = phi i1 [ true, %logic.from7139 ], [ %t517, %logic.rend7142 ] - br i1 %t518, label %then7143, label %endif7145 -then7143: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - %t521 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t519, %S.ast.Node %t520, i64 0, i64 1, { ptr, i64, i64 } %t521) - %t522 = load ptr, ptr %a1 - %t523 = load ptr, ptr %a1 - %t524 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t525 = load { ptr, i64, i64 }, ptr %t524 - %t526 = extractvalue { ptr, i64, i64 } %t525, 1 - %t527 = icmp uge i64 0, %t526 - br i1 %t527, label %range7146, label %inrange7147 -range7146: - call void @finch_panic_index(ptr @.str.4647, i64 4238, i64 0, i64 %t526) +inrange7445: + %t499 = extractvalue { ptr, i64, i64 } %t496, 0 + %t500 = getelementptr inbounds %S.ast.Node, ptr %t499, i64 0 + %t501 = load %S.ast.Node, ptr %t500 + %t502 = getelementptr inbounds %S.gen.Val, ptr %a192, i32 0, i32 1 + %t503 = load %S.ast.Type, ptr %t502 + %t504 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t503) + store { ptr, i64, i64 } { ptr @.str.4880, i64 11, i64 0 }, ptr %a506 + store { ptr, i64, i64 } %t504, ptr %a507 + call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507) + %t508 = load { ptr, i64, i64 }, ptr %a505 + store { ptr, i64, i64 } %t508, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.4881, i64 9, i64 0 }, ptr %a511 + call void @finch_str_concat(ptr %a509, ptr %a510, ptr %a511) + %t512 = load { ptr, i64, i64 }, ptr %a509 + call void @finch.gen.fail(ptr %t494, %S.ast.Node %t501, { ptr, i64, i64 } %t512) + br label %endif7443 +endif7443: + br label %endif7420 +endif7420: + br label %endif7405 +endif7405: + br label %endif7402 +endif7402: + br label %endif7399 +endif7399: + br label %endif7396 +endif7396: + br label %endif7393 +endif7393: + br label %endif7390 +endif7390: + br label %endif7387 +endif7387: + %t513 = load ptr, ptr %a1 + %t514 = load { ptr, i64, i64 }, ptr %a195 + %t515 = call { ptr, i64, i64 } @finch.gen.load(ptr %t513, { ptr, i64, i64 } { ptr @.str.4882, i64 17, i64 0 }, { ptr, i64, i64 } %t514) + %t516 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t515, 0 + %t517 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4883, i64 3, i64 0 }) + %t518 = insertvalue %S.gen.Val %t516, %S.ast.Type %t517, 1 + %t519 = insertvalue %S.gen.Val %t518, i1 true, 2 + ret %S.gen.Val %t519 +endif7382: + %t520 = load { ptr, i64, i64 }, ptr %a8 + %t521 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t520) + store { ptr, i64, i64 } %t521, ptr %a522 + %t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %a522, i32 0, i32 1 + %t524 = load i64, ptr %t523 + %t525 = icmp sgt i64 %t524, 0 + br i1 %t525, label %then7446, label %endif7448 +then7446: + %t526 = load ptr, ptr %a1 + %t527 = load %S.ast.Node, ptr %a2 + %t528 = load { ptr, i64, i64 }, ptr %a522 + %t529 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t528) + %t530 = call %S.gen.Val @finch.gen.convert(ptr %t526, %S.ast.Node %t527, %S.ast.Type %t529) + ret %S.gen.Val %t530 +endif7448: + %t531 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t531, ptr %a532 + store { ptr, i64, i64 } { ptr @.str.4884, i64 9, i64 0 }, ptr %a533 + %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) + %t535 = icmp ne i32 %t534, 0 + br label %logic.from7449 +logic.from7449: + br i1 %t535, label %logic.end7451, label %logic.rhs7450 +logic.rhs7450: + %t536 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t536, ptr %a537 + store { ptr, i64, i64 } { ptr @.str.4885, i64 11, i64 0 }, ptr %a538 + %t539 = call i32 @finch_str_eq(ptr %a537, ptr %a538) + %t540 = icmp ne i32 %t539, 0 + br label %logic.rend7452 +logic.rend7452: + br label %logic.end7451 +logic.end7451: + %t541 = phi i1 [ true, %logic.from7449 ], [ %t540, %logic.rend7452 ] + br i1 %t541, label %then7453, label %endif7455 +then7453: + %t542 = load ptr, ptr %a1 + %t543 = load %S.ast.Node, ptr %a2 + %t544 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t542, %S.ast.Node %t543, i64 0, i64 1, { ptr, i64, i64 } %t544) + %t545 = load ptr, ptr %a1 + %t546 = load ptr, ptr %a1 + %t547 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t548 = load { ptr, i64, i64 }, ptr %t547 + %t549 = extractvalue { ptr, i64, i64 } %t548, 1 + %t550 = icmp uge i64 0, %t549 + br i1 %t550, label %range7456, label %inrange7457 +range7456: + call void @finch_panic_index(ptr @.str.4886, i64 4382, i64 0, i64 %t549) unreachable -inrange7147: - %t528 = extractvalue { ptr, i64, i64 } %t525, 0 - %t529 = getelementptr inbounds %S.ast.Node, ptr %t528, i64 0 - %t530 = load %S.ast.Node, ptr %t529 - %t531 = call %S.gen.Val @finch.gen.strArg(ptr %t523, %S.ast.Node %t530, { ptr, i64, i64 } { ptr @.str.4648, i64 13, i64 0 }) - %t532 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t522, %S.gen.Val %t531) - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t534, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.4649, i64 11, i64 0 }, ptr %a536 - %t537 = call i32 @finch_str_eq(ptr %a535, ptr %a536) - %t538 = icmp ne i32 %t537, 0 - br i1 %t538, label %then7148, label %endif7150 -then7148: - %t539 = load ptr, ptr %a1 - %t540 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.4650, i64 32, i64 0 }, ptr %a542 - store { ptr, i64, i64 } %t540, ptr %a543 - call void @finch_str_concat(ptr %a541, ptr %a542, ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a541 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4651, i64 1, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - %t548 = load { ptr, i64, i64 }, ptr %a545 - %t549 = call { ptr, i64, i64 } @finch.gen.op(ptr %t539, { ptr, i64, i64 } %t548) - store { ptr, i64, i64 } %t549, ptr %a550 - %t551 = load ptr, ptr %a1 - %t552 = load { ptr, i64, i64 }, ptr %a550 - store { ptr, i64, i64 } { ptr @.str.4652, i64 12, i64 0 }, ptr %a554 - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t556, ptr %a558 - store { ptr, i64, i64 } { ptr @.str.4653, i64 3, i64 0 }, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - %t561 = call { ptr, i64, i64 } @finch.gen.op(ptr %t551, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4654, i64 4, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - ret %S.gen.Val %t564 -endif7150: - %t565 = load ptr, ptr %a1 - %t566 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t565) - store { ptr, i64, i64 } %t566, ptr %a567 - %t568 = load ptr, ptr %a1 - %t569 = icmp eq ptr %t568, null - br i1 %t569, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4655, i64 4244, ptr @.str.4656) +inrange7457: + %t551 = extractvalue { ptr, i64, i64 } %t548, 0 + %t552 = getelementptr inbounds %S.ast.Node, ptr %t551, i64 0 + %t553 = load %S.ast.Node, ptr %t552 + %t554 = call %S.gen.Val @finch.gen.strArg(ptr %t546, %S.ast.Node %t553, { ptr, i64, i64 } { ptr @.str.4887, i64 13, i64 0 }) + %t555 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t545, %S.gen.Val %t554) + store { ptr, i64, i64 } %t555, ptr %a556 + %t557 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t557, ptr %a558 + store { ptr, i64, i64 } { ptr @.str.4888, i64 11, i64 0 }, ptr %a559 + %t560 = call i32 @finch_str_eq(ptr %a558, ptr %a559) + %t561 = icmp ne i32 %t560, 0 + br i1 %t561, label %then7458, label %endif7460 +then7458: + %t562 = load ptr, ptr %a1 + %t563 = load { ptr, i64, i64 }, ptr %a556 + store { ptr, i64, i64 } { ptr @.str.4889, i64 32, i64 0 }, ptr %a565 + store { ptr, i64, i64 } %t563, ptr %a566 + call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) + %t567 = load { ptr, i64, i64 }, ptr %a564 + store { ptr, i64, i64 } %t567, ptr %a569 + store { ptr, i64, i64 } { ptr @.str.4890, i64 1, i64 0 }, ptr %a570 + call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) + %t571 = load { ptr, i64, i64 }, ptr %a568 + %t572 = call { ptr, i64, i64 } @finch.gen.op(ptr %t562, { ptr, i64, i64 } %t571) + store { ptr, i64, i64 } %t572, ptr %a573 + %t574 = load ptr, ptr %a1 + %t575 = load { ptr, i64, i64 }, ptr %a573 + store { ptr, i64, i64 } { ptr @.str.4891, i64 12, i64 0 }, ptr %a577 + store { ptr, i64, i64 } %t575, ptr %a578 + call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) + %t579 = load { ptr, i64, i64 }, ptr %a576 + store { ptr, i64, i64 } %t579, ptr %a581 + store { ptr, i64, i64 } { ptr @.str.4892, i64 3, i64 0 }, ptr %a582 + call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) + %t583 = load { ptr, i64, i64 }, ptr %a580 + %t584 = call { ptr, i64, i64 } @finch.gen.op(ptr %t574, { ptr, i64, i64 } %t583) + %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 + %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4893, i64 4, i64 0 }) + %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 + ret %S.gen.Val %t587 +endif7460: + %t588 = load ptr, ptr %a1 + %t589 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t588) + store { ptr, i64, i64 } %t589, ptr %a590 + %t591 = load ptr, ptr %a1 + %t592 = icmp eq ptr %t591, null + br i1 %t592, label %panic7461, label %ok7462 +panic7461: + call void @finch_panic(ptr @.str.4894, i64 4388, ptr @.str.4895) unreachable -ok7152: - %t570 = getelementptr inbounds %S.gen.Gen, ptr %t568, i32 0, i32 37 - %t571 = load { ptr, i64, i64 }, ptr %t570 - %t572 = load %S.ast.Node, ptr %a2 - %t573 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t572) - store { ptr, i64, i64 } %t571, ptr %a574 - store { ptr, i64, i64 } %t573, ptr %a575 - %t576 = call i32 @finch_str_eq(ptr %a574, ptr %a575) - %t577 = icmp ne i32 %t576, 0 - br i1 %t577, label %then7153, label %endif7155 -then7153: - %t578 = load ptr, ptr %a1 - %t579 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t578, { ptr, i64, i64 } { ptr @.str.4657, i64 17, i64 0 }) - store { ptr, i64, i64 } %t579, ptr %a580 - %t581 = load ptr, ptr %a1 - %t582 = load { ptr, i64, i64 }, ptr %a567 - call void @finch.gen.store(ptr %t581, { ptr, i64, i64 } { ptr @.str.4658, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4659, i64 15, i64 0 }, { ptr, i64, i64 } %t582) - %t583 = load ptr, ptr %a1 - %t584 = load { ptr, i64, i64 }, ptr %a580 - call void @finch.gen.store(ptr %t583, { ptr, i64, i64 } { ptr @.str.4660, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4661, i64 15, i64 0 }, { ptr, i64, i64 } %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.4662, i64 34, i64 0 }, ptr %a588 - store { ptr, i64, i64 } %t586, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4663, i64 6, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - %t594 = load { ptr, i64, i64 }, ptr %a591 - %t595 = load { ptr, i64, i64 }, ptr %a533 +ok7462: + %t593 = getelementptr inbounds %S.gen.Gen, ptr %t591, i32 0, i32 39 + %t594 = load { ptr, i64, i64 }, ptr %t593 + %t595 = load %S.ast.Node, ptr %a2 + %t596 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t595) store { ptr, i64, i64 } %t594, ptr %a597 - store { ptr, i64, i64 } %t595, ptr %a598 - call void @finch_str_concat(ptr %a596, ptr %a597, ptr %a598) - %t599 = load { ptr, i64, i64 }, ptr %a596 - store { ptr, i64, i64 } %t599, ptr %a601 - store { ptr, i64, i64 } { ptr @.str.4664, i64 6, i64 0 }, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a600 - %t604 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t603, ptr %a606 - store { ptr, i64, i64 } %t604, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.4665, i64 1, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a609 - %t613 = call { ptr, i64, i64 } @finch.gen.op(ptr %t585, { ptr, i64, i64 } %t612) - store { ptr, i64, i64 } %t613, ptr %a614 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a614 - store { ptr, i64, i64 } { ptr @.str.4666, i64 12, i64 0 }, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4667, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a621 - %t625 = call { ptr, i64, i64 } @finch.gen.op(ptr %t615, { ptr, i64, i64 } %t624) - %t626 = load ptr, ptr %a1 - %t627 = icmp eq ptr %t626, null - br i1 %t627, label %panic7156, label %ok7157 -panic7156: - call void @finch_panic(ptr @.str.4668, i64 4249, ptr @.str.4669) + store { ptr, i64, i64 } %t596, ptr %a598 + %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) + %t600 = icmp ne i32 %t599, 0 + br i1 %t600, label %then7463, label %endif7465 +then7463: + %t601 = load ptr, ptr %a1 + %t602 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t601, { ptr, i64, i64 } { ptr @.str.4896, i64 17, i64 0 }) + store { ptr, i64, i64 } %t602, ptr %a603 + %t604 = load ptr, ptr %a1 + %t605 = load { ptr, i64, i64 }, ptr %a590 + call void @finch.gen.store(ptr %t604, { ptr, i64, i64 } { ptr @.str.4897, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4898, i64 15, i64 0 }, { ptr, i64, i64 } %t605) + %t606 = load ptr, ptr %a1 + %t607 = load { ptr, i64, i64 }, ptr %a603 + call void @finch.gen.store(ptr %t606, { ptr, i64, i64 } { ptr @.str.4899, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4900, i64 15, i64 0 }, { ptr, i64, i64 } %t607) + %t608 = load ptr, ptr %a1 + %t609 = load { ptr, i64, i64 }, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.4901, i64 34, i64 0 }, ptr %a611 + store { ptr, i64, i64 } %t609, ptr %a612 + call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a610 + store { ptr, i64, i64 } %t613, ptr %a615 + store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a616 + call void @finch_str_concat(ptr %a614, ptr %a615, ptr %a616) + %t617 = load { ptr, i64, i64 }, ptr %a614 + %t618 = load { ptr, i64, i64 }, ptr %a556 + store { ptr, i64, i64 } %t617, ptr %a620 + store { ptr, i64, i64 } %t618, ptr %a621 + call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) + %t622 = load { ptr, i64, i64 }, ptr %a619 + store { ptr, i64, i64 } %t622, ptr %a624 + store { ptr, i64, i64 } { ptr @.str.4903, i64 6, i64 0 }, ptr %a625 + call void @finch_str_concat(ptr %a623, ptr %a624, ptr %a625) + %t626 = load { ptr, i64, i64 }, ptr %a623 + %t627 = load { ptr, i64, i64 }, ptr %a603 + store { ptr, i64, i64 } %t626, ptr %a629 + store { ptr, i64, i64 } %t627, ptr %a630 + call void @finch_str_concat(ptr %a628, ptr %a629, ptr %a630) + %t631 = load { ptr, i64, i64 }, ptr %a628 + store { ptr, i64, i64 } %t631, ptr %a633 + store { ptr, i64, i64 } { ptr @.str.4904, i64 1, i64 0 }, ptr %a634 + call void @finch_str_concat(ptr %a632, ptr %a633, ptr %a634) + %t635 = load { ptr, i64, i64 }, ptr %a632 + %t636 = call { ptr, i64, i64 } @finch.gen.op(ptr %t608, { ptr, i64, i64 } %t635) + store { ptr, i64, i64 } %t636, ptr %a637 + %t638 = load ptr, ptr %a1 + %t639 = load { ptr, i64, i64 }, ptr %a637 + store { ptr, i64, i64 } { ptr @.str.4905, i64 12, i64 0 }, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + %t643 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t643, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.4906, i64 3, i64 0 }, ptr %a646 + call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646) + %t647 = load { ptr, i64, i64 }, ptr %a644 + %t648 = call { ptr, i64, i64 } @finch.gen.op(ptr %t638, { ptr, i64, i64 } %t647) + %t649 = load ptr, ptr %a1 + %t650 = icmp eq ptr %t649, null + br i1 %t650, label %panic7466, label %ok7467 +panic7466: + call void @finch_panic(ptr @.str.4907, i64 4393, ptr @.str.4908) unreachable -ok7157: - %t628 = getelementptr inbounds %S.gen.Gen, ptr %t626, i32 0, i32 38 - store { ptr, i64, i64 } %t625, ptr %t628 - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a580 - %t631 = call { ptr, i64, i64 } @finch.gen.load(ptr %t629, { ptr, i64, i64 } { ptr @.str.4670, i64 17, i64 0 }, { ptr, i64, i64 } %t630) - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic7158, label %ok7159 -panic7158: - call void @finch_panic(ptr @.str.4671, i64 4250, ptr @.str.4672) +ok7467: + %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 40 + store { ptr, i64, i64 } %t648, ptr %t651 + %t652 = load ptr, ptr %a1 + %t653 = load { ptr, i64, i64 }, ptr %a603 + %t654 = call { ptr, i64, i64 } @finch.gen.load(ptr %t652, { ptr, i64, i64 } { ptr @.str.4909, i64 17, i64 0 }, { ptr, i64, i64 } %t653) + %t655 = load ptr, ptr %a1 + %t656 = icmp eq ptr %t655, null + br i1 %t656, label %panic7468, label %ok7469 +panic7468: + call void @finch_panic(ptr @.str.4910, i64 4394, ptr @.str.4911) unreachable -ok7159: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 39 - store { ptr, i64, i64 } %t631, ptr %t634 - %t635 = load ptr, ptr %a1 - %t636 = load { ptr, i64, i64 }, ptr %a567 - %t637 = call { ptr, i64, i64 } @finch.gen.load(ptr %t635, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }, { ptr, i64, i64 } %t636) - %t638 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t637, 0 - %t639 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4674, i64 3, i64 0 }) - %t640 = insertvalue %S.gen.Val %t638, %S.ast.Type %t639, 1 - %t641 = insertvalue %S.gen.Val %t640, i1 true, 2 - ret %S.gen.Val %t641 -endif7155: - %t642 = load ptr, ptr %a1 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic7160, label %ok7161 -panic7160: - call void @finch_panic(ptr @.str.4675, i64 4253, ptr @.str.4676) +ok7469: + %t657 = getelementptr inbounds %S.gen.Gen, ptr %t655, i32 0, i32 41 + store { ptr, i64, i64 } %t654, ptr %t657 + %t658 = load ptr, ptr %a1 + %t659 = load { ptr, i64, i64 }, ptr %a590 + %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t658, { ptr, i64, i64 } { ptr @.str.4912, i64 17, i64 0 }, { ptr, i64, i64 } %t659) + %t661 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t660, 0 + %t662 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4913, i64 3, i64 0 }) + %t663 = insertvalue %S.gen.Val %t661, %S.ast.Type %t662, 1 + %t664 = insertvalue %S.gen.Val %t663, i1 true, 2 + ret %S.gen.Val %t664 +endif7465: + %t665 = load ptr, ptr %a1 + %t666 = load ptr, ptr %a1 + %t667 = icmp eq ptr %t666, null + br i1 %t667, label %panic7470, label %ok7471 +panic7470: + call void @finch_panic(ptr @.str.4914, i64 4397, ptr @.str.4915) unreachable -ok7161: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 1 - %t646 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t647 = load i64, ptr %t646 - %t648 = load { ptr, i64, i64 }, ptr %t645 - %t649 = extractvalue { ptr, i64, i64 } %t648, 1 - %t650 = icmp uge i64 %t647, %t649 - br i1 %t650, label %range7162, label %inrange7163 -range7162: - call void @finch_panic_index(ptr @.str.4677, i64 4253, i64 %t647, i64 %t649) +ok7471: + %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 1 + %t669 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 + %t670 = load i64, ptr %t669 + %t671 = load { ptr, i64, i64 }, ptr %t668 + %t672 = extractvalue { ptr, i64, i64 } %t671, 1 + %t673 = icmp uge i64 %t670, %t672 + br i1 %t673, label %range7472, label %inrange7473 +range7472: + call void @finch_panic_index(ptr @.str.4916, i64 4397, i64 %t670, i64 %t672) unreachable -inrange7163: - %t651 = extractvalue { ptr, i64, i64 } %t648, 0 - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t651, i64 %t647 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t642, { ptr, i64, i64 } %t653) - store { ptr, i64, i64 } %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.4678, i64 31, i64 0 }, ptr %a659 - store { ptr, i64, i64 } %t657, ptr %a660 - call void @finch_str_concat(ptr %a658, ptr %a659, ptr %a660) - %t661 = load { ptr, i64, i64 }, ptr %a658 - store { ptr, i64, i64 } %t661, ptr %a663 - store { ptr, i64, i64 } { ptr @.str.4679, i64 6, i64 0 }, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a662 - %t666 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t665, ptr %a668 - store { ptr, i64, i64 } %t666, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a667 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a671 - %t675 = load { ptr, i64, i64 }, ptr %a655 - store { ptr, i64, i64 } %t674, ptr %a677 - store { ptr, i64, i64 } %t675, ptr %a678 - call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678) - %t679 = load { ptr, i64, i64 }, ptr %a676 - store { ptr, i64, i64 } %t679, ptr %a681 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a682 - call void @finch_str_concat(ptr %a680, ptr %a681, ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a680 - %t684 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t685 = load i64, ptr %t684 - call void @finch_str_from_int(ptr %a686, i64 %t685) - %t687 = load { ptr, i64, i64 }, ptr %a686 - store { ptr, i64, i64 } %t683, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - %t691 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t691, ptr %a693 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a694 - call void @finch_str_concat(ptr %a692, ptr %a693, ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a692 - call void @finch.gen.emit(ptr %t656, { ptr, i64, i64 } %t695) - %t696 = load ptr, ptr %a1 - %t697 = load { ptr, i64, i64 }, ptr %a567 - %t698 = call { ptr, i64, i64 } @finch.gen.load(ptr %t696, { ptr, i64, i64 } { ptr @.str.4683, i64 17, i64 0 }, { ptr, i64, i64 } %t697) - %t699 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t698, 0 - %t700 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }) - %t701 = insertvalue %S.gen.Val %t699, %S.ast.Type %t700, 1 - %t702 = insertvalue %S.gen.Val %t701, i1 true, 2 - ret %S.gen.Val %t702 -endif7145: - %t703 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t703, ptr %a704 - store { ptr, i64, i64 } { ptr @.str.4685, i64 10, i64 0 }, ptr %a705 - %t706 = call i32 @finch_str_eq(ptr %a704, ptr %a705) - %t707 = icmp ne i32 %t706, 0 - br i1 %t707, label %then7164, label %endif7166 -then7164: - %t708 = load ptr, ptr %a1 - %t709 = load %S.ast.Node, ptr %a2 - %t710 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t708, %S.ast.Node %t709, i64 0, i64 2, { ptr, i64, i64 } %t710) - %t711 = load ptr, ptr %a1 - %t712 = load ptr, ptr %a1 - %t713 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t714 = load { ptr, i64, i64 }, ptr %t713 - %t715 = extractvalue { ptr, i64, i64 } %t714, 1 - %t716 = icmp uge i64 0, %t715 - br i1 %t716, label %range7167, label %inrange7168 -range7167: - call void @finch_panic_index(ptr @.str.4686, i64 4259, i64 0, i64 %t715) - unreachable -inrange7168: - %t717 = extractvalue { ptr, i64, i64 } %t714, 0 - %t718 = getelementptr inbounds %S.ast.Node, ptr %t717, i64 0 - %t719 = load %S.ast.Node, ptr %t718 - %t720 = call %S.gen.Val @finch.gen.strArg(ptr %t712, %S.ast.Node %t719, { ptr, i64, i64 } { ptr @.str.4687, i64 13, i64 0 }) - %t721 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t711, %S.gen.Val %t720) - store { ptr, i64, i64 } %t721, ptr %a722 - %t723 = load ptr, ptr %a1 - %t724 = load ptr, ptr %a1 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = extractvalue { ptr, i64, i64 } %t726, 1 - %t728 = icmp uge i64 1, %t727 - br i1 %t728, label %range7169, label %inrange7170 -range7169: - call void @finch_panic_index(ptr @.str.4688, i64 4260, i64 1, i64 %t727) - unreachable -inrange7170: - %t729 = extractvalue { ptr, i64, i64 } %t726, 0 - %t730 = getelementptr inbounds %S.ast.Node, ptr %t729, i64 1 - %t731 = load %S.ast.Node, ptr %t730 - %t732 = call %S.gen.Val @finch.gen.strArg(ptr %t724, %S.ast.Node %t731, { ptr, i64, i64 } { ptr @.str.4689, i64 8, i64 0 }) - %t733 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t723, %S.gen.Val %t732) - store { ptr, i64, i64 } %t733, ptr %a734 +inrange7473: + %t674 = extractvalue { ptr, i64, i64 } %t671, 0 + %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %t674, i64 %t670 + %t676 = load { ptr, i64, i64 }, ptr %t675 + %t677 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t665, { ptr, i64, i64 } %t676) + store { ptr, i64, i64 } %t677, ptr %a678 + %t679 = load ptr, ptr %a1 + %t680 = load { ptr, i64, i64 }, ptr %a590 + store { ptr, i64, i64 } { ptr @.str.4917, i64 31, i64 0 }, ptr %a682 + store { ptr, i64, i64 } %t680, ptr %a683 + call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) + %t684 = load { ptr, i64, i64 }, ptr %a681 + store { ptr, i64, i64 } %t684, ptr %a686 + store { ptr, i64, i64 } { ptr @.str.4918, i64 6, i64 0 }, ptr %a687 + call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) + %t688 = load { ptr, i64, i64 }, ptr %a685 + %t689 = load { ptr, i64, i64 }, ptr %a556 + store { ptr, i64, i64 } %t688, ptr %a691 + store { ptr, i64, i64 } %t689, ptr %a692 + call void @finch_str_concat(ptr %a690, ptr %a691, ptr %a692) + %t693 = load { ptr, i64, i64 }, ptr %a690 + store { ptr, i64, i64 } %t693, ptr %a695 + store { ptr, i64, i64 } { ptr @.str.4919, i64 6, i64 0 }, ptr %a696 + call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) + %t697 = load { ptr, i64, i64 }, ptr %a694 + %t698 = load { ptr, i64, i64 }, ptr %a678 + store { ptr, i64, i64 } %t697, ptr %a700 + store { ptr, i64, i64 } %t698, ptr %a701 + call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) + %t702 = load { ptr, i64, i64 }, ptr %a699 + store { ptr, i64, i64 } %t702, ptr %a704 + store { ptr, i64, i64 } { ptr @.str.4920, i64 6, i64 0 }, ptr %a705 + call void @finch_str_concat(ptr %a703, ptr %a704, ptr %a705) + %t706 = load { ptr, i64, i64 }, ptr %a703 + %t707 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 + %t708 = load i64, ptr %t707 + call void @finch_str_from_int(ptr %a709, i64 %t708) + %t710 = load { ptr, i64, i64 }, ptr %a709 + store { ptr, i64, i64 } %t706, ptr %a712 + store { ptr, i64, i64 } %t710, ptr %a713 + call void @finch_str_concat(ptr %a711, ptr %a712, ptr %a713) + %t714 = load { ptr, i64, i64 }, ptr %a711 + store { ptr, i64, i64 } %t714, ptr %a716 + store { ptr, i64, i64 } { ptr @.str.4921, i64 1, i64 0 }, ptr %a717 + call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717) + %t718 = load { ptr, i64, i64 }, ptr %a715 + call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t718) + %t719 = load ptr, ptr %a1 + %t720 = load { ptr, i64, i64 }, ptr %a590 + %t721 = call { ptr, i64, i64 } @finch.gen.load(ptr %t719, { ptr, i64, i64 } { ptr @.str.4922, i64 17, i64 0 }, { ptr, i64, i64 } %t720) + %t722 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t721, 0 + %t723 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }) + %t724 = insertvalue %S.gen.Val %t722, %S.ast.Type %t723, 1 + %t725 = insertvalue %S.gen.Val %t724, i1 true, 2 + ret %S.gen.Val %t725 +endif7455: + %t726 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t726, ptr %a727 + store { ptr, i64, i64 } { ptr @.str.4924, i64 10, i64 0 }, ptr %a728 + %t729 = call i32 @finch_str_eq(ptr %a727, ptr %a728) + %t730 = icmp ne i32 %t729, 0 + br i1 %t730, label %then7474, label %endif7476 +then7474: + %t731 = load ptr, ptr %a1 + %t732 = load %S.ast.Node, ptr %a2 + %t733 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t731, %S.ast.Node %t732, i64 0, i64 2, { ptr, i64, i64 } %t733) + %t734 = load ptr, ptr %a1 %t735 = load ptr, ptr %a1 - %t736 = icmp eq ptr %t735, null - br i1 %t736, label %panic7171, label %ok7172 -panic7171: - call void @finch_panic(ptr @.str.4690, i64 4261, ptr @.str.4691) + %t736 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t737 = load { ptr, i64, i64 }, ptr %t736 + %t738 = extractvalue { ptr, i64, i64 } %t737, 1 + %t739 = icmp uge i64 0, %t738 + br i1 %t739, label %range7477, label %inrange7478 +range7477: + call void @finch_panic_index(ptr @.str.4925, i64 4403, i64 0, i64 %t738) unreachable -ok7172: - %t737 = getelementptr inbounds %S.gen.Gen, ptr %t735, i32 0, i32 37 - %t738 = load { ptr, i64, i64 }, ptr %t737 - %t739 = load %S.ast.Node, ptr %a2 - %t740 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t739) - store { ptr, i64, i64 } %t738, ptr %a741 - store { ptr, i64, i64 } %t740, ptr %a742 - %t743 = call i32 @finch_str_eq(ptr %a741, ptr %a742) - %t744 = icmp ne i32 %t743, 0 - br i1 %t744, label %then7173, label %endif7175 -then7173: - %t745 = load ptr, ptr %a1 - %t746 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t745, { ptr, i64, i64 } { ptr @.str.4692, i64 17, i64 0 }) - store { ptr, i64, i64 } %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a747 - call void @finch.gen.store(ptr %t748, { ptr, i64, i64 } { ptr @.str.4693, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 15, i64 0 }, { ptr, i64, i64 } %t749) - %t750 = load ptr, ptr %a1 - %t751 = load { ptr, i64, i64 }, ptr %a722 - store { ptr, i64, i64 } { ptr @.str.4695, i64 35, i64 0 }, ptr %a753 - store { ptr, i64, i64 } %t751, ptr %a754 - call void @finch_str_concat(ptr %a752, ptr %a753, ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t755, ptr %a757 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - %t760 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t759, ptr %a762 - store { ptr, i64, i64 } %t760, ptr %a763 - call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a761 - store { ptr, i64, i64 } %t764, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a767 - call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a765 - %t769 = load { ptr, i64, i64 }, ptr %a747 - store { ptr, i64, i64 } %t768, ptr %a771 - store { ptr, i64, i64 } %t769, ptr %a772 - call void @finch_str_concat(ptr %a770, ptr %a771, ptr %a772) - %t773 = load { ptr, i64, i64 }, ptr %a770 - store { ptr, i64, i64 } %t773, ptr %a775 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a774 - %t778 = call { ptr, i64, i64 } @finch.gen.op(ptr %t750, { ptr, i64, i64 } %t777) - store { ptr, i64, i64 } %t778, ptr %a779 - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a779 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t785, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a788 - call void @finch_str_concat(ptr %a786, ptr %a787, ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a786 - %t790 = call { ptr, i64, i64 } @finch.gen.op(ptr %t780, { ptr, i64, i64 } %t789) - %t791 = load ptr, ptr %a1 - %t792 = icmp eq ptr %t791, null - br i1 %t792, label %panic7176, label %ok7177 -panic7176: - call void @finch_panic(ptr @.str.4701, i64 4265, ptr @.str.4702) +inrange7478: + %t740 = extractvalue { ptr, i64, i64 } %t737, 0 + %t741 = getelementptr inbounds %S.ast.Node, ptr %t740, i64 0 + %t742 = load %S.ast.Node, ptr %t741 + %t743 = call %S.gen.Val @finch.gen.strArg(ptr %t735, %S.ast.Node %t742, { ptr, i64, i64 } { ptr @.str.4926, i64 13, i64 0 }) + %t744 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t734, %S.gen.Val %t743) + store { ptr, i64, i64 } %t744, ptr %a745 + %t746 = load ptr, ptr %a1 + %t747 = load ptr, ptr %a1 + %t748 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t749 = load { ptr, i64, i64 }, ptr %t748 + %t750 = extractvalue { ptr, i64, i64 } %t749, 1 + %t751 = icmp uge i64 1, %t750 + br i1 %t751, label %range7479, label %inrange7480 +range7479: + call void @finch_panic_index(ptr @.str.4927, i64 4404, i64 1, i64 %t750) unreachable -ok7177: - %t793 = getelementptr inbounds %S.gen.Gen, ptr %t791, i32 0, i32 38 - store { ptr, i64, i64 } %t790, ptr %t793 - %t794 = load ptr, ptr %a1 - %t795 = load { ptr, i64, i64 }, ptr %a747 - %t796 = call { ptr, i64, i64 } @finch.gen.load(ptr %t794, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t795) - %t797 = load ptr, ptr %a1 - %t798 = icmp eq ptr %t797, null - br i1 %t798, label %panic7178, label %ok7179 -panic7178: - call void @finch_panic(ptr @.str.4704, i64 4266, ptr @.str.4705) +inrange7480: + %t752 = extractvalue { ptr, i64, i64 } %t749, 0 + %t753 = getelementptr inbounds %S.ast.Node, ptr %t752, i64 1 + %t754 = load %S.ast.Node, ptr %t753 + %t755 = call %S.gen.Val @finch.gen.strArg(ptr %t747, %S.ast.Node %t754, { ptr, i64, i64 } { ptr @.str.4928, i64 8, i64 0 }) + %t756 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t746, %S.gen.Val %t755) + store { ptr, i64, i64 } %t756, ptr %a757 + %t758 = load ptr, ptr %a1 + %t759 = icmp eq ptr %t758, null + br i1 %t759, label %panic7481, label %ok7482 +panic7481: + call void @finch_panic(ptr @.str.4929, i64 4405, ptr @.str.4930) unreachable -ok7179: - %t799 = getelementptr inbounds %S.gen.Gen, ptr %t797, i32 0, i32 39 - store { ptr, i64, i64 } %t796, ptr %t799 - %t800 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4706, i64 4, i64 0 }) - %t801 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t800, 1 - ret %S.gen.Val %t801 -endif7175: - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a722 - store { ptr, i64, i64 } { ptr @.str.4707, i64 31, i64 0 }, ptr %a805 - store { ptr, i64, i64 } %t803, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - %t807 = load { ptr, i64, i64 }, ptr %a804 - store { ptr, i64, i64 } %t807, ptr %a809 - store { ptr, i64, i64 } { ptr @.str.4708, i64 6, i64 0 }, ptr %a810 - call void @finch_str_concat(ptr %a808, ptr %a809, ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a808 - %t812 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - %t816 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t816, ptr %a818 - store { ptr, i64, i64 } { ptr @.str.4709, i64 1, i64 0 }, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - %t821 = call { ptr, i64, i64 } @finch.gen.op(ptr %t802, { ptr, i64, i64 } %t820) - store { ptr, i64, i64 } %t821, ptr %a822 - %t823 = load ptr, ptr %a1 - %t824 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.4710, i64 12, i64 0 }, ptr %a826 - store { ptr, i64, i64 } %t824, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4711, i64 3, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a829 - %t833 = call { ptr, i64, i64 } @finch.gen.op(ptr %t823, { ptr, i64, i64 } %t832) - %t834 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t833, 0 - %t835 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4712, i64 4, i64 0 }) - %t836 = insertvalue %S.gen.Val %t834, %S.ast.Type %t835, 1 - ret %S.gen.Val %t836 -endif7166: - %t837 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t837, ptr %a838 - store { ptr, i64, i64 } { ptr @.str.4713, i64 11, i64 0 }, ptr %a839 - %t840 = call i32 @finch_str_eq(ptr %a838, ptr %a839) - %t841 = icmp ne i32 %t840, 0 - br i1 %t841, label %then7180, label %endif7182 -then7180: - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Node, ptr %a2 - %t844 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t842, %S.ast.Node %t843, i64 0, i64 1, { ptr, i64, i64 } %t844) - %t845 = load ptr, ptr %a1 - %t846 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = extractvalue { ptr, i64, i64 } %t847, 1 - %t849 = icmp uge i64 0, %t848 - br i1 %t849, label %range7183, label %inrange7184 -range7183: - call void @finch_panic_index(ptr @.str.4714, i64 4274, i64 0, i64 %t848) +ok7482: + %t760 = getelementptr inbounds %S.gen.Gen, ptr %t758, i32 0, i32 39 + %t761 = load { ptr, i64, i64 }, ptr %t760 + %t762 = load %S.ast.Node, ptr %a2 + %t763 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t762) + store { ptr, i64, i64 } %t761, ptr %a764 + store { ptr, i64, i64 } %t763, ptr %a765 + %t766 = call i32 @finch_str_eq(ptr %a764, ptr %a765) + %t767 = icmp ne i32 %t766, 0 + br i1 %t767, label %then7483, label %endif7485 +then7483: + %t768 = load ptr, ptr %a1 + %t769 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t768, { ptr, i64, i64 } { ptr @.str.4931, i64 17, i64 0 }) + store { ptr, i64, i64 } %t769, ptr %a770 + %t771 = load ptr, ptr %a1 + %t772 = load { ptr, i64, i64 }, ptr %a770 + call void @finch.gen.store(ptr %t771, { ptr, i64, i64 } { ptr @.str.4932, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4933, i64 15, i64 0 }, { ptr, i64, i64 } %t772) + %t773 = load ptr, ptr %a1 + %t774 = load { ptr, i64, i64 }, ptr %a745 + store { ptr, i64, i64 } { ptr @.str.4934, i64 35, i64 0 }, ptr %a776 + store { ptr, i64, i64 } %t774, ptr %a777 + call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) + %t778 = load { ptr, i64, i64 }, ptr %a775 + store { ptr, i64, i64 } %t778, ptr %a780 + store { ptr, i64, i64 } { ptr @.str.4935, i64 6, i64 0 }, ptr %a781 + call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) + %t782 = load { ptr, i64, i64 }, ptr %a779 + %t783 = load { ptr, i64, i64 }, ptr %a757 + store { ptr, i64, i64 } %t782, ptr %a785 + store { ptr, i64, i64 } %t783, ptr %a786 + call void @finch_str_concat(ptr %a784, ptr %a785, ptr %a786) + %t787 = load { ptr, i64, i64 }, ptr %a784 + store { ptr, i64, i64 } %t787, ptr %a789 + store { ptr, i64, i64 } { ptr @.str.4936, i64 6, i64 0 }, ptr %a790 + call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) + %t791 = load { ptr, i64, i64 }, ptr %a788 + %t792 = load { ptr, i64, i64 }, ptr %a770 + store { ptr, i64, i64 } %t791, ptr %a794 + store { ptr, i64, i64 } %t792, ptr %a795 + call void @finch_str_concat(ptr %a793, ptr %a794, ptr %a795) + %t796 = load { ptr, i64, i64 }, ptr %a793 + store { ptr, i64, i64 } %t796, ptr %a798 + store { ptr, i64, i64 } { ptr @.str.4937, i64 1, i64 0 }, ptr %a799 + call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) + %t800 = load { ptr, i64, i64 }, ptr %a797 + %t801 = call { ptr, i64, i64 } @finch.gen.op(ptr %t773, { ptr, i64, i64 } %t800) + store { ptr, i64, i64 } %t801, ptr %a802 + %t803 = load ptr, ptr %a1 + %t804 = load { ptr, i64, i64 }, ptr %a802 + store { ptr, i64, i64 } { ptr @.str.4938, i64 12, i64 0 }, ptr %a806 + store { ptr, i64, i64 } %t804, ptr %a807 + call void @finch_str_concat(ptr %a805, ptr %a806, ptr %a807) + %t808 = load { ptr, i64, i64 }, ptr %a805 + store { ptr, i64, i64 } %t808, ptr %a810 + store { ptr, i64, i64 } { ptr @.str.4939, i64 3, i64 0 }, ptr %a811 + call void @finch_str_concat(ptr %a809, ptr %a810, ptr %a811) + %t812 = load { ptr, i64, i64 }, ptr %a809 + %t813 = call { ptr, i64, i64 } @finch.gen.op(ptr %t803, { ptr, i64, i64 } %t812) + %t814 = load ptr, ptr %a1 + %t815 = icmp eq ptr %t814, null + br i1 %t815, label %panic7486, label %ok7487 +panic7486: + call void @finch_panic(ptr @.str.4940, i64 4409, ptr @.str.4941) unreachable -inrange7184: - %t850 = extractvalue { ptr, i64, i64 } %t847, 0 - %t851 = getelementptr inbounds %S.ast.Node, ptr %t850, i64 0 - %t852 = load %S.ast.Node, ptr %t851 - %t853 = call %S.gen.Val @finch.gen.strArg(ptr %t845, %S.ast.Node %t852, { ptr, i64, i64 } { ptr @.str.4715, i64 13, i64 0 }) - store %S.gen.Val %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t855) - store { ptr, i64, i64 } %t856, ptr %a857 - %t858 = load ptr, ptr %a1 - %t859 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } { ptr @.str.4716, i64 30, i64 0 }, ptr %a861 - store { ptr, i64, i64 } %t859, ptr %a862 - call void @finch_str_concat(ptr %a860, ptr %a861, ptr %a862) - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.4717, i64 6, i64 0 }, ptr %a866 - call void @finch_str_concat(ptr %a864, ptr %a865, ptr %a866) - %t867 = load { ptr, i64, i64 }, ptr %a864 +ok7487: + %t816 = getelementptr inbounds %S.gen.Gen, ptr %t814, i32 0, i32 40 + store { ptr, i64, i64 } %t813, ptr %t816 + %t817 = load ptr, ptr %a1 + %t818 = load { ptr, i64, i64 }, ptr %a770 + %t819 = call { ptr, i64, i64 } @finch.gen.load(ptr %t817, { ptr, i64, i64 } { ptr @.str.4942, i64 17, i64 0 }, { ptr, i64, i64 } %t818) + %t820 = load ptr, ptr %a1 + %t821 = icmp eq ptr %t820, null + br i1 %t821, label %panic7488, label %ok7489 +panic7488: + call void @finch_panic(ptr @.str.4943, i64 4410, ptr @.str.4944) + unreachable +ok7489: + %t822 = getelementptr inbounds %S.gen.Gen, ptr %t820, i32 0, i32 41 + store { ptr, i64, i64 } %t819, ptr %t822 + %t823 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4945, i64 4, i64 0 }) + %t824 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t823, 1 + ret %S.gen.Val %t824 +endif7485: + %t825 = load ptr, ptr %a1 + %t826 = load { ptr, i64, i64 }, ptr %a745 + store { ptr, i64, i64 } { ptr @.str.4946, i64 31, i64 0 }, ptr %a828 + store { ptr, i64, i64 } %t826, ptr %a829 + call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) + %t830 = load { ptr, i64, i64 }, ptr %a827 + store { ptr, i64, i64 } %t830, ptr %a832 + store { ptr, i64, i64 } { ptr @.str.4947, i64 6, i64 0 }, ptr %a833 + call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) + %t834 = load { ptr, i64, i64 }, ptr %a831 + %t835 = load { ptr, i64, i64 }, ptr %a757 + store { ptr, i64, i64 } %t834, ptr %a837 + store { ptr, i64, i64 } %t835, ptr %a838 + call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) + %t839 = load { ptr, i64, i64 }, ptr %a836 + store { ptr, i64, i64 } %t839, ptr %a841 + store { ptr, i64, i64 } { ptr @.str.4948, i64 1, i64 0 }, ptr %a842 + call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842) + %t843 = load { ptr, i64, i64 }, ptr %a840 + %t844 = call { ptr, i64, i64 } @finch.gen.op(ptr %t825, { ptr, i64, i64 } %t843) + store { ptr, i64, i64 } %t844, ptr %a845 + %t846 = load ptr, ptr %a1 + %t847 = load { ptr, i64, i64 }, ptr %a845 + store { ptr, i64, i64 } { ptr @.str.4949, i64 12, i64 0 }, ptr %a849 + store { ptr, i64, i64 } %t847, ptr %a850 + call void @finch_str_concat(ptr %a848, ptr %a849, ptr %a850) + %t851 = load { ptr, i64, i64 }, ptr %a848 + store { ptr, i64, i64 } %t851, ptr %a853 + store { ptr, i64, i64 } { ptr @.str.4950, i64 3, i64 0 }, ptr %a854 + call void @finch_str_concat(ptr %a852, ptr %a853, ptr %a854) + %t855 = load { ptr, i64, i64 }, ptr %a852 + %t856 = call { ptr, i64, i64 } @finch.gen.op(ptr %t846, { ptr, i64, i64 } %t855) + %t857 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t856, 0 + %t858 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4951, i64 4, i64 0 }) + %t859 = insertvalue %S.gen.Val %t857, %S.ast.Type %t858, 1 + ret %S.gen.Val %t859 +endif7476: + %t860 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t860, ptr %a861 + store { ptr, i64, i64 } { ptr @.str.4952, i64 11, i64 0 }, ptr %a862 + %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) + %t864 = icmp ne i32 %t863, 0 + br i1 %t864, label %then7490, label %endif7492 +then7490: + %t865 = load ptr, ptr %a1 + %t866 = load %S.ast.Node, ptr %a2 + %t867 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t865, %S.ast.Node %t866, i64 0, i64 1, { ptr, i64, i64 } %t867) %t868 = load ptr, ptr %a1 - %t869 = load %S.gen.Val, ptr %a854 - %t870 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t868, %S.gen.Val %t869) - store { ptr, i64, i64 } %t867, ptr %a872 - store { ptr, i64, i64 } %t870, ptr %a873 - call void @finch_str_concat(ptr %a871, ptr %a872, ptr %a873) - %t874 = load { ptr, i64, i64 }, ptr %a871 - store { ptr, i64, i64 } %t874, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.4718, i64 1, i64 0 }, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - call void @finch.gen.emit(ptr %t858, { ptr, i64, i64 } %t878) - %t879 = load ptr, ptr %a1 - %t880 = icmp eq ptr %t879, null - br i1 %t880, label %panic7185, label %ok7186 -panic7185: - call void @finch_panic(ptr @.str.4719, i64 4277, ptr @.str.4720) + %t869 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t870 = load { ptr, i64, i64 }, ptr %t869 + %t871 = extractvalue { ptr, i64, i64 } %t870, 1 + %t872 = icmp uge i64 0, %t871 + br i1 %t872, label %range7493, label %inrange7494 +range7493: + call void @finch_panic_index(ptr @.str.4953, i64 4418, i64 0, i64 %t871) unreachable -ok7186: - %t881 = getelementptr inbounds %S.gen.Gen, ptr %t879, i32 0, i32 37 - %t882 = load { ptr, i64, i64 }, ptr %t881 - %t883 = load %S.ast.Node, ptr %a2 - %t884 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t883) +inrange7494: + %t873 = extractvalue { ptr, i64, i64 } %t870, 0 + %t874 = getelementptr inbounds %S.ast.Node, ptr %t873, i64 0 + %t875 = load %S.ast.Node, ptr %t874 + %t876 = call %S.gen.Val @finch.gen.strArg(ptr %t868, %S.ast.Node %t875, { ptr, i64, i64 } { ptr @.str.4954, i64 13, i64 0 }) + store %S.gen.Val %t876, ptr %a877 + %t878 = load ptr, ptr %a1 + %t879 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t878) + store { ptr, i64, i64 } %t879, ptr %a880 + %t881 = load ptr, ptr %a1 + %t882 = load { ptr, i64, i64 }, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.4955, i64 30, i64 0 }, ptr %a884 store { ptr, i64, i64 } %t882, ptr %a885 - store { ptr, i64, i64 } %t884, ptr %a886 - %t887 = call i32 @finch_str_eq(ptr %a885, ptr %a886) - %t888 = icmp ne i32 %t887, 0 - br i1 %t888, label %then7187, label %endif7189 -then7187: - %t889 = load ptr, ptr %a1 - %t890 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t889, { ptr, i64, i64 } { ptr @.str.4721, i64 17, i64 0 }) - store { ptr, i64, i64 } %t890, ptr %a891 - %t892 = load ptr, ptr %a1 - %t893 = load { ptr, i64, i64 }, ptr %a891 - call void @finch.gen.store(ptr %t892, { ptr, i64, i64 } { ptr @.str.4722, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4723, i64 15, i64 0 }, { ptr, i64, i64 } %t893) - %t894 = load ptr, ptr %a1 - %t895 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } { ptr @.str.4724, i64 36, i64 0 }, ptr %a897 - store { ptr, i64, i64 } %t895, ptr %a898 - call void @finch_str_concat(ptr %a896, ptr %a897, ptr %a898) - %t899 = load { ptr, i64, i64 }, ptr %a896 - store { ptr, i64, i64 } %t899, ptr %a901 - store { ptr, i64, i64 } { ptr @.str.4725, i64 6, i64 0 }, ptr %a902 - call void @finch_str_concat(ptr %a900, ptr %a901, ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a900 - %t904 = load { ptr, i64, i64 }, ptr %a891 - store { ptr, i64, i64 } %t903, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - %t908 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t908, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.4726, i64 1, i64 0 }, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - %t913 = call { ptr, i64, i64 } @finch.gen.op(ptr %t894, { ptr, i64, i64 } %t912) + call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) + %t886 = load { ptr, i64, i64 }, ptr %a883 + store { ptr, i64, i64 } %t886, ptr %a888 + store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a889 + call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) + %t890 = load { ptr, i64, i64 }, ptr %a887 + %t891 = load ptr, ptr %a1 + %t892 = load %S.gen.Val, ptr %a877 + %t893 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t891, %S.gen.Val %t892) + store { ptr, i64, i64 } %t890, ptr %a895 + store { ptr, i64, i64 } %t893, ptr %a896 + call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) + %t897 = load { ptr, i64, i64 }, ptr %a894 + store { ptr, i64, i64 } %t897, ptr %a899 + store { ptr, i64, i64 } { ptr @.str.4957, i64 1, i64 0 }, ptr %a900 + call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) + %t901 = load { ptr, i64, i64 }, ptr %a898 + call void @finch.gen.emit(ptr %t881, { ptr, i64, i64 } %t901) + %t902 = load ptr, ptr %a1 + %t903 = icmp eq ptr %t902, null + br i1 %t903, label %panic7495, label %ok7496 +panic7495: + call void @finch_panic(ptr @.str.4958, i64 4421, ptr @.str.4959) + unreachable +ok7496: + %t904 = getelementptr inbounds %S.gen.Gen, ptr %t902, i32 0, i32 39 + %t905 = load { ptr, i64, i64 }, ptr %t904 + %t906 = load %S.ast.Node, ptr %a2 + %t907 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t906) + store { ptr, i64, i64 } %t905, ptr %a908 + store { ptr, i64, i64 } %t907, ptr %a909 + %t910 = call i32 @finch_str_eq(ptr %a908, ptr %a909) + %t911 = icmp ne i32 %t910, 0 + br i1 %t911, label %then7497, label %endif7499 +then7497: + %t912 = load ptr, ptr %a1 + %t913 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t912, { ptr, i64, i64 } { ptr @.str.4960, i64 17, i64 0 }) store { ptr, i64, i64 } %t913, ptr %a914 %t915 = load ptr, ptr %a1 %t916 = load { ptr, i64, i64 }, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.4727, i64 12, i64 0 }, ptr %a918 - store { ptr, i64, i64 } %t916, ptr %a919 - call void @finch_str_concat(ptr %a917, ptr %a918, ptr %a919) - %t920 = load { ptr, i64, i64 }, ptr %a917 - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.4728, i64 3, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - %t924 = load { ptr, i64, i64 }, ptr %a921 - %t925 = call { ptr, i64, i64 } @finch.gen.op(ptr %t915, { ptr, i64, i64 } %t924) - %t926 = load ptr, ptr %a1 - %t927 = icmp eq ptr %t926, null - br i1 %t927, label %panic7190, label %ok7191 -panic7190: - call void @finch_panic(ptr @.str.4729, i64 4281, ptr @.str.4730) - unreachable -ok7191: - %t928 = getelementptr inbounds %S.gen.Gen, ptr %t926, i32 0, i32 38 - store { ptr, i64, i64 } %t925, ptr %t928 - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a891 - %t931 = call { ptr, i64, i64 } @finch.gen.load(ptr %t929, { ptr, i64, i64 } { ptr @.str.4731, i64 17, i64 0 }, { ptr, i64, i64 } %t930) - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic7192, label %ok7193 -panic7192: - call void @finch_panic(ptr @.str.4732, i64 4282, ptr @.str.4733) - unreachable -ok7193: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 39 - store { ptr, i64, i64 } %t931, ptr %t934 - %t935 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4734, i64 4, i64 0 }) - %t936 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t935, 1 - ret %S.gen.Val %t936 -endif7189: - %t937 = load ptr, ptr %a1 - %t938 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } { ptr @.str.4735, i64 32, i64 0 }, ptr %a940 - store { ptr, i64, i64 } %t938, ptr %a941 - call void @finch_str_concat(ptr %a939, ptr %a940, ptr %a941) - %t942 = load { ptr, i64, i64 }, ptr %a939 - store { ptr, i64, i64 } %t942, ptr %a944 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a945 - call void @finch_str_concat(ptr %a943, ptr %a944, ptr %a945) - %t946 = load { ptr, i64, i64 }, ptr %a943 - %t947 = call { ptr, i64, i64 } @finch.gen.op(ptr %t937, { ptr, i64, i64 } %t946) - store { ptr, i64, i64 } %t947, ptr %a948 + call void @finch.gen.store(ptr %t915, { ptr, i64, i64 } { ptr @.str.4961, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4962, i64 15, i64 0 }, { ptr, i64, i64 } %t916) + %t917 = load ptr, ptr %a1 + %t918 = load { ptr, i64, i64 }, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.4963, i64 36, i64 0 }, ptr %a920 + store { ptr, i64, i64 } %t918, ptr %a921 + call void @finch_str_concat(ptr %a919, ptr %a920, ptr %a921) + %t922 = load { ptr, i64, i64 }, ptr %a919 + store { ptr, i64, i64 } %t922, ptr %a924 + store { ptr, i64, i64 } { ptr @.str.4964, i64 6, i64 0 }, ptr %a925 + call void @finch_str_concat(ptr %a923, ptr %a924, ptr %a925) + %t926 = load { ptr, i64, i64 }, ptr %a923 + %t927 = load { ptr, i64, i64 }, ptr %a914 + store { ptr, i64, i64 } %t926, ptr %a929 + store { ptr, i64, i64 } %t927, ptr %a930 + call void @finch_str_concat(ptr %a928, ptr %a929, ptr %a930) + %t931 = load { ptr, i64, i64 }, ptr %a928 + store { ptr, i64, i64 } %t931, ptr %a933 + store { ptr, i64, i64 } { ptr @.str.4965, i64 1, i64 0 }, ptr %a934 + call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) + %t935 = load { ptr, i64, i64 }, ptr %a932 + %t936 = call { ptr, i64, i64 } @finch.gen.op(ptr %t917, { ptr, i64, i64 } %t935) + store { ptr, i64, i64 } %t936, ptr %a937 + %t938 = load ptr, ptr %a1 + %t939 = load { ptr, i64, i64 }, ptr %a937 + store { ptr, i64, i64 } { ptr @.str.4966, i64 12, i64 0 }, ptr %a941 + store { ptr, i64, i64 } %t939, ptr %a942 + call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) + %t943 = load { ptr, i64, i64 }, ptr %a940 + store { ptr, i64, i64 } %t943, ptr %a945 + store { ptr, i64, i64 } { ptr @.str.4967, i64 3, i64 0 }, ptr %a946 + call void @finch_str_concat(ptr %a944, ptr %a945, ptr %a946) + %t947 = load { ptr, i64, i64 }, ptr %a944 + %t948 = call { ptr, i64, i64 } @finch.gen.op(ptr %t938, { ptr, i64, i64 } %t947) %t949 = load ptr, ptr %a1 - %t950 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } { ptr @.str.4737, i64 12, i64 0 }, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t954, ptr %a956 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a957 - call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957) - %t958 = load { ptr, i64, i64 }, ptr %a955 - %t959 = call { ptr, i64, i64 } @finch.gen.op(ptr %t949, { ptr, i64, i64 } %t958) - %t960 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t959, 0 - %t961 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4739, i64 4, i64 0 }) - %t962 = insertvalue %S.gen.Val %t960, %S.ast.Type %t961, 1 - ret %S.gen.Val %t962 -endif7182: - %t963 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t963, ptr %a964 - store { ptr, i64, i64 } { ptr @.str.4740, i64 5, i64 0 }, ptr %a965 - %t966 = call i32 @finch_str_eq(ptr %a964, ptr %a965) - %t967 = icmp ne i32 %t966, 0 - br i1 %t967, label %then7194, label %endif7196 -then7194: - %t968 = load ptr, ptr %a1 - %t969 = load %S.ast.Node, ptr %a2 - %t970 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t968, %S.ast.Node %t969, i64 0, i64 1, { ptr, i64, i64 } %t970) - %t971 = load ptr, ptr %a1 - %t972 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t973 = load { ptr, i64, i64 }, ptr %t972 - %t974 = extractvalue { ptr, i64, i64 } %t973, 1 - %t975 = icmp uge i64 0, %t974 - br i1 %t975, label %range7197, label %inrange7198 -range7197: - call void @finch_panic_index(ptr @.str.4741, i64 4290, i64 0, i64 %t974) + %t950 = icmp eq ptr %t949, null + br i1 %t950, label %panic7500, label %ok7501 +panic7500: + call void @finch_panic(ptr @.str.4968, i64 4425, ptr @.str.4969) unreachable -inrange7198: - %t976 = extractvalue { ptr, i64, i64 } %t973, 0 - %t977 = getelementptr inbounds %S.ast.Node, ptr %t976, i64 0 - %t978 = load %S.ast.Node, ptr %t977 - %t979 = call %S.gen.Val @finch.gen.strArg(ptr %t971, %S.ast.Node %t978, { ptr, i64, i64 } { ptr @.str.4742, i64 11, i64 0 }) - store %S.gen.Val %t979, ptr %a980 - %t981 = load ptr, ptr %a1 - %t982 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.4743, i64 30, i64 0 }, ptr %a987 - store { ptr, i64, i64 } %t985, ptr %a988 - call void @finch_str_concat(ptr %a986, ptr %a987, ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a986 - store { ptr, i64, i64 } %t989, ptr %a991 - store { ptr, i64, i64 } { ptr @.str.4744, i64 6, i64 0 }, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 +ok7501: + %t951 = getelementptr inbounds %S.gen.Gen, ptr %t949, i32 0, i32 40 + store { ptr, i64, i64 } %t948, ptr %t951 + %t952 = load ptr, ptr %a1 + %t953 = load { ptr, i64, i64 }, ptr %a914 + %t954 = call { ptr, i64, i64 } @finch.gen.load(ptr %t952, { ptr, i64, i64 } { ptr @.str.4970, i64 17, i64 0 }, { ptr, i64, i64 } %t953) + %t955 = load ptr, ptr %a1 + %t956 = icmp eq ptr %t955, null + br i1 %t956, label %panic7502, label %ok7503 +panic7502: + call void @finch_panic(ptr @.str.4971, i64 4426, ptr @.str.4972) + unreachable +ok7503: + %t957 = getelementptr inbounds %S.gen.Gen, ptr %t955, i32 0, i32 41 + store { ptr, i64, i64 } %t954, ptr %t957 + %t958 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4973, i64 4, i64 0 }) + %t959 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t958, 1 + ret %S.gen.Val %t959 +endif7499: + %t960 = load ptr, ptr %a1 + %t961 = load { ptr, i64, i64 }, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.4974, i64 32, i64 0 }, ptr %a963 + store { ptr, i64, i64 } %t961, ptr %a964 + call void @finch_str_concat(ptr %a962, ptr %a963, ptr %a964) + %t965 = load { ptr, i64, i64 }, ptr %a962 + store { ptr, i64, i64 } %t965, ptr %a967 + store { ptr, i64, i64 } { ptr @.str.4975, i64 1, i64 0 }, ptr %a968 + call void @finch_str_concat(ptr %a966, ptr %a967, ptr %a968) + %t969 = load { ptr, i64, i64 }, ptr %a966 + %t970 = call { ptr, i64, i64 } @finch.gen.op(ptr %t960, { ptr, i64, i64 } %t969) + store { ptr, i64, i64 } %t970, ptr %a971 + %t972 = load ptr, ptr %a1 + %t973 = load { ptr, i64, i64 }, ptr %a971 + store { ptr, i64, i64 } { ptr @.str.4976, i64 12, i64 0 }, ptr %a975 + store { ptr, i64, i64 } %t973, ptr %a976 + call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) + %t977 = load { ptr, i64, i64 }, ptr %a974 + store { ptr, i64, i64 } %t977, ptr %a979 + store { ptr, i64, i64 } { ptr @.str.4977, i64 3, i64 0 }, ptr %a980 + call void @finch_str_concat(ptr %a978, ptr %a979, ptr %a980) + %t981 = load { ptr, i64, i64 }, ptr %a978 + %t982 = call { ptr, i64, i64 } @finch.gen.op(ptr %t972, { ptr, i64, i64 } %t981) + %t983 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t982, 0 + %t984 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }) + %t985 = insertvalue %S.gen.Val %t983, %S.ast.Type %t984, 1 + ret %S.gen.Val %t985 +endif7492: + %t986 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t986, ptr %a987 + store { ptr, i64, i64 } { ptr @.str.4979, i64 5, i64 0 }, ptr %a988 + %t989 = call i32 @finch_str_eq(ptr %a987, ptr %a988) + %t990 = icmp ne i32 %t989, 0 + br i1 %t990, label %then7504, label %endif7506 +then7504: + %t991 = load ptr, ptr %a1 + %t992 = load %S.ast.Node, ptr %a2 + %t993 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t991, %S.ast.Node %t992, i64 0, i64 1, { ptr, i64, i64 } %t993) %t994 = load ptr, ptr %a1 - %t995 = load %S.gen.Val, ptr %a980 - %t996 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t994, %S.gen.Val %t995) - store { ptr, i64, i64 } %t993, ptr %a998 - store { ptr, i64, i64 } %t996, ptr %a999 - call void @finch_str_concat(ptr %a997, ptr %a998, ptr %a999) - %t1000 = load { ptr, i64, i64 }, ptr %a997 - store { ptr, i64, i64 } %t1000, ptr %a1002 - store { ptr, i64, i64 } { ptr @.str.4745, i64 1, i64 0 }, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - %t1004 = load { ptr, i64, i64 }, ptr %a1001 - call void @finch.gen.emit(ptr %t984, { ptr, i64, i64 } %t1004) - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.4746, i64 26, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.4747, i64 1, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - %t1014 = load { ptr, i64, i64 }, ptr %a1011 - %t1015 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1005, { ptr, i64, i64 } %t1014) - %t1016 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1015, 0 - %t1017 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }) - %t1018 = insertvalue %S.gen.Val %t1016, %S.ast.Type %t1017, 1 - ret %S.gen.Val %t1018 -endif7196: - %t1019 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1019, ptr %a1020 - store { ptr, i64, i64 } { ptr @.str.4749, i64 4, i64 0 }, ptr %a1021 - %t1022 = call i32 @finch_str_eq(ptr %a1020, ptr %a1021) - %t1023 = icmp ne i32 %t1022, 0 - br i1 %t1023, label %then7199, label %endif7201 -then7199: - %t1024 = load ptr, ptr %a1 - %t1025 = load %S.ast.Node, ptr %a2 - %t1026 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1024, %S.ast.Node %t1025, i64 0, i64 1, { ptr, i64, i64 } %t1026) - %t1027 = load ptr, ptr %a1 + %t995 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t996 = load { ptr, i64, i64 }, ptr %t995 + %t997 = extractvalue { ptr, i64, i64 } %t996, 1 + %t998 = icmp uge i64 0, %t997 + br i1 %t998, label %range7507, label %inrange7508 +range7507: + call void @finch_panic_index(ptr @.str.4980, i64 4434, i64 0, i64 %t997) + unreachable +inrange7508: + %t999 = extractvalue { ptr, i64, i64 } %t996, 0 + %t1000 = getelementptr inbounds %S.ast.Node, ptr %t999, i64 0 + %t1001 = load %S.ast.Node, ptr %t1000 + %t1002 = call %S.gen.Val @finch.gen.strArg(ptr %t994, %S.ast.Node %t1001, { ptr, i64, i64 } { ptr @.str.4981, i64 11, i64 0 }) + store %S.gen.Val %t1002, ptr %a1003 + %t1004 = load ptr, ptr %a1 + %t1005 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1004) + store { ptr, i64, i64 } %t1005, ptr %a1006 + %t1007 = load ptr, ptr %a1 + %t1008 = load { ptr, i64, i64 }, ptr %a1006 + store { ptr, i64, i64 } { ptr @.str.4982, i64 30, i64 0 }, ptr %a1010 + store { ptr, i64, i64 } %t1008, ptr %a1011 + call void @finch_str_concat(ptr %a1009, ptr %a1010, ptr %a1011) + %t1012 = load { ptr, i64, i64 }, ptr %a1009 + store { ptr, i64, i64 } %t1012, ptr %a1014 + store { ptr, i64, i64 } { ptr @.str.4983, i64 6, i64 0 }, ptr %a1015 + call void @finch_str_concat(ptr %a1013, ptr %a1014, ptr %a1015) + %t1016 = load { ptr, i64, i64 }, ptr %a1013 + %t1017 = load ptr, ptr %a1 + %t1018 = load %S.gen.Val, ptr %a1003 + %t1019 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1017, %S.gen.Val %t1018) + store { ptr, i64, i64 } %t1016, ptr %a1021 + store { ptr, i64, i64 } %t1019, ptr %a1022 + call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) + %t1023 = load { ptr, i64, i64 }, ptr %a1020 + store { ptr, i64, i64 } %t1023, ptr %a1025 + store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a1026 + call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) + %t1027 = load { ptr, i64, i64 }, ptr %a1024 + call void @finch.gen.emit(ptr %t1007, { ptr, i64, i64 } %t1027) %t1028 = load ptr, ptr %a1 - %t1029 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1030 = load { ptr, i64, i64 }, ptr %t1029 - %t1031 = extractvalue { ptr, i64, i64 } %t1030, 1 - %t1032 = icmp uge i64 0, %t1031 - br i1 %t1032, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4750, i64 4297, i64 0, i64 %t1031) - unreachable -inrange7203: - %t1033 = extractvalue { ptr, i64, i64 } %t1030, 0 - %t1034 = getelementptr inbounds %S.ast.Node, ptr %t1033, i64 0 - %t1035 = load %S.ast.Node, ptr %t1034 - %t1036 = call %S.gen.Val @finch.gen.expr(ptr %t1028, %S.ast.Node %t1035) - %t1037 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4751, i64 3, i64 0 }) - %t1038 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1039 = load { ptr, i64, i64 }, ptr %t1038 - %t1040 = extractvalue { ptr, i64, i64 } %t1039, 1 - %t1041 = icmp uge i64 0, %t1040 - br i1 %t1041, label %range7204, label %inrange7205 -range7204: - call void @finch_panic_index(ptr @.str.4752, i64 4297, i64 0, i64 %t1040) - unreachable -inrange7205: - %t1042 = extractvalue { ptr, i64, i64 } %t1039, 0 - %t1043 = getelementptr inbounds %S.ast.Node, ptr %t1042, i64 0 - %t1044 = load %S.ast.Node, ptr %t1043 - %t1045 = call %S.gen.Val @finch.gen.coerce(ptr %t1027, %S.gen.Val %t1036, %S.ast.Type %t1037, %S.ast.Node %t1044, { ptr, i64, i64 } { ptr @.str.4753, i64 13, i64 0 }) - store %S.gen.Val %t1045, ptr %a1046 + %t1029 = load { ptr, i64, i64 }, ptr %a1006 + store { ptr, i64, i64 } { ptr @.str.4985, i64 26, i64 0 }, ptr %a1031 + store { ptr, i64, i64 } %t1029, ptr %a1032 + call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) + %t1033 = load { ptr, i64, i64 }, ptr %a1030 + store { ptr, i64, i64 } %t1033, ptr %a1035 + store { ptr, i64, i64 } { ptr @.str.4986, i64 1, i64 0 }, ptr %a1036 + call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) + %t1037 = load { ptr, i64, i64 }, ptr %a1034 + %t1038 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1028, { ptr, i64, i64 } %t1037) + %t1039 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1038, 0 + %t1040 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4987, i64 3, i64 0 }) + %t1041 = insertvalue %S.gen.Val %t1039, %S.ast.Type %t1040, 1 + ret %S.gen.Val %t1041 +endif7506: + %t1042 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1042, ptr %a1043 + store { ptr, i64, i64 } { ptr @.str.4988, i64 4, i64 0 }, ptr %a1044 + %t1045 = call i32 @finch_str_eq(ptr %a1043, ptr %a1044) + %t1046 = icmp ne i32 %t1045, 0 + br i1 %t1046, label %then7509, label %endif7511 +then7509: %t1047 = load ptr, ptr %a1 - %t1048 = getelementptr inbounds %S.gen.Val, ptr %a1046, i32 0, i32 0 - %t1049 = load { ptr, i64, i64 }, ptr %t1048 - store { ptr, i64, i64 } { ptr @.str.4754, i64 10, i64 0 }, ptr %a1051 - store { ptr, i64, i64 } %t1049, ptr %a1052 - call void @finch_str_concat(ptr %a1050, ptr %a1051, ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1050 - store { ptr, i64, i64 } %t1053, ptr %a1055 - store { ptr, i64, i64 } { ptr @.str.4755, i64 7, i64 0 }, ptr %a1056 - call void @finch_str_concat(ptr %a1054, ptr %a1055, ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1054 - %t1058 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1057) - store { ptr, i64, i64 } %t1058, ptr %a1059 - %t1060 = load ptr, ptr %a1 - %t1061 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1060, { ptr, i64, i64 } { ptr @.str.4756, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1061, ptr %a1062 - %t1063 = load ptr, ptr %a1 - %t1064 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.4757, i64 20, i64 0 }, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1065 - store { ptr, i64, i64 } %t1068, ptr %a1070 - store { ptr, i64, i64 } { ptr @.str.4758, i64 1, i64 0 }, ptr %a1071 - call void @finch_str_concat(ptr %a1069, ptr %a1070, ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1069 - call void @finch.gen.emit(ptr %t1063, { ptr, i64, i64 } %t1072) - %t1073 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4759, i64 4, i64 0 }) - %t1074 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1073, 1 - ret %S.gen.Val %t1074 -endif7201: - %t1075 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.4760, i64 5, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then7206, label %endif7208 -then7206: - %t1080 = load ptr, ptr %a1 - %t1081 = call %S.gen.Val @finch.gen.strConst(ptr %t1080, { ptr, i64, i64 } { ptr @.str.4761, i64 0, i64 0 }) - store %S.gen.Val %t1081, ptr %a1082 - %t1083 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1084 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1083, i32 0, i32 1 - %t1085 = load i64, ptr %t1084 - %t1086 = icmp sgt i64 %t1085, 0 - br i1 %t1086, label %then7209, label %endif7211 -then7209: - %t1087 = load ptr, ptr %a1 - %t1088 = load %S.ast.Node, ptr %a2 - %t1089 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1087, %S.ast.Node %t1088, i64 0, i64 1, { ptr, i64, i64 } %t1089) - %t1090 = load ptr, ptr %a1 - %t1091 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1092 = load { ptr, i64, i64 }, ptr %t1091 - %t1093 = extractvalue { ptr, i64, i64 } %t1092, 1 - %t1094 = icmp uge i64 0, %t1093 - br i1 %t1094, label %range7212, label %inrange7213 -range7212: - call void @finch_panic_index(ptr @.str.4762, i64 4307, i64 0, i64 %t1093) + %t1048 = load %S.ast.Node, ptr %a2 + %t1049 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1047, %S.ast.Node %t1048, i64 0, i64 1, { ptr, i64, i64 } %t1049) + %t1050 = load ptr, ptr %a1 + %t1051 = load ptr, ptr %a1 + %t1052 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1053 = load { ptr, i64, i64 }, ptr %t1052 + %t1054 = extractvalue { ptr, i64, i64 } %t1053, 1 + %t1055 = icmp uge i64 0, %t1054 + br i1 %t1055, label %range7512, label %inrange7513 +range7512: + call void @finch_panic_index(ptr @.str.4989, i64 4441, i64 0, i64 %t1054) unreachable -inrange7213: - %t1095 = extractvalue { ptr, i64, i64 } %t1092, 0 - %t1096 = getelementptr inbounds %S.ast.Node, ptr %t1095, i64 0 - %t1097 = load %S.ast.Node, ptr %t1096 - %t1098 = call %S.gen.Val @finch.gen.strArg(ptr %t1090, %S.ast.Node %t1097, { ptr, i64, i64 } { ptr @.str.4763, i64 12, i64 0 }) - store %S.gen.Val %t1098, ptr %a1082 - br label %endif7211 -endif7211: - %t1099 = load ptr, ptr %a1 - %t1100 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1099) - store { ptr, i64, i64 } %t1100, ptr %a1101 - %t1102 = load ptr, ptr %a1 - %t1103 = load { ptr, i64, i64 }, ptr %a1101 - store { ptr, i64, i64 } { ptr @.str.4764, i64 27, i64 0 }, ptr %a1105 - store { ptr, i64, i64 } %t1103, ptr %a1106 - call void @finch_str_concat(ptr %a1104, ptr %a1105, ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1104 - store { ptr, i64, i64 } %t1107, ptr %a1109 - store { ptr, i64, i64 } { ptr @.str.4765, i64 6, i64 0 }, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - %t1112 = load ptr, ptr %a1 - %t1113 = load %S.gen.Val, ptr %a1082 - %t1114 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1112, %S.gen.Val %t1113) - store { ptr, i64, i64 } %t1111, ptr %a1116 - store { ptr, i64, i64 } %t1114, ptr %a1117 - call void @finch_str_concat(ptr %a1115, ptr %a1116, ptr %a1117) - %t1118 = load { ptr, i64, i64 }, ptr %a1115 - store { ptr, i64, i64 } %t1118, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.4766, i64 1, i64 0 }, ptr %a1121 - call void @finch_str_concat(ptr %a1119, ptr %a1120, ptr %a1121) - %t1122 = load { ptr, i64, i64 }, ptr %a1119 - call void @finch.gen.emit(ptr %t1102, { ptr, i64, i64 } %t1122) - %t1123 = load ptr, ptr %a1 - %t1124 = load { ptr, i64, i64 }, ptr %a1101 - %t1125 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1123, { ptr, i64, i64 } { ptr @.str.4767, i64 17, i64 0 }, { ptr, i64, i64 } %t1124) - %t1126 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1125, 0 - %t1127 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4768, i64 3, i64 0 }) - %t1128 = insertvalue %S.gen.Val %t1126, %S.ast.Type %t1127, 1 - %t1129 = insertvalue %S.gen.Val %t1128, i1 true, 2 - ret %S.gen.Val %t1129 -endif7208: - %t1130 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1130, ptr %a1131 - store { ptr, i64, i64 } { ptr @.str.4769, i64 3, i64 0 }, ptr %a1132 - %t1133 = call i32 @finch_str_eq(ptr %a1131, ptr %a1132) - %t1134 = icmp ne i32 %t1133, 0 - br i1 %t1134, label %then7214, label %endif7216 -then7214: +inrange7513: + %t1056 = extractvalue { ptr, i64, i64 } %t1053, 0 + %t1057 = getelementptr inbounds %S.ast.Node, ptr %t1056, i64 0 + %t1058 = load %S.ast.Node, ptr %t1057 + %t1059 = call %S.gen.Val @finch.gen.expr(ptr %t1051, %S.ast.Node %t1058) + %t1060 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4990, i64 3, i64 0 }) + %t1061 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1062 = load { ptr, i64, i64 }, ptr %t1061 + %t1063 = extractvalue { ptr, i64, i64 } %t1062, 1 + %t1064 = icmp uge i64 0, %t1063 + br i1 %t1064, label %range7514, label %inrange7515 +range7514: + call void @finch_panic_index(ptr @.str.4991, i64 4441, i64 0, i64 %t1063) + unreachable +inrange7515: + %t1065 = extractvalue { ptr, i64, i64 } %t1062, 0 + %t1066 = getelementptr inbounds %S.ast.Node, ptr %t1065, i64 0 + %t1067 = load %S.ast.Node, ptr %t1066 + %t1068 = call %S.gen.Val @finch.gen.coerce(ptr %t1050, %S.gen.Val %t1059, %S.ast.Type %t1060, %S.ast.Node %t1067, { ptr, i64, i64 } { ptr @.str.4992, i64 13, i64 0 }) + store %S.gen.Val %t1068, ptr %a1069 + %t1070 = load ptr, ptr %a1 + %t1071 = getelementptr inbounds %S.gen.Val, ptr %a1069, i32 0, i32 0 + %t1072 = load { ptr, i64, i64 }, ptr %t1071 + store { ptr, i64, i64 } { ptr @.str.4993, i64 10, i64 0 }, ptr %a1074 + store { ptr, i64, i64 } %t1072, ptr %a1075 + call void @finch_str_concat(ptr %a1073, ptr %a1074, ptr %a1075) + %t1076 = load { ptr, i64, i64 }, ptr %a1073 + store { ptr, i64, i64 } %t1076, ptr %a1078 + store { ptr, i64, i64 } { ptr @.str.4994, i64 7, i64 0 }, ptr %a1079 + call void @finch_str_concat(ptr %a1077, ptr %a1078, ptr %a1079) + %t1080 = load { ptr, i64, i64 }, ptr %a1077 + %t1081 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1070, { ptr, i64, i64 } %t1080) + store { ptr, i64, i64 } %t1081, ptr %a1082 + %t1083 = load ptr, ptr %a1 + %t1084 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1083, { ptr, i64, i64 } { ptr @.str.4995, i64 26, i64 0 }) + store { ptr, i64, i64 } %t1084, ptr %a1085 + %t1086 = load ptr, ptr %a1 + %t1087 = load { ptr, i64, i64 }, ptr %a1082 + store { ptr, i64, i64 } { ptr @.str.4996, i64 20, i64 0 }, ptr %a1089 + store { ptr, i64, i64 } %t1087, ptr %a1090 + call void @finch_str_concat(ptr %a1088, ptr %a1089, ptr %a1090) + %t1091 = load { ptr, i64, i64 }, ptr %a1088 + store { ptr, i64, i64 } %t1091, ptr %a1093 + store { ptr, i64, i64 } { ptr @.str.4997, i64 1, i64 0 }, ptr %a1094 + call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) + %t1095 = load { ptr, i64, i64 }, ptr %a1092 + call void @finch.gen.emit(ptr %t1086, { ptr, i64, i64 } %t1095) + %t1096 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 4, i64 0 }) + %t1097 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1096, 1 + ret %S.gen.Val %t1097 +endif7511: + %t1098 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1098, ptr %a1099 + store { ptr, i64, i64 } { ptr @.str.4999, i64 5, i64 0 }, ptr %a1100 + %t1101 = call i32 @finch_str_eq(ptr %a1099, ptr %a1100) + %t1102 = icmp ne i32 %t1101, 0 + br i1 %t1102, label %then7516, label %endif7518 +then7516: + %t1103 = load ptr, ptr %a1 + %t1104 = call %S.gen.Val @finch.gen.strConst(ptr %t1103, { ptr, i64, i64 } { ptr @.str.5000, i64 0, i64 0 }) + store %S.gen.Val %t1104, ptr %a1105 + %t1106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1106, i32 0, i32 1 + %t1108 = load i64, ptr %t1107 + %t1109 = icmp sgt i64 %t1108, 0 + br i1 %t1109, label %then7519, label %endif7521 +then7519: + %t1110 = load ptr, ptr %a1 + %t1111 = load %S.ast.Node, ptr %a2 + %t1112 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1110, %S.ast.Node %t1111, i64 0, i64 1, { ptr, i64, i64 } %t1112) + %t1113 = load ptr, ptr %a1 + %t1114 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1115 = load { ptr, i64, i64 }, ptr %t1114 + %t1116 = extractvalue { ptr, i64, i64 } %t1115, 1 + %t1117 = icmp uge i64 0, %t1116 + br i1 %t1117, label %range7522, label %inrange7523 +range7522: + call void @finch_panic_index(ptr @.str.5001, i64 4451, i64 0, i64 %t1116) + unreachable +inrange7523: + %t1118 = extractvalue { ptr, i64, i64 } %t1115, 0 + %t1119 = getelementptr inbounds %S.ast.Node, ptr %t1118, i64 0 + %t1120 = load %S.ast.Node, ptr %t1119 + %t1121 = call %S.gen.Val @finch.gen.strArg(ptr %t1113, %S.ast.Node %t1120, { ptr, i64, i64 } { ptr @.str.5002, i64 12, i64 0 }) + store %S.gen.Val %t1121, ptr %a1105 + br label %endif7521 +endif7521: + %t1122 = load ptr, ptr %a1 + %t1123 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1122) + store { ptr, i64, i64 } %t1123, ptr %a1124 + %t1125 = load ptr, ptr %a1 + %t1126 = load { ptr, i64, i64 }, ptr %a1124 + store { ptr, i64, i64 } { ptr @.str.5003, i64 27, i64 0 }, ptr %a1128 + store { ptr, i64, i64 } %t1126, ptr %a1129 + call void @finch_str_concat(ptr %a1127, ptr %a1128, ptr %a1129) + %t1130 = load { ptr, i64, i64 }, ptr %a1127 + store { ptr, i64, i64 } %t1130, ptr %a1132 + store { ptr, i64, i64 } { ptr @.str.5004, i64 6, i64 0 }, ptr %a1133 + call void @finch_str_concat(ptr %a1131, ptr %a1132, ptr %a1133) + %t1134 = load { ptr, i64, i64 }, ptr %a1131 %t1135 = load ptr, ptr %a1 - %t1136 = load %S.ast.Node, ptr %a2 - %t1137 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1135, %S.ast.Node %t1136, i64 0, i64 1, { ptr, i64, i64 } %t1137) - %t1138 = load ptr, ptr %a1 - %t1139 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1140 = load { ptr, i64, i64 }, ptr %t1139 - %t1141 = extractvalue { ptr, i64, i64 } %t1140, 1 - %t1142 = icmp uge i64 0, %t1141 - br i1 %t1142, label %range7217, label %inrange7218 -range7217: - call void @finch_panic_index(ptr @.str.4770, i64 4315, i64 0, i64 %t1141) + %t1136 = load %S.gen.Val, ptr %a1105 + %t1137 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1135, %S.gen.Val %t1136) + store { ptr, i64, i64 } %t1134, ptr %a1139 + store { ptr, i64, i64 } %t1137, ptr %a1140 + call void @finch_str_concat(ptr %a1138, ptr %a1139, ptr %a1140) + %t1141 = load { ptr, i64, i64 }, ptr %a1138 + store { ptr, i64, i64 } %t1141, ptr %a1143 + store { ptr, i64, i64 } { ptr @.str.5005, i64 1, i64 0 }, ptr %a1144 + call void @finch_str_concat(ptr %a1142, ptr %a1143, ptr %a1144) + %t1145 = load { ptr, i64, i64 }, ptr %a1142 + call void @finch.gen.emit(ptr %t1125, { ptr, i64, i64 } %t1145) + %t1146 = load ptr, ptr %a1 + %t1147 = load { ptr, i64, i64 }, ptr %a1124 + %t1148 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1146, { ptr, i64, i64 } { ptr @.str.5006, i64 17, i64 0 }, { ptr, i64, i64 } %t1147) + %t1149 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1148, 0 + %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5007, i64 3, i64 0 }) + %t1151 = insertvalue %S.gen.Val %t1149, %S.ast.Type %t1150, 1 + %t1152 = insertvalue %S.gen.Val %t1151, i1 true, 2 + ret %S.gen.Val %t1152 +endif7518: + %t1153 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1153, ptr %a1154 + store { ptr, i64, i64 } { ptr @.str.5008, i64 3, i64 0 }, ptr %a1155 + %t1156 = call i32 @finch_str_eq(ptr %a1154, ptr %a1155) + %t1157 = icmp ne i32 %t1156, 0 + br i1 %t1157, label %then7524, label %endif7526 +then7524: + %t1158 = load ptr, ptr %a1 + %t1159 = load %S.ast.Node, ptr %a2 + %t1160 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1158, %S.ast.Node %t1159, i64 0, i64 1, { ptr, i64, i64 } %t1160) + %t1161 = load ptr, ptr %a1 + %t1162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1163 = load { ptr, i64, i64 }, ptr %t1162 + %t1164 = extractvalue { ptr, i64, i64 } %t1163, 1 + %t1165 = icmp uge i64 0, %t1164 + br i1 %t1165, label %range7527, label %inrange7528 +range7527: + call void @finch_panic_index(ptr @.str.5009, i64 4459, i64 0, i64 %t1164) unreachable -inrange7218: - %t1143 = extractvalue { ptr, i64, i64 } %t1140, 0 - %t1144 = getelementptr inbounds %S.ast.Node, ptr %t1143, i64 0 - %t1145 = load %S.ast.Node, ptr %t1144 - %t1146 = call %S.gen.Val @finch.gen.expr(ptr %t1138, %S.ast.Node %t1145) - store %S.gen.Val %t1146, ptr %a1147 - %t1148 = load ptr, ptr %a1 - %t1149 = load ptr, ptr %a1 - %t1150 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1 - %t1151 = load %S.ast.Type, ptr %t1150 - %t1152 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1149, %S.ast.Type %t1151) - store { ptr, i64, i64 } { ptr @.str.4771, i64 26, i64 0 }, ptr %a1154 - store { ptr, i64, i64 } %t1152, ptr %a1155 - call void @finch_str_concat(ptr %a1153, ptr %a1154, ptr %a1155) - %t1156 = load { ptr, i64, i64 }, ptr %a1153 - store { ptr, i64, i64 } %t1156, ptr %a1158 - store { ptr, i64, i64 } { ptr @.str.4772, i64 1, i64 0 }, ptr %a1159 - call void @finch_str_concat(ptr %a1157, ptr %a1158, ptr %a1159) - %t1160 = load { ptr, i64, i64 }, ptr %a1157 - %t1161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1148, { ptr, i64, i64 } %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load ptr, ptr %a1 - %t1165 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1 - %t1166 = load %S.ast.Type, ptr %t1165 - %t1167 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1164, %S.ast.Type %t1166) - %t1168 = load ptr, ptr %a1 - %t1169 = load %S.gen.Val, ptr %a1147 - %t1170 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1168, %S.gen.Val %t1169) - %t1171 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.store(ptr %t1163, { ptr, i64, i64 } %t1167, { ptr, i64, i64 } %t1170, { ptr, i64, i64 } %t1171) - %t1172 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } %t1172, ptr %a1173 - call void @finch_str_copy(ptr %a1174, ptr %a1173) - %t1175 = load { ptr, i64, i64 }, ptr %a1174 - %t1176 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1175, 0 - %t1177 = getelementptr inbounds %S.gen.Val, ptr %a1147, i32 0, i32 1 - %t1178 = load %S.ast.Type, ptr %t1177 - %t1179 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1178) - %t1180 = insertvalue %S.gen.Val %t1176, %S.ast.Type %t1179, 1 - ret %S.gen.Val %t1180 -endif7216: - %t1181 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1181, ptr %a1182 - store { ptr, i64, i64 } { ptr @.str.4773, i64 4, i64 0 }, ptr %a1183 - %t1184 = call i32 @finch_str_eq(ptr %a1182, ptr %a1183) - %t1185 = icmp ne i32 %t1184, 0 - br i1 %t1185, label %then7219, label %endif7221 -then7219: +inrange7528: + %t1166 = extractvalue { ptr, i64, i64 } %t1163, 0 + %t1167 = getelementptr inbounds %S.ast.Node, ptr %t1166, i64 0 + %t1168 = load %S.ast.Node, ptr %t1167 + %t1169 = call %S.gen.Val @finch.gen.expr(ptr %t1161, %S.ast.Node %t1168) + store %S.gen.Val %t1169, ptr %a1170 + %t1171 = load ptr, ptr %a1 + %t1172 = load ptr, ptr %a1 + %t1173 = getelementptr inbounds %S.gen.Val, ptr %a1170, i32 0, i32 1 + %t1174 = load %S.ast.Type, ptr %t1173 + %t1175 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1172, %S.ast.Type %t1174) + store { ptr, i64, i64 } { ptr @.str.5010, i64 26, i64 0 }, ptr %a1177 + store { ptr, i64, i64 } %t1175, ptr %a1178 + call void @finch_str_concat(ptr %a1176, ptr %a1177, ptr %a1178) + %t1179 = load { ptr, i64, i64 }, ptr %a1176 + store { ptr, i64, i64 } %t1179, ptr %a1181 + store { ptr, i64, i64 } { ptr @.str.5011, i64 1, i64 0 }, ptr %a1182 + call void @finch_str_concat(ptr %a1180, ptr %a1181, ptr %a1182) + %t1183 = load { ptr, i64, i64 }, ptr %a1180 + %t1184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1171, { ptr, i64, i64 } %t1183) + store { ptr, i64, i64 } %t1184, ptr %a1185 %t1186 = load ptr, ptr %a1 - %t1187 = load %S.ast.Node, ptr %a2 - %t1188 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1186, %S.ast.Node %t1187, i64 0, i64 1, { ptr, i64, i64 } %t1188) - %t1189 = load ptr, ptr %a1 - %t1190 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1191 = load { ptr, i64, i64 }, ptr %t1190 - %t1192 = extractvalue { ptr, i64, i64 } %t1191, 1 - %t1193 = icmp uge i64 0, %t1192 - br i1 %t1193, label %range7222, label %inrange7223 -range7222: - call void @finch_panic_index(ptr @.str.4774, i64 4322, i64 0, i64 %t1192) + %t1187 = load ptr, ptr %a1 + %t1188 = getelementptr inbounds %S.gen.Val, ptr %a1170, i32 0, i32 1 + %t1189 = load %S.ast.Type, ptr %t1188 + %t1190 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1187, %S.ast.Type %t1189) + %t1191 = load ptr, ptr %a1 + %t1192 = load %S.gen.Val, ptr %a1170 + %t1193 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1191, %S.gen.Val %t1192) + %t1194 = load { ptr, i64, i64 }, ptr %a1185 + call void @finch.gen.store(ptr %t1186, { ptr, i64, i64 } %t1190, { ptr, i64, i64 } %t1193, { ptr, i64, i64 } %t1194) + %t1195 = load { ptr, i64, i64 }, ptr %a1185 + store { ptr, i64, i64 } %t1195, ptr %a1196 + call void @finch_str_copy(ptr %a1197, ptr %a1196) + %t1198 = load { ptr, i64, i64 }, ptr %a1197 + %t1199 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1198, 0 + %t1200 = getelementptr inbounds %S.gen.Val, ptr %a1170, i32 0, i32 1 + %t1201 = load %S.ast.Type, ptr %t1200 + %t1202 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1201) + %t1203 = insertvalue %S.gen.Val %t1199, %S.ast.Type %t1202, 1 + ret %S.gen.Val %t1203 +endif7526: + %t1204 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1204, ptr %a1205 + store { ptr, i64, i64 } { ptr @.str.5012, i64 4, i64 0 }, ptr %a1206 + %t1207 = call i32 @finch_str_eq(ptr %a1205, ptr %a1206) + %t1208 = icmp ne i32 %t1207, 0 + br i1 %t1208, label %then7529, label %endif7531 +then7529: + %t1209 = load ptr, ptr %a1 + %t1210 = load %S.ast.Node, ptr %a2 + %t1211 = load { ptr, i64, i64 }, ptr %a8 + call void @finch.gen.checkArgs(ptr %t1209, %S.ast.Node %t1210, i64 0, i64 1, { ptr, i64, i64 } %t1211) + %t1212 = load ptr, ptr %a1 + %t1213 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1214 = load { ptr, i64, i64 }, ptr %t1213 + %t1215 = extractvalue { ptr, i64, i64 } %t1214, 1 + %t1216 = icmp uge i64 0, %t1215 + br i1 %t1216, label %range7532, label %inrange7533 +range7532: + call void @finch_panic_index(ptr @.str.5013, i64 4466, i64 0, i64 %t1215) unreachable -inrange7223: - %t1194 = extractvalue { ptr, i64, i64 } %t1191, 0 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %t1194, i64 0 - %t1196 = load %S.ast.Node, ptr %t1195 - %t1197 = call %S.gen.Val @finch.gen.expr(ptr %t1189, %S.ast.Node %t1196) - store %S.gen.Val %t1197, ptr %a1198 - %t1199 = getelementptr inbounds %S.gen.Val, ptr %a1198, i32 0, i32 1 - %t1200 = getelementptr inbounds %S.ast.Type, ptr %t1199, i32 0, i32 0 - %t1201 = load { ptr, i64, i64 }, ptr %t1200 - store { ptr, i64, i64 } %t1201, ptr %a1202 - store { ptr, i64, i64 } { ptr @.str.4775, i64 3, i64 0 }, ptr %a1203 - %t1204 = call i32 @finch_str_eq(ptr %a1202, ptr %a1203) - %t1205 = icmp eq i32 %t1204, 0 - br i1 %t1205, label %then7224, label %endif7226 -then7224: - %t1206 = load ptr, ptr %a1 - %t1207 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1208 = load { ptr, i64, i64 }, ptr %t1207 - %t1209 = extractvalue { ptr, i64, i64 } %t1208, 1 - %t1210 = icmp uge i64 0, %t1209 - br i1 %t1210, label %range7227, label %inrange7228 -range7227: - call void @finch_panic_index(ptr @.str.4776, i64 4324, i64 0, i64 %t1209) - unreachable -inrange7228: - %t1211 = extractvalue { ptr, i64, i64 } %t1208, 0 - %t1212 = getelementptr inbounds %S.ast.Node, ptr %t1211, i64 0 - %t1213 = load %S.ast.Node, ptr %t1212 - call void @finch.gen.fail(ptr %t1206, %S.ast.Node %t1213, { ptr, i64, i64 } { ptr @.str.4777, i64 119, i64 0 }) - br label %endif7226 -endif7226: - %t1214 = load ptr, ptr %a1 - %t1215 = getelementptr inbounds %S.gen.Val, ptr %a1198, i32 0, i32 0 - %t1216 = load { ptr, i64, i64 }, ptr %t1215 - store { ptr, i64, i64 } { ptr @.str.4778, i64 20, i64 0 }, ptr %a1218 - store { ptr, i64, i64 } %t1216, ptr %a1219 - call void @finch_str_concat(ptr %a1217, ptr %a1218, ptr %a1219) - %t1220 = load { ptr, i64, i64 }, ptr %a1217 - store { ptr, i64, i64 } %t1220, ptr %a1222 - store { ptr, i64, i64 } { ptr @.str.4779, i64 1, i64 0 }, ptr %a1223 - call void @finch_str_concat(ptr %a1221, ptr %a1222, ptr %a1223) - %t1224 = load { ptr, i64, i64 }, ptr %a1221 - call void @finch.gen.emit(ptr %t1214, { ptr, i64, i64 } %t1224) - %t1225 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4780, i64 4, i64 0 }) - %t1226 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1225, 1 - ret %S.gen.Val %t1226 -endif7221: - %t1227 = load ptr, ptr %a1 - %t1228 = load ptr, ptr %a1 - %t1229 = icmp eq ptr %t1228, null - br i1 %t1229, label %panic7229, label %ok7230 -panic7229: - call void @finch_panic(ptr @.str.4781, i64 4329, ptr @.str.4782) - unreachable -ok7230: - %t1230 = getelementptr inbounds %S.gen.Gen, ptr %t1228, i32 0, i32 13 +inrange7533: + %t1217 = extractvalue { ptr, i64, i64 } %t1214, 0 + %t1218 = getelementptr inbounds %S.ast.Node, ptr %t1217, i64 0 + %t1219 = load %S.ast.Node, ptr %t1218 + %t1220 = call %S.gen.Val @finch.gen.expr(ptr %t1212, %S.ast.Node %t1219) + store %S.gen.Val %t1220, ptr %a1221 + %t1222 = getelementptr inbounds %S.gen.Val, ptr %a1221, i32 0, i32 1 + %t1223 = getelementptr inbounds %S.ast.Type, ptr %t1222, i32 0, i32 0 + %t1224 = load { ptr, i64, i64 }, ptr %t1223 + store { ptr, i64, i64 } %t1224, ptr %a1225 + store { ptr, i64, i64 } { ptr @.str.5014, i64 3, i64 0 }, ptr %a1226 + %t1227 = call i32 @finch_str_eq(ptr %a1225, ptr %a1226) + %t1228 = icmp eq i32 %t1227, 0 + br i1 %t1228, label %then7534, label %endif7536 +then7534: + %t1229 = load ptr, ptr %a1 + %t1230 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t1231 = load { ptr, i64, i64 }, ptr %t1230 - %t1232 = load { ptr, i64, i64 }, ptr %a8 - %t1233 = call i64 @finch.gen.findFn(ptr %t1227, { ptr, i64, i64 } %t1231, { ptr, i64, i64 } %t1232) - store i64 %t1233, ptr %a1234 - %t1235 = load i64, ptr %a1234 - %t1236 = icmp sge i64 %t1235, 0 - br i1 %t1236, label %then7231, label %endif7233 -then7231: - %t1237 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1238 = getelementptr inbounds %S.ast.Type, ptr %t1237, i32 0, i32 1 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - %t1241 = icmp sgt i64 %t1240, 0 - br i1 %t1241, label %then7234, label %endif7236 -then7234: - %t1242 = load ptr, ptr %a1 - %t1243 = load %S.ast.Node, ptr %a2 - %t1244 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a1246 - store { ptr, i64, i64 } %t1244, ptr %a1247 - call void @finch_str_concat(ptr %a1245, ptr %a1246, ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1245 - store { ptr, i64, i64 } %t1248, ptr %a1250 - store { ptr, i64, i64 } { ptr @.str.4784, i64 47, i64 0 }, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - call void @finch.gen.fail(ptr %t1242, %S.ast.Node %t1243, { ptr, i64, i64 } %t1252) - br label %endif7236 -endif7236: - %t1253 = load ptr, ptr %a1 - %t1254 = load i64, ptr %a1234 - %t1255 = load %S.ast.Node, ptr %a2 - %t1256 = load { ptr, i64, i64 }, ptr %a8 - %t1257 = call %S.gen.Val @finch.gen.callFn(ptr %t1253, i64 %t1254, %S.ast.Node %t1255, i64 0, { ptr, i64, i64 } %t1256, { ptr, i64, i64 } { ptr @.str.4785, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.4786, i64 0, i64 0 }) - ret %S.gen.Val %t1257 -endif7233: - %t1258 = load ptr, ptr %a1 - %t1259 = load ptr, ptr %a1 - %t1260 = icmp eq ptr %t1259, null - br i1 %t1260, label %panic7237, label %ok7238 -panic7237: - call void @finch_panic(ptr @.str.4787, i64 4336, ptr @.str.4788) + %t1232 = extractvalue { ptr, i64, i64 } %t1231, 1 + %t1233 = icmp uge i64 0, %t1232 + br i1 %t1233, label %range7537, label %inrange7538 +range7537: + call void @finch_panic_index(ptr @.str.5015, i64 4468, i64 0, i64 %t1232) unreachable -ok7238: - %t1261 = getelementptr inbounds %S.gen.Gen, ptr %t1259, i32 0, i32 13 - %t1262 = load { ptr, i64, i64 }, ptr %t1261 - %t1263 = load { ptr, i64, i64 }, ptr %a8 - %t1264 = call i64 @finch.gen.findTemplate(ptr %t1258, { ptr, i64, i64 } %t1262, { ptr, i64, i64 } %t1263, { ptr, i64, i64 } { ptr @.str.4789, i64 0, i64 0 }, i1 false) - store i64 %t1264, ptr %a1265 - %t1266 = load i64, ptr %a1265 - %t1267 = icmp sge i64 %t1266, 0 - br i1 %t1267, label %then7239, label %endif7241 -then7239: - %t1268 = load ptr, ptr %a1 - %t1269 = load %S.ast.Node, ptr %a2 - %t1270 = load i64, ptr %a1265 - %t1271 = load { ptr, i64, i64 }, ptr %a8 - %t1272 = call %S.gen.Val @finch.gen.genericCall(ptr %t1268, %S.ast.Node %t1269, i64 %t1270, i64 0, { ptr, i64, i64 } %t1271) - ret %S.gen.Val %t1272 -endif7241: - %t1273 = load ptr, ptr %a1 - %t1274 = load ptr, ptr %a1 - %t1275 = icmp eq ptr %t1274, null - br i1 %t1275, label %panic7242, label %ok7243 -panic7242: - call void @finch_panic(ptr @.str.4790, i64 4340, ptr @.str.4791) +inrange7538: + %t1234 = extractvalue { ptr, i64, i64 } %t1231, 0 + %t1235 = getelementptr inbounds %S.ast.Node, ptr %t1234, i64 0 + %t1236 = load %S.ast.Node, ptr %t1235 + call void @finch.gen.fail(ptr %t1229, %S.ast.Node %t1236, { ptr, i64, i64 } { ptr @.str.5016, i64 119, i64 0 }) + br label %endif7536 +endif7536: + %t1237 = load ptr, ptr %a1 + %t1238 = getelementptr inbounds %S.gen.Val, ptr %a1221, i32 0, i32 0 + %t1239 = load { ptr, i64, i64 }, ptr %t1238 + store { ptr, i64, i64 } { ptr @.str.5017, i64 20, i64 0 }, ptr %a1241 + store { ptr, i64, i64 } %t1239, ptr %a1242 + call void @finch_str_concat(ptr %a1240, ptr %a1241, ptr %a1242) + %t1243 = load { ptr, i64, i64 }, ptr %a1240 + store { ptr, i64, i64 } %t1243, ptr %a1245 + store { ptr, i64, i64 } { ptr @.str.5018, i64 1, i64 0 }, ptr %a1246 + call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) + %t1247 = load { ptr, i64, i64 }, ptr %a1244 + call void @finch.gen.emit(ptr %t1237, { ptr, i64, i64 } %t1247) + %t1248 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5019, i64 4, i64 0 }) + %t1249 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1248, 1 + ret %S.gen.Val %t1249 +endif7531: + %t1250 = load ptr, ptr %a1 + %t1251 = load ptr, ptr %a1 + %t1252 = icmp eq ptr %t1251, null + br i1 %t1252, label %panic7539, label %ok7540 +panic7539: + call void @finch_panic(ptr @.str.5020, i64 4473, ptr @.str.5021) unreachable -ok7243: - %t1276 = getelementptr inbounds %S.gen.Gen, ptr %t1274, i32 0, i32 13 - %t1277 = load { ptr, i64, i64 }, ptr %t1276 - %t1278 = load { ptr, i64, i64 }, ptr %a8 - %t1279 = call i64 @finch.gen.findTemplate(ptr %t1273, { ptr, i64, i64 } %t1277, { ptr, i64, i64 } %t1278, { ptr, i64, i64 } { ptr @.str.4792, i64 0, i64 0 }, i1 true) - %t1280 = icmp sge i64 %t1279, 0 - br i1 %t1280, label %then7244, label %endif7246 -then7244: - %t1281 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1282 = getelementptr inbounds %S.ast.Type, ptr %t1281, i32 0, i32 1 - %t1283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1282, i32 0, i32 1 - %t1284 = load i64, ptr %t1283 - %t1285 = icmp eq i64 %t1284, 0 - br i1 %t1285, label %then7247, label %endif7249 -then7247: - %t1286 = load ptr, ptr %a1 - %t1287 = load %S.ast.Node, ptr %a2 - %t1288 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4793, i64 1, i64 0 }, ptr %a1290 - store { ptr, i64, i64 } %t1288, ptr %a1291 - call void @finch_str_concat(ptr %a1289, ptr %a1290, ptr %a1291) - %t1292 = load { ptr, i64, i64 }, ptr %a1289 - store { ptr, i64, i64 } %t1292, ptr %a1294 - store { ptr, i64, i64 } { ptr @.str.4794, i64 42, i64 0 }, ptr %a1295 - call void @finch_str_concat(ptr %a1293, ptr %a1294, ptr %a1295) - %t1296 = load { ptr, i64, i64 }, ptr %a1293 - %t1297 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1296, ptr %a1299 - store { ptr, i64, i64 } %t1297, ptr %a1300 - call void @finch_str_concat(ptr %a1298, ptr %a1299, ptr %a1300) - %t1301 = load { ptr, i64, i64 }, ptr %a1298 - store { ptr, i64, i64 } %t1301, ptr %a1303 - store { ptr, i64, i64 } { ptr @.str.4795, i64 10, i64 0 }, ptr %a1304 - call void @finch_str_concat(ptr %a1302, ptr %a1303, ptr %a1304) - %t1305 = load { ptr, i64, i64 }, ptr %a1302 - call void @finch.gen.fail(ptr %t1286, %S.ast.Node %t1287, { ptr, i64, i64 } %t1305) - br label %endif7249 -endif7249: - store { ptr, i64, i64 } zeroinitializer, ptr %a1306 - %t1307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1308 = getelementptr inbounds %S.ast.Type, ptr %t1307, i32 0, i32 1 - store i64 0, ptr %a1309 - br label %each.cond7250 -each.cond7250: - %t1310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1308, i32 0, i32 1 - %t1311 = load i64, ptr %t1310 - %t1312 = load i64, ptr %a1309 - %t1313 = icmp slt i64 %t1312, %t1311 - br i1 %t1313, label %each.body7251, label %each.end7253 -each.body7251: - %t1314 = load ptr, ptr %t1308 - %t1315 = getelementptr inbounds %S.ast.Type, ptr %t1314, i64 %t1312 - %t1316 = load %S.ast.Type, ptr %t1315 - store %S.ast.Type %t1316, ptr %a1317 - %t1318 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1306, i32 0, i32 1 - %t1319 = load ptr, ptr %a1 - %t1320 = load %S.ast.Type, ptr %a1317 - %t1321 = load %S.ast.Node, ptr %a2 - %t1322 = call %S.ast.Type @finch.gen.resolve(ptr %t1319, %S.ast.Type %t1320, %S.ast.Node %t1321) - %t1323 = load i64, ptr %t1318 - %t1324 = add i64 %t1323, 1 - call void @finch_arr_reserve(ptr %a1306, i64 %t1324, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1325 = load ptr, ptr %a1306 - %t1326 = getelementptr inbounds %S.ast.Type, ptr %t1325, i64 %t1323 - store %S.ast.Type %t1322, ptr %t1326 - store i64 %t1324, ptr %t1318 - br label %each.step7252 -each.step7252: - %t1327 = load i64, ptr %a1309 - %t1328 = add i64 %t1327, 1 - store i64 %t1328, ptr %a1309 - br label %each.cond7250 -each.end7253: - %t1329 = load ptr, ptr %a1 - %t1330 = load ptr, ptr %a1 - %t1331 = icmp eq ptr %t1330, null - br i1 %t1331, label %panic7254, label %ok7255 -panic7254: - call void @finch_panic(ptr @.str.4796, i64 4349, ptr @.str.4797) +ok7540: + %t1253 = getelementptr inbounds %S.gen.Gen, ptr %t1251, i32 0, i32 13 + %t1254 = load { ptr, i64, i64 }, ptr %t1253 + %t1255 = load { ptr, i64, i64 }, ptr %a8 + %t1256 = call i64 @finch.gen.findFn(ptr %t1250, { ptr, i64, i64 } %t1254, { ptr, i64, i64 } %t1255) + store i64 %t1256, ptr %a1257 + %t1258 = load i64, ptr %a1257 + %t1259 = icmp sge i64 %t1258, 0 + br i1 %t1259, label %then7541, label %endif7543 +then7541: + %t1260 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1261 = getelementptr inbounds %S.ast.Type, ptr %t1260, i32 0, i32 1 + %t1262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1261, i32 0, i32 1 + %t1263 = load i64, ptr %t1262 + %t1264 = icmp sgt i64 %t1263, 0 + br i1 %t1264, label %then7544, label %endif7546 +then7544: + %t1265 = load ptr, ptr %a1 + %t1266 = load %S.ast.Node, ptr %a2 + %t1267 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5022, i64 1, i64 0 }, ptr %a1269 + store { ptr, i64, i64 } %t1267, ptr %a1270 + call void @finch_str_concat(ptr %a1268, ptr %a1269, ptr %a1270) + %t1271 = load { ptr, i64, i64 }, ptr %a1268 + store { ptr, i64, i64 } %t1271, ptr %a1273 + store { ptr, i64, i64 } { ptr @.str.5023, i64 47, i64 0 }, ptr %a1274 + call void @finch_str_concat(ptr %a1272, ptr %a1273, ptr %a1274) + %t1275 = load { ptr, i64, i64 }, ptr %a1272 + call void @finch.gen.fail(ptr %t1265, %S.ast.Node %t1266, { ptr, i64, i64 } %t1275) + br label %endif7546 +endif7546: + %t1276 = load ptr, ptr %a1 + %t1277 = load i64, ptr %a1257 + %t1278 = load %S.ast.Node, ptr %a2 + %t1279 = load { ptr, i64, i64 }, ptr %a8 + %t1280 = call %S.gen.Val @finch.gen.callFn(ptr %t1276, i64 %t1277, %S.ast.Node %t1278, i64 0, { ptr, i64, i64 } %t1279, { ptr, i64, i64 } { ptr @.str.5024, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5025, i64 0, i64 0 }) + ret %S.gen.Val %t1280 +endif7543: + %t1281 = load ptr, ptr %a1 + %t1282 = load ptr, ptr %a1 + %t1283 = icmp eq ptr %t1282, null + br i1 %t1283, label %panic7547, label %ok7548 +panic7547: + call void @finch_panic(ptr @.str.5026, i64 4480, ptr @.str.5027) unreachable -ok7255: - %t1332 = getelementptr inbounds %S.gen.Gen, ptr %t1330, i32 0, i32 13 - %t1333 = load { ptr, i64, i64 }, ptr %t1332 - %t1334 = load { ptr, i64, i64 }, ptr %a8 - %t1335 = load { ptr, i64, i64 }, ptr %a1306 - %t1336 = load %S.ast.Node, ptr %a2 - %t1337 = call %S.ast.Type @finch.gen.instStruct(ptr %t1329, { ptr, i64, i64 } %t1333, { ptr, i64, i64 } %t1334, { ptr, i64, i64 } %t1335, %S.ast.Node %t1336) - store %S.ast.Type %t1337, ptr %a1338 - %t1339 = load ptr, ptr %a1 - %t1340 = load ptr, ptr %a1 - %t1341 = getelementptr inbounds %S.ast.Type, ptr %a1338, i32 0, i32 3 - %t1342 = load { ptr, i64, i64 }, ptr %t1341 - %t1343 = getelementptr inbounds %S.ast.Type, ptr %a1338, i32 0, i32 2 - %t1344 = load { ptr, i64, i64 }, ptr %t1343 - %t1345 = call i64 @finch.gen.findStruct(ptr %t1340, { ptr, i64, i64 } %t1342, { ptr, i64, i64 } %t1344) - %t1346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1347 = load { ptr, i64, i64 }, ptr %t1346 - %t1348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1349 = load { ptr, i64, i64 }, ptr %t1348 - %t1350 = load %S.ast.Node, ptr %a2 - %t1351 = call %S.gen.Val @finch.gen.construct(ptr %t1339, i64 %t1345, { ptr, i64, i64 } %t1347, { ptr, i64, i64 } %t1349, %S.ast.Node %t1350) - ret %S.gen.Val %t1351 -endif7246: +ok7548: + %t1284 = getelementptr inbounds %S.gen.Gen, ptr %t1282, i32 0, i32 13 + %t1285 = load { ptr, i64, i64 }, ptr %t1284 + %t1286 = load { ptr, i64, i64 }, ptr %a8 + %t1287 = call i64 @finch.gen.findTemplate(ptr %t1281, { ptr, i64, i64 } %t1285, { ptr, i64, i64 } %t1286, { ptr, i64, i64 } { ptr @.str.5028, i64 0, i64 0 }, i1 false) + store i64 %t1287, ptr %a1288 + %t1289 = load i64, ptr %a1288 + %t1290 = icmp sge i64 %t1289, 0 + br i1 %t1290, label %then7549, label %endif7551 +then7549: + %t1291 = load ptr, ptr %a1 + %t1292 = load %S.ast.Node, ptr %a2 + %t1293 = load i64, ptr %a1288 + %t1294 = load { ptr, i64, i64 }, ptr %a8 + %t1295 = call %S.gen.Val @finch.gen.genericCall(ptr %t1291, %S.ast.Node %t1292, i64 %t1293, i64 0, { ptr, i64, i64 } %t1294) + ret %S.gen.Val %t1295 +endif7551: + %t1296 = load ptr, ptr %a1 + %t1297 = load ptr, ptr %a1 + %t1298 = icmp eq ptr %t1297, null + br i1 %t1298, label %panic7552, label %ok7553 +panic7552: + call void @finch_panic(ptr @.str.5029, i64 4484, ptr @.str.5030) + unreachable +ok7553: + %t1299 = getelementptr inbounds %S.gen.Gen, ptr %t1297, i32 0, i32 13 + %t1300 = load { ptr, i64, i64 }, ptr %t1299 + %t1301 = load { ptr, i64, i64 }, ptr %a8 + %t1302 = call i64 @finch.gen.findTemplate(ptr %t1296, { ptr, i64, i64 } %t1300, { ptr, i64, i64 } %t1301, { ptr, i64, i64 } { ptr @.str.5031, i64 0, i64 0 }, i1 true) + %t1303 = icmp sge i64 %t1302, 0 + br i1 %t1303, label %then7554, label %endif7556 +then7554: + %t1304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1305 = getelementptr inbounds %S.ast.Type, ptr %t1304, i32 0, i32 1 + %t1306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1305, i32 0, i32 1 + %t1307 = load i64, ptr %t1306 + %t1308 = icmp eq i64 %t1307, 0 + br i1 %t1308, label %then7557, label %endif7559 +then7557: + %t1309 = load ptr, ptr %a1 + %t1310 = load %S.ast.Node, ptr %a2 + %t1311 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5032, i64 1, i64 0 }, ptr %a1313 + store { ptr, i64, i64 } %t1311, ptr %a1314 + call void @finch_str_concat(ptr %a1312, ptr %a1313, ptr %a1314) + %t1315 = load { ptr, i64, i64 }, ptr %a1312 + store { ptr, i64, i64 } %t1315, ptr %a1317 + store { ptr, i64, i64 } { ptr @.str.5033, i64 42, i64 0 }, ptr %a1318 + call void @finch_str_concat(ptr %a1316, ptr %a1317, ptr %a1318) + %t1319 = load { ptr, i64, i64 }, ptr %a1316 + %t1320 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1319, ptr %a1322 + store { ptr, i64, i64 } %t1320, ptr %a1323 + call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) + %t1324 = load { ptr, i64, i64 }, ptr %a1321 + store { ptr, i64, i64 } %t1324, ptr %a1326 + store { ptr, i64, i64 } { ptr @.str.5034, i64 10, i64 0 }, ptr %a1327 + call void @finch_str_concat(ptr %a1325, ptr %a1326, ptr %a1327) + %t1328 = load { ptr, i64, i64 }, ptr %a1325 + call void @finch.gen.fail(ptr %t1309, %S.ast.Node %t1310, { ptr, i64, i64 } %t1328) + br label %endif7559 +endif7559: + store { ptr, i64, i64 } zeroinitializer, ptr %a1329 + %t1330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 + %t1331 = getelementptr inbounds %S.ast.Type, ptr %t1330, i32 0, i32 1 + store i64 0, ptr %a1332 + br label %each.cond7560 +each.cond7560: + %t1333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1331, i32 0, i32 1 + %t1334 = load i64, ptr %t1333 + %t1335 = load i64, ptr %a1332 + %t1336 = icmp slt i64 %t1335, %t1334 + br i1 %t1336, label %each.body7561, label %each.end7563 +each.body7561: + %t1337 = load ptr, ptr %t1331 + %t1338 = getelementptr inbounds %S.ast.Type, ptr %t1337, i64 %t1335 + %t1339 = load %S.ast.Type, ptr %t1338 + store %S.ast.Type %t1339, ptr %a1340 + %t1341 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1329, i32 0, i32 1 + %t1342 = load ptr, ptr %a1 + %t1343 = load %S.ast.Type, ptr %a1340 + %t1344 = load %S.ast.Node, ptr %a2 + %t1345 = call %S.ast.Type @finch.gen.resolve(ptr %t1342, %S.ast.Type %t1343, %S.ast.Node %t1344) + %t1346 = load i64, ptr %t1341 + %t1347 = add i64 %t1346, 1 + call void @finch_arr_reserve(ptr %a1329, i64 %t1347, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) + %t1348 = load ptr, ptr %a1329 + %t1349 = getelementptr inbounds %S.ast.Type, ptr %t1348, i64 %t1346 + store %S.ast.Type %t1345, ptr %t1349 + store i64 %t1347, ptr %t1341 + br label %each.step7562 +each.step7562: + %t1350 = load i64, ptr %a1332 + %t1351 = add i64 %t1350, 1 + store i64 %t1351, ptr %a1332 + br label %each.cond7560 +each.end7563: %t1352 = load ptr, ptr %a1 %t1353 = load ptr, ptr %a1 %t1354 = icmp eq ptr %t1353, null - br i1 %t1354, label %panic7256, label %ok7257 -panic7256: - call void @finch_panic(ptr @.str.4798, i64 4352, ptr @.str.4799) + br i1 %t1354, label %panic7564, label %ok7565 +panic7564: + call void @finch_panic(ptr @.str.5035, i64 4493, ptr @.str.5036) unreachable -ok7257: +ok7565: %t1355 = getelementptr inbounds %S.gen.Gen, ptr %t1353, i32 0, i32 13 %t1356 = load { ptr, i64, i64 }, ptr %t1355 %t1357 = load { ptr, i64, i64 }, ptr %a8 - %t1358 = call i64 @finch.gen.findStruct(ptr %t1352, { ptr, i64, i64 } %t1356, { ptr, i64, i64 } %t1357) - store i64 %t1358, ptr %a1359 - %t1360 = load i64, ptr %a1359 - %t1361 = icmp sge i64 %t1360, 0 - br i1 %t1361, label %then7258, label %endif7260 -then7258: + %t1358 = load { ptr, i64, i64 }, ptr %a1329 + %t1359 = load %S.ast.Node, ptr %a2 + %t1360 = call %S.ast.Type @finch.gen.instStruct(ptr %t1352, { ptr, i64, i64 } %t1356, { ptr, i64, i64 } %t1357, { ptr, i64, i64 } %t1358, %S.ast.Node %t1359) + store %S.ast.Type %t1360, ptr %a1361 %t1362 = load ptr, ptr %a1 - %t1363 = load i64, ptr %a1359 - %t1364 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1363 = load ptr, ptr %a1 + %t1364 = getelementptr inbounds %S.ast.Type, ptr %a1361, i32 0, i32 3 %t1365 = load { ptr, i64, i64 }, ptr %t1364 - %t1366 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1366 = getelementptr inbounds %S.ast.Type, ptr %a1361, i32 0, i32 2 %t1367 = load { ptr, i64, i64 }, ptr %t1366 - %t1368 = load %S.ast.Node, ptr %a2 - %t1369 = call %S.gen.Val @finch.gen.construct(ptr %t1362, i64 %t1363, { ptr, i64, i64 } %t1365, { ptr, i64, i64 } %t1367, %S.ast.Node %t1368) - ret %S.gen.Val %t1369 -endif7260: - %t1370 = load ptr, ptr %a1 - %t1371 = load ptr, ptr %a1 - %t1372 = icmp eq ptr %t1371, null - br i1 %t1372, label %panic7261, label %ok7262 -panic7261: - call void @finch_panic(ptr @.str.4800, i64 4356, ptr @.str.4801) + %t1368 = call i64 @finch.gen.findStruct(ptr %t1363, { ptr, i64, i64 } %t1365, { ptr, i64, i64 } %t1367) + %t1369 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1370 = load { ptr, i64, i64 }, ptr %t1369 + %t1371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1372 = load { ptr, i64, i64 }, ptr %t1371 + %t1373 = load %S.ast.Node, ptr %a2 + %t1374 = call %S.gen.Val @finch.gen.construct(ptr %t1362, i64 %t1368, { ptr, i64, i64 } %t1370, { ptr, i64, i64 } %t1372, %S.ast.Node %t1373) + ret %S.gen.Val %t1374 +endif7556: + %t1375 = load ptr, ptr %a1 + %t1376 = load ptr, ptr %a1 + %t1377 = icmp eq ptr %t1376, null + br i1 %t1377, label %panic7566, label %ok7567 +panic7566: + call void @finch_panic(ptr @.str.5037, i64 4496, ptr @.str.5038) unreachable -ok7262: - %t1373 = getelementptr inbounds %S.gen.Gen, ptr %t1371, i32 0, i32 13 - %t1374 = load { ptr, i64, i64 }, ptr %t1373 - %t1375 = load { ptr, i64, i64 }, ptr %a8 - %t1376 = call i64 @finch.gen.findEnum(ptr %t1370, { ptr, i64, i64 } %t1374, { ptr, i64, i64 } %t1375) - store i64 %t1376, ptr %a1377 - %t1378 = load i64, ptr %a1377 - %t1379 = icmp sge i64 %t1378, 0 - br i1 %t1379, label %then7263, label %endif7265 -then7263: - %t1380 = load ptr, ptr %a1 - %t1381 = load %S.ast.Node, ptr %a2 - %t1382 = load i64, ptr %a1377 - %t1383 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1380, %S.ast.Node %t1381, i64 %t1382) - ret %S.gen.Val %t1383 -endif7265: - %t1384 = load ptr, ptr %a1 - %t1385 = icmp eq ptr %t1384, null - br i1 %t1385, label %panic7266, label %ok7267 -panic7266: - call void @finch_panic(ptr @.str.4802, i64 4360, ptr @.str.4803) +ok7567: + %t1378 = getelementptr inbounds %S.gen.Gen, ptr %t1376, i32 0, i32 13 + %t1379 = load { ptr, i64, i64 }, ptr %t1378 + %t1380 = load { ptr, i64, i64 }, ptr %a8 + %t1381 = call i64 @finch.gen.findStruct(ptr %t1375, { ptr, i64, i64 } %t1379, { ptr, i64, i64 } %t1380) + store i64 %t1381, ptr %a1382 + %t1383 = load i64, ptr %a1382 + %t1384 = icmp sge i64 %t1383, 0 + br i1 %t1384, label %then7568, label %endif7570 +then7568: + %t1385 = load ptr, ptr %a1 + %t1386 = icmp eq ptr %t1385, null + br i1 %t1386, label %panic7571, label %ok7572 +panic7571: + call void @finch_panic(ptr @.str.5039, i64 4498, ptr @.str.5040) unreachable -ok7267: - %t1386 = getelementptr inbounds %S.gen.Gen, ptr %t1384, i32 0, i32 24 - %t1387 = getelementptr inbounds %S.cimport.CImports, ptr %t1386, i32 0, i32 0 - %t1388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1388, ptr %a1389 - %t1390 = call i64 @finch_map_find(ptr %t1387, ptr %a1389, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1391 = icmp sge i64 %t1390, 0 - br i1 %t1391, label %then7268, label %endif7270 -then7268: - %t1392 = load ptr, ptr %a1 - %t1393 = load %S.ast.Node, ptr %a2 - %t1394 = load ptr, ptr %a1 - %t1395 = icmp eq ptr %t1394, null - br i1 %t1395, label %panic7271, label %ok7272 -panic7271: - call void @finch_panic(ptr @.str.4804, i64 4361, ptr @.str.4805) +ok7572: + %t1387 = getelementptr inbounds %S.gen.Gen, ptr %t1385, i32 0, i32 15 + %t1388 = load i64, ptr %a1382 + %t1389 = load { ptr, i64, i64 }, ptr %t1387 + %t1390 = extractvalue { ptr, i64, i64 } %t1389, 1 + %t1391 = icmp uge i64 %t1388, %t1390 + br i1 %t1391, label %range7573, label %inrange7574 +range7573: + call void @finch_panic_index(ptr @.str.5041, i64 4498, i64 %t1388, i64 %t1390) unreachable -ok7272: - %t1396 = getelementptr inbounds %S.gen.Gen, ptr %t1394, i32 0, i32 24 - %t1397 = getelementptr inbounds %S.cimport.CImports, ptr %t1396, i32 0, i32 0 - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - %t1400 = call i64 @finch_map_find(ptr %t1397, ptr %a1399, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1401 = icmp slt i64 %t1400, 0 - br i1 %t1401, label %map.missing7273, label %map.found7274 -map.missing7273: - store { ptr, i64, i64 } zeroinitializer, ptr %a1402 - store { ptr, i64, i64 } %t1398, ptr %a1403 - call void @finch_buf_str(ptr %a1402, ptr %a1403, i32 1) - call void @finch_map_missing(ptr @.str.4806, i64 4361, ptr %a1402) +inrange7574: + %t1392 = extractvalue { ptr, i64, i64 } %t1389, 0 + %t1393 = getelementptr inbounds %S.gen.StructDef, ptr %t1392, i64 %t1388 + %t1394 = load %S.gen.StructDef, ptr %t1393 + store %S.gen.StructDef %t1394, ptr %a1395 + call void @finch.copy.S_gen_StructDef(ptr %a1396, ptr %a1395) + %t1397 = load %S.gen.StructDef, ptr %a1396 + store %S.gen.StructDef %t1397, ptr %a1398 + %t1399 = load ptr, ptr %a1 + %t1400 = icmp eq ptr %t1399, null + br i1 %t1400, label %panic7575, label %ok7576 +panic7575: + call void @finch_panic(ptr @.str.5042, i64 4499, ptr @.str.5043) unreachable -map.found7274: - %t1404 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1397, i32 0, i32 0 - %t1405 = load ptr, ptr %t1404 - %t1406 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1405, i64 %t1400 - %t1407 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1406, i32 0, i32 2 - %t1408 = load %S.cimport.CFunc, ptr %t1407 - %t1409 = call %S.gen.Val @finch.gen.callC(ptr %t1392, %S.ast.Node %t1393, %S.cimport.CFunc %t1408) - ret %S.gen.Val %t1409 -endif7270: - %t1410 = load ptr, ptr %a1 - %t1411 = load { ptr, i64, i64 }, ptr %a8 - %t1412 = call i64 @finch.gen.findStruct(ptr %t1410, { ptr, i64, i64 } { ptr @.str.4807, i64 1, i64 0 }, { ptr, i64, i64 } %t1411) - store i64 %t1412, ptr %a1359 - %t1413 = load i64, ptr %a1359 - %t1414 = icmp sge i64 %t1413, 0 - br i1 %t1414, label %then7275, label %endif7277 -then7275: - %t1415 = load ptr, ptr %a1 - %t1416 = load i64, ptr %a1359 - %t1417 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - %t1419 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1420 = load { ptr, i64, i64 }, ptr %t1419 - %t1421 = load %S.ast.Node, ptr %a2 - %t1422 = call %S.gen.Val @finch.gen.construct(ptr %t1415, i64 %t1416, { ptr, i64, i64 } %t1418, { ptr, i64, i64 } %t1420, %S.ast.Node %t1421) - ret %S.gen.Val %t1422 -endif7277: - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a8 - %t1425 = call i64 @finch.gen.lookup(ptr %t1423, { ptr, i64, i64 } %t1424) - %t1426 = icmp sge i64 %t1425, 0 - br i1 %t1426, label %then7278, label %endif7280 -then7278: - %t1427 = load ptr, ptr %a1 - %t1428 = load %S.ast.Node, ptr %a2 - %t1429 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4808, i64 1, i64 0 }, ptr %a1431 - store { ptr, i64, i64 } %t1429, ptr %a1432 - call void @finch_str_concat(ptr %a1430, ptr %a1431, ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1430 - store { ptr, i64, i64 } %t1433, ptr %a1435 - store { ptr, i64, i64 } { ptr @.str.4809, i64 31, i64 0 }, ptr %a1436 - call void @finch_str_concat(ptr %a1434, ptr %a1435, ptr %a1436) - %t1437 = load { ptr, i64, i64 }, ptr %a1434 - call void @finch.gen.fail(ptr %t1427, %S.ast.Node %t1428, { ptr, i64, i64 } %t1437) - br label %endif7280 -endif7280: - %t1438 = load ptr, ptr %a1 - %t1439 = load %S.ast.Node, ptr %a2 - %t1440 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4810, i64 28, i64 0 }, ptr %a1442 - store { ptr, i64, i64 } %t1440, ptr %a1443 - call void @finch_str_concat(ptr %a1441, ptr %a1442, ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1441 - store { ptr, i64, i64 } %t1444, ptr %a1446 - store { ptr, i64, i64 } { ptr @.str.4811, i64 1, i64 0 }, ptr %a1447 - call void @finch_str_concat(ptr %a1445, ptr %a1446, ptr %a1447) - %t1448 = load { ptr, i64, i64 }, ptr %a1445 - %t1449 = load { ptr, i64, i64 }, ptr %a8 - %t1450 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1449) - store { ptr, i64, i64 } %t1448, ptr %a1452 +ok7576: + %t1401 = getelementptr inbounds %S.gen.Gen, ptr %t1399, i32 0, i32 26 + %t1402 = load i1, ptr %t1401 + br label %logic.from7577 +logic.from7577: + br i1 %t1402, label %logic.rhs7578, label %logic.end7579 +logic.rhs7578: + %t1403 = getelementptr inbounds %S.gen.StructDef, ptr %a1398, i32 0, i32 2 + %t1404 = load i1, ptr %t1403 + %t1405 = xor i1 %t1404, true + br label %logic.rend7580 +logic.rend7580: + br label %logic.end7579 +logic.end7579: + %t1406 = phi i1 [ false, %logic.from7577 ], [ %t1405, %logic.rend7580 ] + br i1 %t1406, label %then7581, label %endif7583 +then7581: + %t1407 = load ptr, ptr %a1 + %t1408 = icmp eq ptr %t1407, null + br i1 %t1408, label %panic7584, label %ok7585 +panic7584: + call void @finch_panic(ptr @.str.5044, i64 4500, ptr @.str.5045) + unreachable +ok7585: + %t1409 = getelementptr inbounds %S.gen.Gen, ptr %t1407, i32 0, i32 0 + %t1410 = getelementptr inbounds %S.gen.StructDef, ptr %a1398, i32 0, i32 13 + %t1411 = load i64, ptr %t1410 + %t1412 = load { ptr, i64, i64 }, ptr %t1409 + %t1413 = extractvalue { ptr, i64, i64 } %t1412, 1 + %t1414 = icmp uge i64 %t1411, %t1413 + br i1 %t1414, label %range7586, label %inrange7587 +range7586: + call void @finch_panic_index(ptr @.str.5046, i64 4500, i64 %t1411, i64 %t1413) + unreachable +inrange7587: + %t1415 = extractvalue { ptr, i64, i64 } %t1412, 0 + %t1416 = getelementptr inbounds %S.ast.Program, ptr %t1415, i64 %t1411 + %t1417 = getelementptr inbounds %S.ast.Program, ptr %t1416, i32 0, i32 6 + %t1418 = getelementptr inbounds %S.gen.StructDef, ptr %a1398, i32 0, i32 14 + %t1419 = load i64, ptr %t1418 + %t1420 = load { ptr, i64, i64 }, ptr %t1417 + %t1421 = extractvalue { ptr, i64, i64 } %t1420, 1 + %t1422 = icmp uge i64 %t1419, %t1421 + br i1 %t1422, label %range7588, label %inrange7589 +range7588: + call void @finch_panic_index(ptr @.str.5047, i64 4500, i64 %t1419, i64 %t1421) + unreachable +inrange7589: + %t1423 = extractvalue { ptr, i64, i64 } %t1420, 0 + %t1424 = getelementptr inbounds %S.ast.Node, ptr %t1423, i64 %t1419 + %t1425 = load %S.ast.Node, ptr %t1424 + store %S.ast.Node %t1425, ptr %a1426 + call void @finch.copy.S_ast_Node(ptr %a1427, ptr %a1426) + %t1428 = load %S.ast.Node, ptr %a1427 + store %S.ast.Node %t1428, ptr %a1429 + %t1430 = load ptr, ptr %a1 + %t1431 = load %S.ast.Node, ptr %a2 + %t1432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t1433 = load i64, ptr %t1432 + %t1434 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t1435 = load i64, ptr %t1434 + %t1436 = getelementptr inbounds %S.gen.StructDef, ptr %a1398, i32 0, i32 1 + %t1437 = load { ptr, i64, i64 }, ptr %t1436 + store { ptr, i64, i64 } { ptr @.str.5048, i64 16, i64 0 }, ptr %a1439 + store { ptr, i64, i64 } %t1437, ptr %a1440 + call void @finch_str_concat(ptr %a1438, ptr %a1439, ptr %a1440) + %t1441 = load { ptr, i64, i64 }, ptr %a1438 + store { ptr, i64, i64 } %t1441, ptr %a1443 + store { ptr, i64, i64 } { ptr @.str.5049, i64 3, i64 0 }, ptr %a1444 + call void @finch_str_concat(ptr %a1442, ptr %a1443, ptr %a1444) + %t1445 = load { ptr, i64, i64 }, ptr %a1442 + %t1446 = getelementptr inbounds %S.gen.StructDef, ptr %a1398, i32 0, i32 11 + %t1447 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1446, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5050, i64 2, i64 0 }, ptr %a1448 + call void @finch_str_join(ptr %a1449, ptr %t1446, ptr %a1448) + %t1450 = load { ptr, i64, i64 }, ptr %a1449 + store { ptr, i64, i64 } %t1445, ptr %a1452 store { ptr, i64, i64 } %t1450, ptr %a1453 call void @finch_str_concat(ptr %a1451, ptr %a1452, ptr %a1453) %t1454 = load { ptr, i64, i64 }, ptr %a1451 - call void @finch.gen.fail(ptr %t1438, %S.ast.Node %t1439, { ptr, i64, i64 } %t1454) + store { ptr, i64, i64 } %t1454, ptr %a1456 + store { ptr, i64, i64 } { ptr @.str.5051, i64 6, i64 0 }, ptr %a1457 + call void @finch_str_concat(ptr %a1455, ptr %a1456, ptr %a1457) + %t1458 = load { ptr, i64, i64 }, ptr %a1455 + %t1459 = load ptr, ptr %a1 + %t1460 = icmp eq ptr %t1459, null + br i1 %t1460, label %panic7590, label %ok7591 +panic7590: + call void @finch_panic(ptr @.str.5052, i64 4501, ptr @.str.5053) + unreachable +ok7591: + %t1461 = getelementptr inbounds %S.gen.Gen, ptr %t1459, i32 0, i32 1 + %t1462 = getelementptr inbounds %S.ast.Node, ptr %a1429, i32 0, i32 13 + %t1463 = load i64, ptr %t1462 + %t1464 = load { ptr, i64, i64 }, ptr %t1461 + %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 + %t1466 = icmp uge i64 %t1463, %t1465 + br i1 %t1466, label %range7592, label %inrange7593 +range7592: + call void @finch_panic_index(ptr @.str.5054, i64 4501, i64 %t1463, i64 %t1465) + unreachable +inrange7593: + %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 + %t1468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1467, i64 %t1463 + %t1469 = load { ptr, i64, i64 }, ptr %t1468 + %t1470 = getelementptr inbounds %S.ast.Node, ptr %a1429, i32 0, i32 11 + %t1471 = load i64, ptr %t1470 + %t1472 = getelementptr inbounds %S.ast.Node, ptr %a1429, i32 0, i32 12 + %t1473 = load i64, ptr %t1472 + call void @finch.gen.noteRef(ptr %t1430, %S.ast.Node %t1431, i64 %t1433, i64 %t1435, { ptr, i64, i64 } %t1458, { ptr, i64, i64 } %t1469, i64 %t1471, i64 %t1473) + br label %endif7583 +endif7583: + %t1474 = load ptr, ptr %a1 + %t1475 = load i64, ptr %a1382 + %t1476 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1477 = load { ptr, i64, i64 }, ptr %t1476 + %t1478 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1479 = load { ptr, i64, i64 }, ptr %t1478 + %t1480 = load %S.ast.Node, ptr %a2 + %t1481 = call %S.gen.Val @finch.gen.construct(ptr %t1474, i64 %t1475, { ptr, i64, i64 } %t1477, { ptr, i64, i64 } %t1479, %S.ast.Node %t1480) + ret %S.gen.Val %t1481 +endif7570: + %t1482 = load ptr, ptr %a1 + %t1483 = load ptr, ptr %a1 + %t1484 = icmp eq ptr %t1483, null + br i1 %t1484, label %panic7594, label %ok7595 +panic7594: + call void @finch_panic(ptr @.str.5055, i64 4505, ptr @.str.5056) + unreachable +ok7595: + %t1485 = getelementptr inbounds %S.gen.Gen, ptr %t1483, i32 0, i32 13 + %t1486 = load { ptr, i64, i64 }, ptr %t1485 + %t1487 = load { ptr, i64, i64 }, ptr %a8 + %t1488 = call i64 @finch.gen.findEnum(ptr %t1482, { ptr, i64, i64 } %t1486, { ptr, i64, i64 } %t1487) + store i64 %t1488, ptr %a1489 + %t1490 = load i64, ptr %a1489 + %t1491 = icmp sge i64 %t1490, 0 + br i1 %t1491, label %then7596, label %endif7598 +then7596: + %t1492 = load ptr, ptr %a1 + %t1493 = load %S.ast.Node, ptr %a2 + %t1494 = load i64, ptr %a1489 + %t1495 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1492, %S.ast.Node %t1493, i64 %t1494) + ret %S.gen.Val %t1495 +endif7598: + %t1496 = load ptr, ptr %a1 + %t1497 = icmp eq ptr %t1496, null + br i1 %t1497, label %panic7599, label %ok7600 +panic7599: + call void @finch_panic(ptr @.str.5057, i64 4509, ptr @.str.5058) + unreachable +ok7600: + %t1498 = getelementptr inbounds %S.gen.Gen, ptr %t1496, i32 0, i32 24 + %t1499 = getelementptr inbounds %S.cimport.CImports, ptr %t1498, i32 0, i32 0 + %t1500 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1500, ptr %a1501 + %t1502 = call i64 @finch_map_find(ptr %t1499, ptr %a1501, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t1503 = icmp sge i64 %t1502, 0 + br i1 %t1503, label %then7601, label %endif7603 +then7601: + %t1504 = load ptr, ptr %a1 + %t1505 = load %S.ast.Node, ptr %a2 + %t1506 = load ptr, ptr %a1 + %t1507 = icmp eq ptr %t1506, null + br i1 %t1507, label %panic7604, label %ok7605 +panic7604: + call void @finch_panic(ptr @.str.5059, i64 4510, ptr @.str.5060) + unreachable +ok7605: + %t1508 = getelementptr inbounds %S.gen.Gen, ptr %t1506, i32 0, i32 24 + %t1509 = getelementptr inbounds %S.cimport.CImports, ptr %t1508, i32 0, i32 0 + %t1510 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t1510, ptr %a1511 + %t1512 = call i64 @finch_map_find(ptr %t1509, ptr %a1511, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t1513 = icmp slt i64 %t1512, 0 + br i1 %t1513, label %map.missing7606, label %map.found7607 +map.missing7606: + store { ptr, i64, i64 } zeroinitializer, ptr %a1514 + store { ptr, i64, i64 } %t1510, ptr %a1515 + call void @finch_buf_str(ptr %a1514, ptr %a1515, i32 1) + call void @finch_map_missing(ptr @.str.5061, i64 4510, ptr %a1514) + unreachable +map.found7607: + %t1516 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1509, i32 0, i32 0 + %t1517 = load ptr, ptr %t1516 + %t1518 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1517, i64 %t1512 + %t1519 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1518, i32 0, i32 2 + %t1520 = load %S.cimport.CFunc, ptr %t1519 + %t1521 = call %S.gen.Val @finch.gen.callC(ptr %t1504, %S.ast.Node %t1505, %S.cimport.CFunc %t1520) + ret %S.gen.Val %t1521 +endif7603: + %t1522 = load ptr, ptr %a1 + %t1523 = load { ptr, i64, i64 }, ptr %a8 + %t1524 = call i64 @finch.gen.findStruct(ptr %t1522, { ptr, i64, i64 } { ptr @.str.5062, i64 1, i64 0 }, { ptr, i64, i64 } %t1523) + store i64 %t1524, ptr %a1382 + %t1525 = load i64, ptr %a1382 + %t1526 = icmp sge i64 %t1525, 0 + br i1 %t1526, label %then7608, label %endif7610 +then7608: + %t1527 = load ptr, ptr %a1 + %t1528 = load i64, ptr %a1382 + %t1529 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 + %t1530 = load { ptr, i64, i64 }, ptr %t1529 + %t1531 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 + %t1532 = load { ptr, i64, i64 }, ptr %t1531 + %t1533 = load %S.ast.Node, ptr %a2 + %t1534 = call %S.gen.Val @finch.gen.construct(ptr %t1527, i64 %t1528, { ptr, i64, i64 } %t1530, { ptr, i64, i64 } %t1532, %S.ast.Node %t1533) + ret %S.gen.Val %t1534 +endif7610: + %t1535 = load ptr, ptr %a1 + %t1536 = load { ptr, i64, i64 }, ptr %a8 + %t1537 = call i64 @finch.gen.lookup(ptr %t1535, { ptr, i64, i64 } %t1536) + %t1538 = icmp sge i64 %t1537, 0 + br i1 %t1538, label %then7611, label %endif7613 +then7611: + %t1539 = load ptr, ptr %a1 + %t1540 = load %S.ast.Node, ptr %a2 + %t1541 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5063, i64 1, i64 0 }, ptr %a1543 + store { ptr, i64, i64 } %t1541, ptr %a1544 + call void @finch_str_concat(ptr %a1542, ptr %a1543, ptr %a1544) + %t1545 = load { ptr, i64, i64 }, ptr %a1542 + store { ptr, i64, i64 } %t1545, ptr %a1547 + store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a1548 + call void @finch_str_concat(ptr %a1546, ptr %a1547, ptr %a1548) + %t1549 = load { ptr, i64, i64 }, ptr %a1546 + call void @finch.gen.fail(ptr %t1539, %S.ast.Node %t1540, { ptr, i64, i64 } %t1549) + br label %endif7613 +endif7613: + %t1550 = load ptr, ptr %a1 + %t1551 = load %S.ast.Node, ptr %a2 + %t1552 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.5065, i64 28, i64 0 }, ptr %a1554 + store { ptr, i64, i64 } %t1552, ptr %a1555 + call void @finch_str_concat(ptr %a1553, ptr %a1554, ptr %a1555) + %t1556 = load { ptr, i64, i64 }, ptr %a1553 + store { ptr, i64, i64 } %t1556, ptr %a1558 + store { ptr, i64, i64 } { ptr @.str.5066, i64 1, i64 0 }, ptr %a1559 + call void @finch_str_concat(ptr %a1557, ptr %a1558, ptr %a1559) + %t1560 = load { ptr, i64, i64 }, ptr %a1557 + %t1561 = load { ptr, i64, i64 }, ptr %a8 + %t1562 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1561) + store { ptr, i64, i64 } %t1560, ptr %a1564 + store { ptr, i64, i64 } %t1562, ptr %a1565 + call void @finch_str_concat(ptr %a1563, ptr %a1564, ptr %a1565) + %t1566 = load { ptr, i64, i64 }, ptr %a1563 + call void @finch.gen.fail(ptr %t1550, %S.ast.Node %t1551, { ptr, i64, i64 } %t1566) ret %S.gen.Val zeroinitializer } @@ -64402,31 +68714,31 @@ entry: %a21 = alloca %S.gen.FnSig, align 16 %a28 = alloca { ptr, i64, i64 }, align 16 %a29 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca i64, align 16 - %a73 = alloca %S.ast.Node, align 16 - %a74 = alloca %S.ast.Node, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca i64, align 16 %a76 = alloca %S.ast.Node, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca %S.ast.Node, align 16 + %a79 = alloca %S.ast.Node, align 16 + %a109 = alloca { ptr, i64, i64 }, align 16 %a110 = alloca { ptr, i64, i64 }, align 16 %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.gen.Val, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.ast.Type, align 16 - %a152 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca %S.gen.Val, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca %S.ast.Type, align 16 + %a155 = alloca %S.ast.Type, align 16 + %a170 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store i64 %p1, ptr %a2 store %S.ast.Node %p2, ptr %a3 @@ -64436,21 +68748,21 @@ entry: store { ptr, i64, i64 } %p6, ptr %a7 %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7281, label %ok7282 -panic7281: - call void @finch_panic(ptr @.str.4812, i64 4375, ptr @.str.4813) + br i1 %t9, label %panic7614, label %ok7615 +panic7614: + call void @finch_panic(ptr @.str.5067, i64 4524, ptr @.str.5068) unreachable -ok7282: +ok7615: %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 14 %t11 = load i64, ptr %a2 %t12 = load { ptr, i64, i64 }, ptr %t10 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range7283, label %inrange7284 -range7283: - call void @finch_panic_index(ptr @.str.4814, i64 4375, i64 %t11, i64 %t13) + br i1 %t14, label %range7616, label %inrange7617 +range7616: + call void @finch_panic_index(ptr @.str.5069, i64 4524, i64 %t11, i64 %t13) unreachable -inrange7284: +inrange7617: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds %S.gen.FnSig, ptr %t15, i64 %t11 %t17 = load %S.gen.FnSig, ptr %t16 @@ -64462,262 +68774,266 @@ inrange7284: %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load i64, ptr %t23 %t25 = icmp eq i64 %t24, 0 - br label %logic.from7285 -logic.from7285: - br i1 %t25, label %logic.rhs7286, label %logic.end7287 -logic.rhs7286: + br label %logic.from7618 +logic.from7618: + br i1 %t25, label %logic.rhs7619, label %logic.end7620 +logic.rhs7619: %t26 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 1 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4815, i64 4, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7287 -logic.end7287: - %t32 = phi i1 [ false, %logic.from7285 ], [ %t31, %logic.rend7288 ] - br i1 %t32, label %then7289, label %endif7291 -then7289: + br label %logic.rend7621 +logic.rend7621: + br label %logic.end7620 +logic.end7620: + %t32 = phi i1 [ false, %logic.from7618 ], [ %t31, %logic.rend7621 ] + br i1 %t32, label %then7622, label %endif7624 +then7622: %t33 = load ptr, ptr %a1 %t34 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } { ptr @.str.4816, i64 52, i64 0 }) - br label %endif7291 -endif7291: + call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } { ptr @.str.5071, i64 52, i64 0 }) + br label %endif7624 +endif7624: %t35 = load ptr, ptr %a1 %t36 = load %S.ast.Node, ptr %a3 - %t37 = load i64, ptr %a4 - %t38 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.checkArgs(ptr %t35, %S.ast.Node %t36, i64 %t37, i64 %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 2 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp sgt i64 %t45, 0 - br i1 %t46, label %then7292, label %endif7294 -then7292: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a42, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4817, i64 4, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = load i64, ptr %t47 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a42, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a42 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t47 - br label %endif7294 -endif7294: - %t57 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load i64, ptr %t58 - store i64 0, ptr %a60 - br label %for.cond7295 -for.cond7295: - %t61 = load i64, ptr %a60 - %t62 = icmp slt i64 %t61, %t59 - br i1 %t62, label %for.body7296, label %for.end7298 -for.body7296: - %t63 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t64 = load i64, ptr %a4 - %t65 = load i64, ptr %a60 - %t66 = add i64 %t64, %t65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range7299, label %inrange7300 -range7299: - call void @finch_panic_index(ptr @.str.4818, i64 4385, i64 %t66, i64 %t68) + %t37 = load %S.gen.FnSig, ptr %a21 + call void @finch.gen.noteCall(ptr %t35, %S.ast.Node %t36, %S.gen.FnSig %t37) + %t38 = load ptr, ptr %a1 + %t39 = load %S.ast.Node, ptr %a3 + %t40 = load i64, ptr %a4 + %t41 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 + %t43 = load i64, ptr %t42 + %t44 = load { ptr, i64, i64 }, ptr %a5 + call void @finch.gen.checkArgs(ptr %t38, %S.ast.Node %t39, i64 %t40, i64 %t43, { ptr, i64, i64 } %t44) + store { ptr, i64, i64 } zeroinitializer, ptr %a45 + %t46 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 2 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 + %t48 = load i64, ptr %t47 + %t49 = icmp sgt i64 %t48, 0 + br i1 %t49, label %then7625, label %endif7627 +then7625: + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 + %t51 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5072, i64 4, i64 0 }, ptr %a53 + store { ptr, i64, i64 } %t51, ptr %a54 + call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) + %t55 = load { ptr, i64, i64 }, ptr %a52 + %t56 = load i64, ptr %t50 + %t57 = add i64 %t56, 1 + call void @finch_arr_reserve(ptr %a45, i64 %t57, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t58 = load ptr, ptr %a45 + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t56 + store { ptr, i64, i64 } %t55, ptr %t59 + store i64 %t57, ptr %t50 + br label %endif7627 +endif7627: + %t60 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 + %t62 = load i64, ptr %t61 + store i64 0, ptr %a63 + br label %for.cond7628 +for.cond7628: + %t64 = load i64, ptr %a63 + %t65 = icmp slt i64 %t64, %t62 + br i1 %t65, label %for.body7629, label %for.end7631 +for.body7629: + %t66 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 + %t67 = load i64, ptr %a4 + %t68 = load i64, ptr %a63 + %t69 = add i64 %t67, %t68 + %t70 = load { ptr, i64, i64 }, ptr %t66 + %t71 = extractvalue { ptr, i64, i64 } %t70, 1 + %t72 = icmp uge i64 %t69, %t71 + br i1 %t72, label %range7632, label %inrange7633 +range7632: + call void @finch_panic_index(ptr @.str.5073, i64 4535, i64 %t69, i64 %t71) unreachable -inrange7300: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 %t66 - %t72 = load %S.ast.Node, ptr %t71 - store %S.ast.Node %t72, ptr %a73 - call void @finch.copy.S_ast_Node(ptr %a74, ptr %a73) - %t75 = load %S.ast.Node, ptr %a74 +inrange7633: + %t73 = extractvalue { ptr, i64, i64 } %t70, 0 + %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 %t69 + %t75 = load %S.ast.Node, ptr %t74 store %S.ast.Node %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = load %S.ast.Node, ptr %a76 - %t80 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t81 = load i64, ptr %a60 - %t82 = load { ptr, i64, i64 }, ptr %t80 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 %t81, %t83 - br i1 %t84, label %range7301, label %inrange7302 -range7301: - call void @finch_panic_index(ptr @.str.4819, i64 4386, i64 %t81, i64 %t83) + call void @finch.copy.S_ast_Node(ptr %a77, ptr %a76) + %t78 = load %S.ast.Node, ptr %a77 + store %S.ast.Node %t78, ptr %a79 + %t80 = load ptr, ptr %a1 + %t81 = load ptr, ptr %a1 + %t82 = load %S.ast.Node, ptr %a79 + %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t84 = load i64, ptr %a63 + %t85 = load { ptr, i64, i64 }, ptr %t83 + %t86 = extractvalue { ptr, i64, i64 } %t85, 1 + %t87 = icmp uge i64 %t84, %t86 + br i1 %t87, label %range7634, label %inrange7635 +range7634: + call void @finch_panic_index(ptr @.str.5074, i64 4536, i64 %t84, i64 %t86) unreachable -inrange7302: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 %t81 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = call %S.gen.Val @finch.gen.exprWant(ptr %t78, %S.ast.Node %t79, %S.ast.Type %t87) - %t89 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t90 = load i64, ptr %a60 - %t91 = load { ptr, i64, i64 }, ptr %t89 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range7303, label %inrange7304 -range7303: - call void @finch_panic_index(ptr @.str.4820, i64 4386, i64 %t90, i64 %t92) +inrange7635: + %t88 = extractvalue { ptr, i64, i64 } %t85, 0 + %t89 = getelementptr inbounds %S.ast.Type, ptr %t88, i64 %t84 + %t90 = load %S.ast.Type, ptr %t89 + %t91 = call %S.gen.Val @finch.gen.exprWant(ptr %t81, %S.ast.Node %t82, %S.ast.Type %t90) + %t92 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t93 = load i64, ptr %a63 + %t94 = load { ptr, i64, i64 }, ptr %t92 + %t95 = extractvalue { ptr, i64, i64 } %t94, 1 + %t96 = icmp uge i64 %t93, %t95 + br i1 %t96, label %range7636, label %inrange7637 +range7636: + call void @finch_panic_index(ptr @.str.5075, i64 4536, i64 %t93, i64 %t95) unreachable -inrange7304: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.ast.Type, ptr %t94, i64 %t90 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = load %S.ast.Node, ptr %a76 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t99 = load i64, ptr %a60 - %t100 = load { ptr, i64, i64 }, ptr %t98 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range7305, label %inrange7306 -range7305: - call void @finch_panic_index(ptr @.str.4822, i64 4386, i64 %t99, i64 %t101) +inrange7637: + %t97 = extractvalue { ptr, i64, i64 } %t94, 0 + %t98 = getelementptr inbounds %S.ast.Type, ptr %t97, i64 %t93 + %t99 = load %S.ast.Type, ptr %t98 + %t100 = load %S.ast.Node, ptr %a79 + %t101 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 + %t102 = load i64, ptr %a63 + %t103 = load { ptr, i64, i64 }, ptr %t101 + %t104 = extractvalue { ptr, i64, i64 } %t103, 1 + %t105 = icmp uge i64 %t102, %t104 + br i1 %t105, label %range7638, label %inrange7639 +range7638: + call void @finch_panic_index(ptr @.str.5077, i64 4536, i64 %t102, i64 %t104) unreachable -inrange7306: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t99 - %t105 = load { ptr, i64, i64 }, ptr %t104 - store { ptr, i64, i64 } { ptr @.str.4821, i64 10, i64 0 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a106 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4823, i64 1, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call %S.gen.Val @finch.gen.coerce(ptr %t77, %S.gen.Val %t88, %S.ast.Type %t96, %S.ast.Node %t97, { ptr, i64, i64 } %t113) - store %S.gen.Val %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t118 = load i64, ptr %a60 - %t119 = load { ptr, i64, i64 }, ptr %t117 - %t120 = extractvalue { ptr, i64, i64 } %t119, 1 - %t121 = icmp uge i64 %t118, %t120 - br i1 %t121, label %range7307, label %inrange7308 -range7307: - call void @finch_panic_index(ptr @.str.4824, i64 4388, i64 %t118, i64 %t120) +inrange7639: + %t106 = extractvalue { ptr, i64, i64 } %t103, 0 + %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t102 + %t108 = load { ptr, i64, i64 }, ptr %t107 + store { ptr, i64, i64 } { ptr @.str.5076, i64 10, i64 0 }, ptr %a110 + store { ptr, i64, i64 } %t108, ptr %a111 + call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) + %t112 = load { ptr, i64, i64 }, ptr %a109 + store { ptr, i64, i64 } %t112, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.5078, i64 1, i64 0 }, ptr %a115 + call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) + %t116 = load { ptr, i64, i64 }, ptr %a113 + %t117 = call %S.gen.Val @finch.gen.coerce(ptr %t80, %S.gen.Val %t91, %S.ast.Type %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t116) + store %S.gen.Val %t117, ptr %a118 + %t119 = load ptr, ptr %a1 + %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t121 = load i64, ptr %a63 + %t122 = load { ptr, i64, i64 }, ptr %t120 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range7640, label %inrange7641 +range7640: + call void @finch_panic_index(ptr @.str.5079, i64 4538, i64 %t121, i64 %t123) unreachable -inrange7308: - %t122 = extractvalue { ptr, i64, i64 } %t119, 0 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i64 %t118 - %t124 = load %S.ast.Type, ptr %t123 - %t125 = call i1 @finch.gen.owning(ptr %t116, %S.ast.Type %t124) - br label %logic.from7309 -logic.from7309: - br i1 %t125, label %logic.rhs7310, label %logic.end7311 -logic.rhs7310: - %t126 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 2 - %t127 = load i1, ptr %t126 - %t128 = xor i1 %t127, true - br label %logic.rend7312 -logic.rend7312: - br label %logic.end7311 -logic.end7311: - %t129 = phi i1 [ false, %logic.from7309 ], [ %t128, %logic.rend7312 ] - br label %logic.from7313 -logic.from7313: - br i1 %t129, label %logic.rhs7314, label %logic.end7315 -logic.rhs7314: - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br label %logic.rend7316 -logic.rend7316: - br label %logic.end7315 -logic.end7315: - %t133 = phi i1 [ false, %logic.from7313 ], [ %t132, %logic.rend7316 ] - br label %logic.from7317 -logic.from7317: - br i1 %t133, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t134 = load %S.ast.Node, ptr %a76 - %t135 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t134) - %t136 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t141 = phi i1 [ false, %logic.from7317 ], [ %t140, %logic.rend7320 ] - br i1 %t141, label %then7321, label %endif7323 -then7321: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 1 - %t146 = load %S.ast.Type, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t142, { ptr, i64, i64 } %t144, %S.ast.Type %t146) - %t148 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t147, 0 - %t149 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 1 - %t150 = load %S.ast.Type, ptr %t149 - store %S.ast.Type %t150, ptr %a151 - call void @finch.copy.S_ast_Type(ptr %a152, ptr %a151) - %t153 = load %S.ast.Type, ptr %a152 - %t154 = insertvalue %S.gen.Val %t148, %S.ast.Type %t153, 1 - %t155 = insertvalue %S.gen.Val %t154, i1 true, 2 - store %S.gen.Val %t155, ptr %a115 - br label %endif7323 -endif7323: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a42, i32 0, i32 1 - %t157 = load ptr, ptr %a1 - %t158 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t159 = load i64, ptr %a60 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range7324, label %inrange7325 -range7324: - call void @finch_panic_index(ptr @.str.4825, i64 4391, i64 %t159, i64 %t161) +inrange7641: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 %t121 + %t127 = load %S.ast.Type, ptr %t126 + %t128 = call i1 @finch.gen.owning(ptr %t119, %S.ast.Type %t127) + br label %logic.from7642 +logic.from7642: + br i1 %t128, label %logic.rhs7643, label %logic.end7644 +logic.rhs7643: + %t129 = getelementptr inbounds %S.gen.Val, ptr %a118, i32 0, i32 2 + %t130 = load i1, ptr %t129 + %t131 = xor i1 %t130, true + br label %logic.rend7645 +logic.rend7645: + br label %logic.end7644 +logic.end7644: + %t132 = phi i1 [ false, %logic.from7642 ], [ %t131, %logic.rend7645 ] + br label %logic.from7646 +logic.from7646: + br i1 %t132, label %logic.rhs7647, label %logic.end7648 +logic.rhs7647: + %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t134 = load i64, ptr %t133 + %t135 = icmp sgt i64 %t134, 0 + br label %logic.rend7649 +logic.rend7649: + br label %logic.end7648 +logic.end7648: + %t136 = phi i1 [ false, %logic.from7646 ], [ %t135, %logic.rend7649 ] + br label %logic.from7650 +logic.from7650: + br i1 %t136, label %logic.rhs7651, label %logic.end7652 +logic.rhs7651: + %t137 = load %S.ast.Node, ptr %a79 + %t138 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t137) + %t139 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t138, ptr %a140 + store { ptr, i64, i64 } %t139, ptr %a141 + %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) + %t143 = icmp ne i32 %t142, 0 + br label %logic.rend7653 +logic.rend7653: + br label %logic.end7652 +logic.end7652: + %t144 = phi i1 [ false, %logic.from7650 ], [ %t143, %logic.rend7653 ] + br i1 %t144, label %then7654, label %endif7656 +then7654: + %t145 = load ptr, ptr %a1 + %t146 = getelementptr inbounds %S.gen.Val, ptr %a118, i32 0, i32 0 + %t147 = load { ptr, i64, i64 }, ptr %t146 + %t148 = getelementptr inbounds %S.gen.Val, ptr %a118, i32 0, i32 1 + %t149 = load %S.ast.Type, ptr %t148 + %t150 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t145, { ptr, i64, i64 } %t147, %S.ast.Type %t149) + %t151 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t150, 0 + %t152 = getelementptr inbounds %S.gen.Val, ptr %a118, i32 0, i32 1 + %t153 = load %S.ast.Type, ptr %t152 + store %S.ast.Type %t153, ptr %a154 + call void @finch.copy.S_ast_Type(ptr %a155, ptr %a154) + %t156 = load %S.ast.Type, ptr %a155 + %t157 = insertvalue %S.gen.Val %t151, %S.ast.Type %t156, 1 + %t158 = insertvalue %S.gen.Val %t157, i1 true, 2 + store %S.gen.Val %t158, ptr %a118 + br label %endif7656 +endif7656: + %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 + %t160 = load ptr, ptr %a1 + %t161 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 + %t162 = load i64, ptr %a63 + %t163 = load { ptr, i64, i64 }, ptr %t161 + %t164 = extractvalue { ptr, i64, i64 } %t163, 1 + %t165 = icmp uge i64 %t162, %t164 + br i1 %t165, label %range7657, label %inrange7658 +range7657: + call void @finch_panic_index(ptr @.str.5080, i64 4541, i64 %t162, i64 %t164) unreachable -inrange7325: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds %S.ast.Type, ptr %t163, i64 %t159 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t157, %S.ast.Type %t165) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4826, i64 1, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a167 - %t171 = getelementptr inbounds %S.gen.Val, ptr %a115, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t170, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load i64, ptr %t156 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %a42, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %a42 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } %t176, ptr %t180 - store i64 %t178, ptr %t156 - br label %for.step7297 -for.step7297: - %t181 = load i64, ptr %a60 - %t182 = add i64 %t181, 1 - store i64 %t182, ptr %a60 - br label %for.cond7295 -for.end7298: - %t183 = load ptr, ptr %a1 - %t184 = load %S.gen.FnSig, ptr %a21 - %t185 = load %S.ast.Node, ptr %a3 - %t186 = load { ptr, i64, i64 }, ptr %a42 - %t187 = load { ptr, i64, i64 }, ptr %a5 - %t188 = call %S.gen.Val @finch.gen.emitCall(ptr %t183, %S.gen.FnSig %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186, { ptr, i64, i64 } %t187) - ret %S.gen.Val %t188 +inrange7658: + %t166 = extractvalue { ptr, i64, i64 } %t163, 0 + %t167 = getelementptr inbounds %S.ast.Type, ptr %t166, i64 %t162 + %t168 = load %S.ast.Type, ptr %t167 + %t169 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t160, %S.ast.Type %t168) + store { ptr, i64, i64 } %t169, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.5081, i64 1, i64 0 }, ptr %a172 + call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) + %t173 = load { ptr, i64, i64 }, ptr %a170 + %t174 = getelementptr inbounds %S.gen.Val, ptr %a118, i32 0, i32 0 + %t175 = load { ptr, i64, i64 }, ptr %t174 + store { ptr, i64, i64 } %t173, ptr %a177 + store { ptr, i64, i64 } %t175, ptr %a178 + call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) + %t179 = load { ptr, i64, i64 }, ptr %a176 + %t180 = load i64, ptr %t159 + %t181 = add i64 %t180, 1 + call void @finch_arr_reserve(ptr %a45, i64 %t181, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t182 = load ptr, ptr %a45 + %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t180 + store { ptr, i64, i64 } %t179, ptr %t183 + store i64 %t181, ptr %t159 + br label %for.step7630 +for.step7630: + %t184 = load i64, ptr %a63 + %t185 = add i64 %t184, 1 + store i64 %t185, ptr %a63 + br label %for.cond7628 +for.end7631: + %t186 = load ptr, ptr %a1 + %t187 = load %S.gen.FnSig, ptr %a21 + %t188 = load %S.ast.Node, ptr %a3 + %t189 = load { ptr, i64, i64 }, ptr %a45 + %t190 = load { ptr, i64, i64 }, ptr %a5 + %t191 = call %S.gen.Val @finch.gen.emitCall(ptr %t186, %S.gen.FnSig %t187, %S.ast.Node %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) + ret %S.gen.Val %t191 } define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { @@ -64837,18 +69153,18 @@ entry: store { ptr, i64, i64 } %p4, ptr %a5 %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 %t7 = load i1, ptr %t6 - br label %logic.from7326 -logic.from7326: - br i1 %t7, label %logic.rhs7327, label %logic.end7328 -logic.rhs7327: + br label %logic.from7659 +logic.from7659: + br i1 %t7, label %logic.rhs7660, label %logic.end7661 +logic.rhs7660: %t8 = load ptr, ptr %a1 %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic7329, label %ok7330 -panic7329: - call void @finch_panic(ptr @.str.4827, i64 4398, ptr @.str.4828) + br i1 %t9, label %panic7662, label %ok7663 +panic7662: + call void @finch_panic(ptr @.str.5082, i64 4548, ptr @.str.5083) unreachable -ok7330: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 37 +ok7663: + %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 39 %t11 = load { ptr, i64, i64 }, ptr %t10 %t12 = load %S.ast.Node, ptr %a3 %t13 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t12) @@ -64856,22 +69172,22 @@ ok7330: store { ptr, i64, i64 } %t13, ptr %a15 %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) %t17 = icmp eq i32 %t16, 0 - br label %logic.rend7331 -logic.rend7331: - br label %logic.end7328 -logic.end7328: - %t18 = phi i1 [ false, %logic.from7326 ], [ %t17, %logic.rend7331 ] - br i1 %t18, label %then7332, label %endif7334 -then7332: + br label %logic.rend7664 +logic.rend7664: + br label %logic.end7661 +logic.end7661: + %t18 = phi i1 [ false, %logic.from7659 ], [ %t17, %logic.rend7664 ] + br i1 %t18, label %then7665, label %endif7667 +then7665: %t19 = load ptr, ptr %a1 %t20 = load %S.ast.Node, ptr %a3 %t21 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4829, i64 1, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.5084, i64 1, i64 0 }, ptr %a23 store { ptr, i64, i64 } %t21, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4830, i64 39, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.5085, i64 39, i64 0 }, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 %t30 = load { ptr, i64, i64 }, ptr %a5 @@ -64880,7 +69196,7 @@ then7332: call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4831, i64 19, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.5086, i64 19, i64 0 }, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 %t39 = load { ptr, i64, i64 }, ptr %a5 @@ -64889,7 +69205,7 @@ then7332: call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) %t43 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.4832, i64 27, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.5087, i64 27, i64 0 }, ptr %a46 call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) %t47 = load { ptr, i64, i64 }, ptr %a44 %t48 = load { ptr, i64, i64 }, ptr %a5 @@ -64898,21 +69214,21 @@ then7332: call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) %t52 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t52, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.4833, i64 5, i64 0 }, ptr %a55 + store { ptr, i64, i64 } { ptr @.str.5088, i64 5, i64 0 }, ptr %a55 call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) %t56 = load { ptr, i64, i64 }, ptr %a53 call void @finch.gen.fail(ptr %t19, %S.ast.Node %t20, { ptr, i64, i64 } %t56) - br label %endif7334 -endif7334: + br label %endif7667 +endif7667: %t57 = load ptr, ptr %a1 %t58 = load %S.gen.FnSig, ptr %a2 %t59 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t57, %S.gen.FnSig %t58) - store { ptr, i64, i64 } { ptr @.str.4834, i64 5, i64 0 }, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.5089, i64 5, i64 0 }, ptr %a61 store { ptr, i64, i64 } %t59, ptr %a62 call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) %t63 = load { ptr, i64, i64 }, ptr %a60 store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4835, i64 1, i64 0 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.5090, i64 1, i64 0 }, ptr %a66 call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) %t67 = load { ptr, i64, i64 }, ptr %a64 %t68 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 @@ -64922,11 +69238,11 @@ endif7334: call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.5091, i64 1, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4837, i64 2, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.5092, i64 2, i64 0 }, ptr %a79 call void @finch_str_join(ptr %a80, ptr %a4, ptr %a79) %t81 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t77, ptr %a83 @@ -64934,14 +69250,14 @@ endif7334: call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.4838, i64 1, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.5093, i64 1, i64 0 }, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a90 %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 %t92 = load i1, ptr %t91 - br i1 %t92, label %then7335, label %endif7337 -then7335: + br i1 %t92, label %then7668, label %endif7670 +then7668: %t93 = load ptr, ptr %a1 %t94 = load { ptr, i64, i64 }, ptr %a90 %t95 = call { ptr, i64, i64 } @finch.gen.op(ptr %t93, { ptr, i64, i64 } %t94) @@ -64950,12 +69266,12 @@ then7335: %t98 = load ptr, ptr %a1 %t99 = load %S.gen.FnSig, ptr %a2 %t100 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t98, %S.gen.FnSig %t99) - store { ptr, i64, i64 } { ptr @.str.4839, i64 13, i64 0 }, ptr %a102 + store { ptr, i64, i64 } { ptr @.str.5094, i64 13, i64 0 }, ptr %a102 store { ptr, i64, i64 } %t100, ptr %a103 call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) %t104 = load { ptr, i64, i64 }, ptr %a101 store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4840, i64 1, i64 0 }, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.5095, i64 1, i64 0 }, ptr %a107 call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) %t108 = load { ptr, i64, i64 }, ptr %a105 %t109 = load { ptr, i64, i64 }, ptr %a96 @@ -64964,41 +69280,41 @@ then7335: call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) %t113 = load { ptr, i64, i64 }, ptr %a110 store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4841, i64 3, i64 0 }, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.5096, i64 3, i64 0 }, ptr %a116 call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) %t117 = load { ptr, i64, i64 }, ptr %a114 %t118 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t117) store { ptr, i64, i64 } %t118, ptr %a119 %t120 = load ptr, ptr %a1 %t121 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4842, i64 7, i64 0 }, ptr %a123 + store { ptr, i64, i64 } { ptr @.str.5097, i64 7, i64 0 }, ptr %a123 store { ptr, i64, i64 } %t121, ptr %a124 call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) %t125 = load { ptr, i64, i64 }, ptr %a122 store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4843, i64 6, i64 0 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.5098, i64 6, i64 0 }, ptr %a128 call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) %t129 = load { ptr, i64, i64 }, ptr %a126 %t130 = call { ptr, i64, i64 } @finch.gen.op(ptr %t120, { ptr, i64, i64 } %t129) %t131 = load ptr, ptr %a1 %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic7338, label %ok7339 -panic7338: - call void @finch_panic(ptr @.str.4844, i64 4405, ptr @.str.4845) + br i1 %t132, label %panic7671, label %ok7672 +panic7671: + call void @finch_panic(ptr @.str.5099, i64 4555, ptr @.str.5100) unreachable -ok7339: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 38 +ok7672: + %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 40 store { ptr, i64, i64 } %t130, ptr %t133 %t134 = load ptr, ptr %a1 %t135 = load ptr, ptr %a1 %t136 = load %S.gen.FnSig, ptr %a2 %t137 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t135, %S.gen.FnSig %t136) - store { ptr, i64, i64 } { ptr @.str.4846, i64 13, i64 0 }, ptr %a139 + store { ptr, i64, i64 } { ptr @.str.5101, i64 13, i64 0 }, ptr %a139 store { ptr, i64, i64 } %t137, ptr %a140 call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) %t141 = load { ptr, i64, i64 }, ptr %a138 store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.4847, i64 1, i64 0 }, ptr %a144 + store { ptr, i64, i64 } { ptr @.str.5102, i64 1, i64 0 }, ptr %a144 call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) %t145 = load { ptr, i64, i64 }, ptr %a142 %t146 = load { ptr, i64, i64 }, ptr %a96 @@ -65007,28 +69323,28 @@ ok7339: call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) %t150 = load { ptr, i64, i64 }, ptr %a147 store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.4848, i64 3, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.5103, i64 3, i64 0 }, ptr %a153 call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) %t154 = load { ptr, i64, i64 }, ptr %a151 %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t154) %t156 = load ptr, ptr %a1 %t157 = icmp eq ptr %t156, null - br i1 %t157, label %panic7340, label %ok7341 -panic7340: - call void @finch_panic(ptr @.str.4849, i64 4406, ptr @.str.4850) + br i1 %t157, label %panic7673, label %ok7674 +panic7673: + call void @finch_panic(ptr @.str.5104, i64 4556, ptr @.str.5105) unreachable -ok7341: - %t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 39 +ok7674: + %t158 = getelementptr inbounds %S.gen.Gen, ptr %t156, i32 0, i32 41 store { ptr, i64, i64 } %t155, ptr %t158 %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t160 = getelementptr inbounds %S.ast.Type, ptr %t159, i32 0, i32 0 %t161 = load { ptr, i64, i64 }, ptr %t160 store { ptr, i64, i64 } %t161, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4851, i64 4, i64 0 }, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.5106, i64 4, i64 0 }, ptr %a163 %t164 = call i32 @finch_str_eq(ptr %a162, ptr %a163) %t165 = icmp ne i32 %t164, 0 - br i1 %t165, label %then7342, label %endif7344 -then7342: + br i1 %t165, label %then7675, label %endif7677 +then7675: %t166 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t167 = load %S.ast.Type, ptr %t166 store %S.ast.Type %t167, ptr %a168 @@ -65036,17 +69352,17 @@ then7342: %t170 = load %S.ast.Type, ptr %a169 %t171 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t170, 1 ret %S.gen.Val %t171 -endif7344: +endif7677: %t172 = load ptr, ptr %a1 %t173 = load ptr, ptr %a1 %t174 = load %S.gen.FnSig, ptr %a2 %t175 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t173, %S.gen.FnSig %t174) - store { ptr, i64, i64 } { ptr @.str.4852, i64 13, i64 0 }, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.5107, i64 13, i64 0 }, ptr %a177 store { ptr, i64, i64 } %t175, ptr %a178 call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) %t179 = load { ptr, i64, i64 }, ptr %a176 store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.4853, i64 1, i64 0 }, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.5108, i64 1, i64 0 }, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 %t184 = load { ptr, i64, i64 }, ptr %a96 @@ -65055,7 +69371,7 @@ endif7344: call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187) %t188 = load { ptr, i64, i64 }, ptr %a185 store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4854, i64 3, i64 0 }, ptr %a191 + store { ptr, i64, i64 } { ptr @.str.5109, i64 3, i64 0 }, ptr %a191 call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) %t192 = load { ptr, i64, i64 }, ptr %a189 %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t172, { ptr, i64, i64 } %t192) @@ -65072,16 +69388,16 @@ endif7344: %t204 = call i1 @finch.gen.owning(ptr %t201, %S.ast.Type %t203) %t205 = insertvalue %S.gen.Val %t200, i1 %t204, 2 ret %S.gen.Val %t205 -endif7337: +endif7670: %t206 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 %t208 = load { ptr, i64, i64 }, ptr %t207 store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.4855, i64 4, i64 0 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.5110, i64 4, i64 0 }, ptr %a210 %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then7345, label %endif7347 -then7345: + br i1 %t212, label %then7678, label %endif7680 +then7678: %t213 = load ptr, ptr %a1 %t214 = load { ptr, i64, i64 }, ptr %a90 call void @finch.gen.emit(ptr %t213, { ptr, i64, i64 } %t214) @@ -65092,7 +69408,7 @@ then7345: %t219 = load %S.ast.Type, ptr %a218 %t220 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t219, 1 ret %S.gen.Val %t220 -endif7347: +endif7680: %t221 = load ptr, ptr %a1 %t222 = load { ptr, i64, i64 }, ptr %a90 %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t221, { ptr, i64, i64 } %t222) @@ -65263,21 +69579,21 @@ entry: store %S.ast.Node %p4, ptr %a5 %t6 = load ptr, ptr %a1 %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic7348, label %ok7349 -panic7348: - call void @finch_panic(ptr @.str.4856, i64 4420, ptr @.str.4857) + br i1 %t7, label %panic7681, label %ok7682 +panic7681: + call void @finch_panic(ptr @.str.5111, i64 4570, ptr @.str.5112) unreachable -ok7349: +ok7682: %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 15 %t9 = load i64, ptr %a2 %t10 = load { ptr, i64, i64 }, ptr %t8 %t11 = extractvalue { ptr, i64, i64 } %t10, 1 %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range7350, label %inrange7351 -range7350: - call void @finch_panic_index(ptr @.str.4858, i64 4420, i64 %t9, i64 %t11) + br i1 %t12, label %range7683, label %inrange7684 +range7683: + call void @finch_panic_index(ptr @.str.5113, i64 4570, i64 %t9, i64 %t11) unreachable -inrange7351: +inrange7684: %t13 = extractvalue { ptr, i64, i64 } %t10, 0 %t14 = getelementptr inbounds %S.gen.StructDef, ptr %t13, i64 %t9 %t15 = load %S.gen.StructDef, ptr %t14 @@ -65289,26 +69605,26 @@ inrange7351: %t21 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 %t22 = load i1, ptr %t21 %t23 = xor i1 %t22, true - br i1 %t23, label %then7352, label %endif7354 -then7352: + br i1 %t23, label %then7685, label %endif7687 +then7685: %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic7355, label %ok7356 -panic7355: - call void @finch_panic(ptr @.str.4859, i64 4423, ptr @.str.4860) + br i1 %t25, label %panic7688, label %ok7689 +panic7688: + call void @finch_panic(ptr @.str.5114, i64 4573, ptr @.str.5115) unreachable -ok7356: +ok7689: %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 0 %t27 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 13 %t28 = load i64, ptr %t27 %t29 = load { ptr, i64, i64 }, ptr %t26 %t30 = extractvalue { ptr, i64, i64 } %t29, 1 %t31 = icmp uge i64 %t28, %t30 - br i1 %t31, label %range7357, label %inrange7358 -range7357: - call void @finch_panic_index(ptr @.str.4861, i64 4423, i64 %t28, i64 %t30) + br i1 %t31, label %range7690, label %inrange7691 +range7690: + call void @finch_panic_index(ptr @.str.5116, i64 4573, i64 %t28, i64 %t30) unreachable -inrange7358: +inrange7691: %t32 = extractvalue { ptr, i64, i64 } %t29, 0 %t33 = getelementptr inbounds %S.ast.Program, ptr %t32, i64 %t28 %t34 = getelementptr inbounds %S.ast.Program, ptr %t33, i32 0, i32 6 @@ -65317,11 +69633,11 @@ inrange7358: %t37 = load { ptr, i64, i64 }, ptr %t34 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range7359, label %inrange7360 -range7359: - call void @finch_panic_index(ptr @.str.4862, i64 4423, i64 %t36, i64 %t38) + br i1 %t39, label %range7692, label %inrange7693 +range7692: + call void @finch_panic_index(ptr @.str.5117, i64 4573, i64 %t36, i64 %t38) unreachable -inrange7360: +inrange7693: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 %t42 = load %S.ast.Node, ptr %t41 @@ -65329,9 +69645,9 @@ inrange7360: call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) %t45 = load %S.ast.Node, ptr %a44 store %S.ast.Node %t45, ptr %a20 - br label %endif7354 -endif7354: - %t46 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4863, i64 6, i64 0 }, 0 + br label %endif7687 +endif7687: + %t46 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5118, i64 6, i64 0 }, 0 %t47 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 %t48 = load { ptr, i64, i64 }, ptr %t47 store { ptr, i64, i64 } %t48, ptr %a49 @@ -65352,40 +69668,40 @@ endif7354: %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 %t65 = load i64, ptr %t64 %t66 = icmp sgt i64 %t65, 0 - br label %logic.from7361 -logic.from7361: - br i1 %t66, label %logic.rhs7362, label %logic.end7363 -logic.rhs7362: + br label %logic.from7694 +logic.from7694: + br i1 %t66, label %logic.rhs7695, label %logic.end7696 +logic.rhs7695: %t67 = load { ptr, i64, i64 }, ptr %a4 %t68 = extractvalue { ptr, i64, i64 } %t67, 1 %t69 = icmp uge i64 0, %t68 - br i1 %t69, label %range7364, label %inrange7365 -range7364: - call void @finch_panic_index(ptr @.str.4864, i64 4427, i64 0, i64 %t68) + br i1 %t69, label %range7697, label %inrange7698 +range7697: + call void @finch_panic_index(ptr @.str.5119, i64 4577, i64 0, i64 %t68) unreachable -inrange7365: +inrange7698: %t70 = extractvalue { ptr, i64, i64 } %t67, 0 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 0 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 %t73 = load i64, ptr %t72 %t74 = icmp sgt i64 %t73, 0 - br label %logic.rend7366 -logic.rend7366: - br label %logic.end7363 -logic.end7363: - %t75 = phi i1 [ false, %logic.from7361 ], [ %t74, %logic.rend7366 ] + br label %logic.rend7699 +logic.rend7699: + br label %logic.end7696 +logic.end7696: + %t75 = phi i1 [ false, %logic.from7694 ], [ %t74, %logic.rend7699 ] store i1 %t75, ptr %a76 store { ptr, i64, i64 } zeroinitializer, ptr %a77 %t78 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 %t80 = load i64, ptr %t79 store i64 0, ptr %a81 - br label %for.cond7367 -for.cond7367: + br label %for.cond7700 +for.cond7700: %t82 = load i64, ptr %a81 %t83 = icmp slt i64 %t82, %t80 - br i1 %t83, label %for.body7368, label %for.end7370 -for.body7368: + br i1 %t83, label %for.body7701, label %for.end7703 +for.body7701: %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a77, i32 0, i32 1 %t85 = load i64, ptr %t84 %t86 = add i64 %t85, 1 @@ -65394,31 +69710,31 @@ for.body7368: %t88 = getelementptr inbounds i64, ptr %t87, i64 %t85 store i64 -1, ptr %t88 store i64 %t86, ptr %t84 - br label %for.step7369 -for.step7369: + br label %for.step7702 +for.step7702: %t89 = load i64, ptr %a81 %t90 = add i64 %t89, 1 store i64 %t90, ptr %a81 - br label %for.cond7367 -for.end7370: + br label %for.cond7700 +for.end7703: %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t92 = load i64, ptr %t91 store i64 0, ptr %a93 - br label %for.cond7371 -for.cond7371: + br label %for.cond7704 +for.cond7704: %t94 = load i64, ptr %a93 %t95 = icmp slt i64 %t94, %t92 - br i1 %t95, label %for.body7372, label %for.end7374 -for.body7372: + br i1 %t95, label %for.body7705, label %for.end7707 +for.body7705: %t96 = load i64, ptr %a93 %t97 = load { ptr, i64, i64 }, ptr %a4 %t98 = extractvalue { ptr, i64, i64 } %t97, 1 %t99 = icmp uge i64 %t96, %t98 - br i1 %t99, label %range7375, label %inrange7376 -range7375: - call void @finch_panic_index(ptr @.str.4865, i64 4433, i64 %t96, i64 %t98) + br i1 %t99, label %range7708, label %inrange7709 +range7708: + call void @finch_panic_index(ptr @.str.5120, i64 4583, i64 %t96, i64 %t98) unreachable -inrange7376: +inrange7709: %t100 = extractvalue { ptr, i64, i64 } %t97, 0 %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t96 %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t101, i32 0, i32 1 @@ -65426,42 +69742,42 @@ inrange7376: %t104 = icmp sgt i64 %t103, 0 %t105 = load i1, ptr %a76 %t106 = icmp ne i1 %t104, %t105 - br i1 %t106, label %then7377, label %endif7379 -then7377: + br i1 %t106, label %then7710, label %endif7712 +then7710: %t107 = load ptr, ptr %a1 %t108 = load i64, ptr %a93 %t109 = load { ptr, i64, i64 }, ptr %a3 %t110 = extractvalue { ptr, i64, i64 } %t109, 1 %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range7380, label %inrange7381 -range7380: - call void @finch_panic_index(ptr @.str.4866, i64 4434, i64 %t108, i64 %t110) + br i1 %t111, label %range7713, label %inrange7714 +range7713: + call void @finch_panic_index(ptr @.str.5121, i64 4584, i64 %t108, i64 %t110) unreachable -inrange7381: +inrange7714: %t112 = extractvalue { ptr, i64, i64 } %t109, 0 %t113 = getelementptr inbounds %S.ast.Node, ptr %t112, i64 %t108 %t114 = load %S.ast.Node, ptr %t113 - call void @finch.gen.fail(ptr %t107, %S.ast.Node %t114, { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }) - br label %endif7379 -endif7379: + call void @finch.gen.fail(ptr %t107, %S.ast.Node %t114, { ptr, i64, i64 } { ptr @.str.5122, i64 69, i64 0 }) + br label %endif7712 +endif7712: %t115 = load i1, ptr %a76 %t116 = xor i1 %t115, true - br i1 %t116, label %then7382, label %endif7384 -then7382: + br i1 %t116, label %then7715, label %endif7717 +then7715: %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t118 = load i64, ptr %t117 %t119 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 %t121 = load i64, ptr %t120 %t122 = icmp ne i64 %t118, %t121 - br i1 %t122, label %then7385, label %endif7387 -then7385: + br i1 %t122, label %then7718, label %endif7720 +then7718: %t123 = load ptr, ptr %a1 %t124 = load %S.ast.Node, ptr %a5 %t125 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 %t126 = load { ptr, i64, i64 }, ptr %t125 store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.4868, i64 5, i64 0 }, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.5123, i64 5, i64 0 }, ptr %a129 call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 %t131 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 @@ -65474,7 +69790,7 @@ then7385: call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4869, i64 17, i64 0 }, ptr %a142 + store { ptr, i64, i64 } { ptr @.str.5124, i64 17, i64 0 }, ptr %a142 call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) %t143 = load { ptr, i64, i64 }, ptr %a140 %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 @@ -65486,7 +69802,7 @@ then7385: call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) %t151 = load { ptr, i64, i64 }, ptr %a148 store { ptr, i64, i64 } %t151, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4870, i64 23, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.5125, i64 23, i64 0 }, ptr %a154 call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) %t155 = load { ptr, i64, i64 }, ptr %a152 %t156 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 @@ -65496,38 +69812,38 @@ then7385: call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) %t161 = load { ptr, i64, i64 }, ptr %a158 store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4871, i64 15, i64 0 }, ptr %a164 + store { ptr, i64, i64 } { ptr @.str.5126, i64 15, i64 0 }, ptr %a164 call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) %t165 = load { ptr, i64, i64 }, ptr %a162 call void @finch.gen.fail(ptr %t123, %S.ast.Node %t124, { ptr, i64, i64 } %t165) - br label %endif7387 -endif7387: + br label %endif7720 +endif7720: %t166 = load i64, ptr %a93 %t167 = load i64, ptr %a93 %t168 = load { ptr, i64, i64 }, ptr %a77 %t169 = extractvalue { ptr, i64, i64 } %t168, 1 %t170 = icmp uge i64 %t167, %t169 - br i1 %t170, label %range7388, label %inrange7389 -range7388: - call void @finch_panic_index(ptr @.str.4872, i64 4440, i64 %t167, i64 %t169) + br i1 %t170, label %range7721, label %inrange7722 +range7721: + call void @finch_panic_index(ptr @.str.5127, i64 4590, i64 %t167, i64 %t169) unreachable -inrange7389: +inrange7722: %t171 = extractvalue { ptr, i64, i64 } %t168, 0 %t172 = getelementptr inbounds i64, ptr %t171, i64 %t167 store i64 %t166, ptr %t172 - br label %for.step7373 -endif7384: + br label %for.step7706 +endif7717: %t173 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 %t175 = load i64, ptr %a93 %t176 = load { ptr, i64, i64 }, ptr %a4 %t177 = extractvalue { ptr, i64, i64 } %t176, 1 %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range7390, label %inrange7391 -range7390: - call void @finch_panic_index(ptr @.str.4873, i64 4443, i64 %t175, i64 %t177) + br i1 %t178, label %range7723, label %inrange7724 +range7723: + call void @finch_panic_index(ptr @.str.5128, i64 4593, i64 %t175, i64 %t177) unreachable -inrange7391: +inrange7724: %t179 = extractvalue { ptr, i64, i64 } %t176, 0 %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t175 %t181 = load { ptr, i64, i64 }, ptr %t180 @@ -65535,61 +69851,61 @@ inrange7391: %t183 = load i64, ptr %t174 %t184 = load ptr, ptr %t173 store i64 0, ptr %a185 - br label %find.cond7392 -find.cond7392: + br label %find.cond7725 +find.cond7725: %t186 = load i64, ptr %a185 %t187 = icmp slt i64 %t186, %t183 - br i1 %t187, label %find.body7393, label %find.end7396 -find.body7393: + br i1 %t187, label %find.body7726, label %find.end7729 +find.body7726: %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t186 %t189 = load { ptr, i64, i64 }, ptr %t188 store { ptr, i64, i64 } %t189, ptr %a190 store { ptr, i64, i64 } %t181, ptr %a191 %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %find.hit7394, label %find.next7395 -find.hit7394: + br i1 %t193, label %find.hit7727, label %find.next7728 +find.hit7727: store i64 %t186, ptr %a182 - br label %find.end7396 -find.next7395: + br label %find.end7729 +find.next7728: %t194 = add i64 %t186, 1 store i64 %t194, ptr %a185 - br label %find.cond7392 -find.end7396: + br label %find.cond7725 +find.end7729: %t195 = load i64, ptr %a182 store i64 %t195, ptr %a196 %t197 = load i64, ptr %a196 %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then7397, label %endif7399 -then7397: + br i1 %t198, label %then7730, label %endif7732 +then7730: %t199 = load ptr, ptr %a1 %t200 = load i64, ptr %a93 %t201 = load { ptr, i64, i64 }, ptr %a3 %t202 = extractvalue { ptr, i64, i64 } %t201, 1 %t203 = icmp uge i64 %t200, %t202 - br i1 %t203, label %range7400, label %inrange7401 -range7400: - call void @finch_panic_index(ptr @.str.4874, i64 4445, i64 %t200, i64 %t202) + br i1 %t203, label %range7733, label %inrange7734 +range7733: + call void @finch_panic_index(ptr @.str.5129, i64 4595, i64 %t200, i64 %t202) unreachable -inrange7401: +inrange7734: %t204 = extractvalue { ptr, i64, i64 } %t201, 0 %t205 = getelementptr inbounds %S.ast.Node, ptr %t204, i64 %t200 %t206 = load %S.ast.Node, ptr %t205 %t207 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 %t208 = load { ptr, i64, i64 }, ptr %t207 store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.4875, i64 15, i64 0 }, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.5130, i64 15, i64 0 }, ptr %a211 call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) %t212 = load { ptr, i64, i64 }, ptr %a209 %t213 = load i64, ptr %a93 %t214 = load { ptr, i64, i64 }, ptr %a4 %t215 = extractvalue { ptr, i64, i64 } %t214, 1 %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7402, label %inrange7403 -range7402: - call void @finch_panic_index(ptr @.str.4876, i64 4445, i64 %t213, i64 %t215) + br i1 %t216, label %range7735, label %inrange7736 +range7735: + call void @finch_panic_index(ptr @.str.5131, i64 4595, i64 %t213, i64 %t215) unreachable -inrange7403: +inrange7736: %t217 = extractvalue { ptr, i64, i64 } %t214, 0 %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i64 %t213 %t219 = load { ptr, i64, i64 }, ptr %t218 @@ -65598,37 +69914,37 @@ inrange7403: call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) %t223 = load { ptr, i64, i64 }, ptr %a220 store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.4877, i64 1, i64 0 }, ptr %a226 + store { ptr, i64, i64 } { ptr @.str.5132, i64 1, i64 0 }, ptr %a226 call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) %t227 = load { ptr, i64, i64 }, ptr %a224 call void @finch.gen.fail(ptr %t199, %S.ast.Node %t206, { ptr, i64, i64 } %t227) - br label %endif7399 -endif7399: + br label %endif7732 +endif7732: %t228 = load i64, ptr %a196 %t229 = load { ptr, i64, i64 }, ptr %a77 %t230 = extractvalue { ptr, i64, i64 } %t229, 1 %t231 = icmp uge i64 %t228, %t230 - br i1 %t231, label %range7404, label %inrange7405 -range7404: - call void @finch_panic_index(ptr @.str.4878, i64 4447, i64 %t228, i64 %t230) + br i1 %t231, label %range7737, label %inrange7738 +range7737: + call void @finch_panic_index(ptr @.str.5133, i64 4597, i64 %t228, i64 %t230) unreachable -inrange7405: +inrange7738: %t232 = extractvalue { ptr, i64, i64 } %t229, 0 %t233 = getelementptr inbounds i64, ptr %t232, i64 %t228 %t234 = load i64, ptr %t233 %t235 = icmp sge i64 %t234, 0 - br i1 %t235, label %then7406, label %endif7408 -then7406: + br i1 %t235, label %then7739, label %endif7741 +then7739: %t236 = load ptr, ptr %a1 %t237 = load i64, ptr %a93 %t238 = load { ptr, i64, i64 }, ptr %a3 %t239 = extractvalue { ptr, i64, i64 } %t238, 1 %t240 = icmp uge i64 %t237, %t239 - br i1 %t240, label %range7409, label %inrange7410 -range7409: - call void @finch_panic_index(ptr @.str.4879, i64 4448, i64 %t237, i64 %t239) + br i1 %t240, label %range7742, label %inrange7743 +range7742: + call void @finch_panic_index(ptr @.str.5134, i64 4598, i64 %t237, i64 %t239) unreachable -inrange7410: +inrange7743: %t241 = extractvalue { ptr, i64, i64 } %t238, 0 %t242 = getelementptr inbounds %S.ast.Node, ptr %t241, i64 %t237 %t243 = load %S.ast.Node, ptr %t242 @@ -65636,66 +69952,66 @@ inrange7410: %t245 = load { ptr, i64, i64 }, ptr %a4 %t246 = extractvalue { ptr, i64, i64 } %t245, 1 %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7411, label %inrange7412 -range7411: - call void @finch_panic_index(ptr @.str.4881, i64 4448, i64 %t244, i64 %t246) + br i1 %t247, label %range7744, label %inrange7745 +range7744: + call void @finch_panic_index(ptr @.str.5136, i64 4598, i64 %t244, i64 %t246) unreachable -inrange7412: +inrange7745: %t248 = extractvalue { ptr, i64, i64 } %t245, 0 %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } { ptr @.str.4880, i64 11, i64 0 }, ptr %a252 + store { ptr, i64, i64 } { ptr @.str.5135, i64 11, i64 0 }, ptr %a252 store { ptr, i64, i64 } %t250, ptr %a253 call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) %t254 = load { ptr, i64, i64 }, ptr %a251 store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.4882, i64 16, i64 0 }, ptr %a257 + store { ptr, i64, i64 } { ptr @.str.5137, i64 16, i64 0 }, ptr %a257 call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) %t258 = load { ptr, i64, i64 }, ptr %a255 call void @finch.gen.fail(ptr %t236, %S.ast.Node %t243, { ptr, i64, i64 } %t258) - br label %endif7408 -endif7408: + br label %endif7741 +endif7741: %t259 = load i64, ptr %a93 %t260 = load i64, ptr %a196 %t261 = load { ptr, i64, i64 }, ptr %a77 %t262 = extractvalue { ptr, i64, i64 } %t261, 1 %t263 = icmp uge i64 %t260, %t262 - br i1 %t263, label %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4883, i64 4450, i64 %t260, i64 %t262) + br i1 %t263, label %range7746, label %inrange7747 +range7746: + call void @finch_panic_index(ptr @.str.5138, i64 4600, i64 %t260, i64 %t262) unreachable -inrange7414: +inrange7747: %t264 = extractvalue { ptr, i64, i64 } %t261, 0 %t265 = getelementptr inbounds i64, ptr %t264, i64 %t260 store i64 %t259, ptr %t265 - br label %for.step7373 -for.step7373: + br label %for.step7706 +for.step7706: %t266 = load i64, ptr %a93 %t267 = add i64 %t266, 1 store i64 %t267, ptr %a93 - br label %for.cond7371 -for.end7374: - store { ptr, i64, i64 } { ptr @.str.4884, i64 15, i64 0 }, ptr %a268 + br label %for.cond7704 +for.end7707: + store { ptr, i64, i64 } { ptr @.str.5139, i64 15, i64 0 }, ptr %a268 %t269 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 %t270 = getelementptr inbounds { ptr, i64, i64 }, ptr %t269, i32 0, i32 1 %t271 = load i64, ptr %t270 store i64 0, ptr %a272 - br label %for.cond7415 -for.cond7415: + br label %for.cond7748 +for.cond7748: %t273 = load i64, ptr %a272 %t274 = icmp slt i64 %t273, %t271 - br i1 %t274, label %for.body7416, label %for.end7418 -for.body7416: + br i1 %t274, label %for.body7749, label %for.end7751 +for.body7749: %t275 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 %t276 = load i64, ptr %a272 %t277 = load { ptr, i64, i64 }, ptr %t275 %t278 = extractvalue { ptr, i64, i64 } %t277, 1 %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range7419, label %inrange7420 -range7419: - call void @finch_panic_index(ptr @.str.4885, i64 4454, i64 %t276, i64 %t278) + br i1 %t279, label %range7752, label %inrange7753 +range7752: + call void @finch_panic_index(ptr @.str.5140, i64 4604, i64 %t276, i64 %t278) unreachable -inrange7420: +inrange7753: %t280 = extractvalue { ptr, i64, i64 } %t277, 0 %t281 = getelementptr inbounds %S.ast.Type, ptr %t280, i64 %t276 %t282 = load %S.ast.Type, ptr %t281 @@ -65708,39 +70024,39 @@ inrange7420: %t289 = load { ptr, i64, i64 }, ptr %a77 %t290 = extractvalue { ptr, i64, i64 } %t289, 1 %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range7421, label %inrange7422 -range7421: - call void @finch_panic_index(ptr @.str.4886, i64 4456, i64 %t288, i64 %t290) + br i1 %t291, label %range7754, label %inrange7755 +range7754: + call void @finch_panic_index(ptr @.str.5141, i64 4606, i64 %t288, i64 %t290) unreachable -inrange7422: +inrange7755: %t292 = extractvalue { ptr, i64, i64 } %t289, 0 %t293 = getelementptr inbounds i64, ptr %t292, i64 %t288 %t294 = load i64, ptr %t293 %t295 = icmp sge i64 %t294, 0 - br i1 %t295, label %then7423, label %else7424 -then7423: + br i1 %t295, label %then7756, label %else7757 +then7756: %t296 = load ptr, ptr %a1 %t297 = load ptr, ptr %a1 %t298 = load i64, ptr %a272 %t299 = load { ptr, i64, i64 }, ptr %a77 %t300 = extractvalue { ptr, i64, i64 } %t299, 1 %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range7426, label %inrange7427 -range7426: - call void @finch_panic_index(ptr @.str.4887, i64 4457, i64 %t298, i64 %t300) + br i1 %t301, label %range7759, label %inrange7760 +range7759: + call void @finch_panic_index(ptr @.str.5142, i64 4607, i64 %t298, i64 %t300) unreachable -inrange7427: +inrange7760: %t302 = extractvalue { ptr, i64, i64 } %t299, 0 %t303 = getelementptr inbounds i64, ptr %t302, i64 %t298 %t304 = load i64, ptr %t303 %t305 = load { ptr, i64, i64 }, ptr %a3 %t306 = extractvalue { ptr, i64, i64 } %t305, 1 %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range7428, label %inrange7429 -range7428: - call void @finch_panic_index(ptr @.str.4888, i64 4457, i64 %t304, i64 %t306) + br i1 %t307, label %range7761, label %inrange7762 +range7761: + call void @finch_panic_index(ptr @.str.5143, i64 4607, i64 %t304, i64 %t306) unreachable -inrange7429: +inrange7762: %t308 = extractvalue { ptr, i64, i64 } %t305, 0 %t309 = getelementptr inbounds %S.ast.Node, ptr %t308, i64 %t304 %t310 = load %S.ast.Node, ptr %t309 @@ -65751,22 +70067,22 @@ inrange7429: %t315 = load { ptr, i64, i64 }, ptr %a77 %t316 = extractvalue { ptr, i64, i64 } %t315, 1 %t317 = icmp uge i64 %t314, %t316 - br i1 %t317, label %range7430, label %inrange7431 -range7430: - call void @finch_panic_index(ptr @.str.4889, i64 4457, i64 %t314, i64 %t316) + br i1 %t317, label %range7763, label %inrange7764 +range7763: + call void @finch_panic_index(ptr @.str.5144, i64 4607, i64 %t314, i64 %t316) unreachable -inrange7431: +inrange7764: %t318 = extractvalue { ptr, i64, i64 } %t315, 0 %t319 = getelementptr inbounds i64, ptr %t318, i64 %t314 %t320 = load i64, ptr %t319 %t321 = load { ptr, i64, i64 }, ptr %a3 %t322 = extractvalue { ptr, i64, i64 } %t321, 1 %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range7432, label %inrange7433 -range7432: - call void @finch_panic_index(ptr @.str.4890, i64 4457, i64 %t320, i64 %t322) + br i1 %t323, label %range7765, label %inrange7766 +range7765: + call void @finch_panic_index(ptr @.str.5145, i64 4607, i64 %t320, i64 %t322) unreachable -inrange7433: +inrange7766: %t324 = extractvalue { ptr, i64, i64 } %t321, 0 %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 %t326 = load %S.ast.Node, ptr %t325 @@ -65775,63 +70091,63 @@ inrange7433: %t329 = load { ptr, i64, i64 }, ptr %t327 %t330 = extractvalue { ptr, i64, i64 } %t329, 1 %t331 = icmp uge i64 %t328, %t330 - br i1 %t331, label %range7434, label %inrange7435 -range7434: - call void @finch_panic_index(ptr @.str.4892, i64 4457, i64 %t328, i64 %t330) + br i1 %t331, label %range7767, label %inrange7768 +range7767: + call void @finch_panic_index(ptr @.str.5147, i64 4607, i64 %t328, i64 %t330) unreachable -inrange7435: +inrange7768: %t332 = extractvalue { ptr, i64, i64 } %t329, 0 %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t332, i64 %t328 %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } { ptr @.str.4891, i64 11, i64 0 }, ptr %a336 + store { ptr, i64, i64 } { ptr @.str.5146, i64 11, i64 0 }, ptr %a336 store { ptr, i64, i64 } %t334, ptr %a337 call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) %t338 = load { ptr, i64, i64 }, ptr %a335 store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.4893, i64 1, i64 0 }, ptr %a341 + store { ptr, i64, i64 } { ptr @.str.5148, i64 1, i64 0 }, ptr %a341 call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) %t342 = load { ptr, i64, i64 }, ptr %a339 %t343 = call %S.gen.Val @finch.gen.coerce(ptr %t296, %S.gen.Val %t312, %S.ast.Type %t313, %S.ast.Node %t326, { ptr, i64, i64 } %t342) store %S.gen.Val %t343, ptr %a287 - br label %endif7425 -else7424: + br label %endif7758 +else7757: %t344 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 %t345 = load i1, ptr %t344 %t346 = xor i1 %t345, true - br label %logic.from7436 -logic.from7436: - br i1 %t346, label %logic.rhs7437, label %logic.end7438 -logic.rhs7437: + br label %logic.from7769 +logic.from7769: + br i1 %t346, label %logic.rhs7770, label %logic.end7771 +logic.rhs7770: %t347 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 %t348 = load i64, ptr %a272 %t349 = load { ptr, i64, i64 }, ptr %t347 %t350 = extractvalue { ptr, i64, i64 } %t349, 1 %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range7439, label %inrange7440 -range7439: - call void @finch_panic_index(ptr @.str.4894, i64 4458, i64 %t348, i64 %t350) + br i1 %t351, label %range7772, label %inrange7773 +range7772: + call void @finch_panic_index(ptr @.str.5149, i64 4608, i64 %t348, i64 %t350) unreachable -inrange7440: +inrange7773: %t352 = extractvalue { ptr, i64, i64 } %t349, 0 %t353 = getelementptr inbounds %S.ast.Node, ptr %t352, i64 %t348 %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i32 0, i32 9 %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 %t356 = load i64, ptr %t355 %t357 = icmp sgt i64 %t356, 0 - br label %logic.rend7441 -logic.rend7441: - br label %logic.end7438 -logic.end7438: - %t358 = phi i1 [ false, %logic.from7436 ], [ %t357, %logic.rend7441 ] - br i1 %t358, label %then7442, label %else7443 -then7442: + br label %logic.rend7774 +logic.rend7774: + br label %logic.end7771 +logic.end7771: + %t358 = phi i1 [ false, %logic.from7769 ], [ %t357, %logic.rend7774 ] + br i1 %t358, label %then7775, label %else7776 +then7775: %t359 = load ptr, ptr %a1 %t360 = icmp eq ptr %t359, null - br i1 %t360, label %panic7445, label %ok7446 -panic7445: - call void @finch_panic(ptr @.str.4895, i64 4460, ptr @.str.4896) + br i1 %t360, label %panic7778, label %ok7779 +panic7778: + call void @finch_panic(ptr @.str.5150, i64 4610, ptr @.str.5151) unreachable -ok7446: +ok7779: %t361 = getelementptr inbounds %S.gen.Gen, ptr %t359, i32 0, i32 10 %t362 = load { ptr, i64, i64 }, ptr %t361 store { ptr, i64, i64 } %t362, ptr %a363 @@ -65840,11 +70156,11 @@ ok7446: store { ptr, i64, i64 } %t365, ptr %a366 %t367 = load ptr, ptr %a1 %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic7447, label %ok7448 -panic7447: - call void @finch_panic(ptr @.str.4897, i64 4461, ptr @.str.4898) + br i1 %t368, label %panic7780, label %ok7781 +panic7780: + call void @finch_panic(ptr @.str.5152, i64 4611, ptr @.str.5153) unreachable -ok7448: +ok7781: %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 %t370 = load { ptr, i64, i64 }, ptr %t369 store { ptr, i64, i64 } %t370, ptr %a371 @@ -65853,11 +70169,11 @@ ok7448: store { ptr, i64, i64 } %t373, ptr %a374 %t375 = load ptr, ptr %a1 %t376 = icmp eq ptr %t375, null - br i1 %t376, label %panic7449, label %ok7450 -panic7449: - call void @finch_panic(ptr @.str.4899, i64 4462, ptr @.str.4900) + br i1 %t376, label %panic7782, label %ok7783 +panic7782: + call void @finch_panic(ptr @.str.5154, i64 4612, ptr @.str.5155) unreachable -ok7450: +ok7783: %t377 = getelementptr inbounds %S.gen.Gen, ptr %t375, i32 0, i32 17 %t378 = load { ptr, i64, i64 }, ptr %t377 store { ptr, i64, i64 } %t378, ptr %a379 @@ -65866,11 +70182,11 @@ ok7450: store { ptr, i64, i64 } %t381, ptr %a382 %t383 = load ptr, ptr %a1 %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic7451, label %ok7452 -panic7451: - call void @finch_panic(ptr @.str.4901, i64 4463, ptr @.str.4902) + br i1 %t384, label %panic7784, label %ok7785 +panic7784: + call void @finch_panic(ptr @.str.5156, i64 4613, ptr @.str.5157) unreachable -ok7452: +ok7785: %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 18 %t386 = load { ptr, i64, i64 }, ptr %t385 store { ptr, i64, i64 } %t386, ptr %a387 @@ -65881,11 +70197,11 @@ ok7452: %t392 = load { ptr, i64, i64 }, ptr %t391 %t393 = load ptr, ptr %a1 %t394 = icmp eq ptr %t393, null - br i1 %t394, label %panic7453, label %ok7454 -panic7453: - call void @finch_panic(ptr @.str.4903, i64 4464, ptr @.str.4904) + br i1 %t394, label %panic7786, label %ok7787 +panic7786: + call void @finch_panic(ptr @.str.5158, i64 4614, ptr @.str.5159) unreachable -ok7454: +ok7787: %t395 = getelementptr inbounds %S.gen.Gen, ptr %t393, i32 0, i32 17 store { ptr, i64, i64 } %t392, ptr %a396 call void @finch.copy.arr_str(ptr %a397, ptr %a396) @@ -65895,11 +70211,11 @@ ok7454: %t400 = load { ptr, i64, i64 }, ptr %t399 %t401 = load ptr, ptr %a1 %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic7455, label %ok7456 -panic7455: - call void @finch_panic(ptr @.str.4905, i64 4465, ptr @.str.4906) + br i1 %t402, label %panic7788, label %ok7789 +panic7788: + call void @finch_panic(ptr @.str.5160, i64 4615, ptr @.str.5161) unreachable -ok7456: +ok7789: %t403 = getelementptr inbounds %S.gen.Gen, ptr %t401, i32 0, i32 18 store { ptr, i64, i64 } %t400, ptr %a404 call void @finch.copy.arr_S_ast_Type(ptr %a405, ptr %a404) @@ -65909,11 +70225,11 @@ ok7456: %t408 = load { ptr, i64, i64 }, ptr %a407 %t409 = load ptr, ptr %a1 %t410 = icmp eq ptr %t409, null - br i1 %t410, label %panic7457, label %ok7458 -panic7457: - call void @finch_panic(ptr @.str.4907, i64 4467, ptr @.str.4908) + br i1 %t410, label %panic7790, label %ok7791 +panic7790: + call void @finch_panic(ptr @.str.5162, i64 4617, ptr @.str.5163) unreachable -ok7458: +ok7791: %t411 = getelementptr inbounds %S.gen.Gen, ptr %t409, i32 0, i32 10 store { ptr, i64, i64 } %t408, ptr %a412 call void @finch.copy.arr_S_gen_Scope(ptr %a413, ptr %a412) @@ -65925,11 +70241,11 @@ ok7458: %t417 = load { ptr, i64, i64 }, ptr %t416 %t418 = load ptr, ptr %a1 %t419 = icmp eq ptr %t418, null - br i1 %t419, label %panic7459, label %ok7460 -panic7459: - call void @finch_panic(ptr @.str.4909, i64 4469, ptr @.str.4910) + br i1 %t419, label %panic7792, label %ok7793 +panic7792: + call void @finch_panic(ptr @.str.5164, i64 4619, ptr @.str.5165) unreachable -ok7460: +ok7793: %t420 = getelementptr inbounds %S.gen.Gen, ptr %t418, i32 0, i32 13 store { ptr, i64, i64 } %t417, ptr %a421 call void @finch_str_copy(ptr %a422, ptr %a421) @@ -65942,22 +70258,22 @@ ok7460: %t428 = load { ptr, i64, i64 }, ptr %t426 %t429 = extractvalue { ptr, i64, i64 } %t428, 1 %t430 = icmp uge i64 %t427, %t429 - br i1 %t430, label %range7461, label %inrange7462 -range7461: - call void @finch_panic_index(ptr @.str.4911, i64 4470, i64 %t427, i64 %t429) + br i1 %t430, label %range7794, label %inrange7795 +range7794: + call void @finch_panic_index(ptr @.str.5166, i64 4620, i64 %t427, i64 %t429) unreachable -inrange7462: +inrange7795: %t431 = extractvalue { ptr, i64, i64 } %t428, 0 %t432 = getelementptr inbounds %S.ast.Node, ptr %t431, i64 %t427 %t433 = getelementptr inbounds %S.ast.Node, ptr %t432, i32 0, i32 9 %t434 = load { ptr, i64, i64 }, ptr %t433 %t435 = extractvalue { ptr, i64, i64 } %t434, 1 %t436 = icmp uge i64 0, %t435 - br i1 %t436, label %range7463, label %inrange7464 -range7463: - call void @finch_panic_index(ptr @.str.4912, i64 4470, i64 0, i64 %t435) + br i1 %t436, label %range7796, label %inrange7797 +range7796: + call void @finch_panic_index(ptr @.str.5167, i64 4620, i64 0, i64 %t435) unreachable -inrange7464: +inrange7797: %t437 = extractvalue { ptr, i64, i64 } %t434, 0 %t438 = getelementptr inbounds %S.ast.Node, ptr %t437, i64 0 %t439 = load %S.ast.Node, ptr %t438 @@ -65969,22 +70285,22 @@ inrange7464: %t445 = load { ptr, i64, i64 }, ptr %t443 %t446 = extractvalue { ptr, i64, i64 } %t445, 1 %t447 = icmp uge i64 %t444, %t446 - br i1 %t447, label %range7465, label %inrange7466 -range7465: - call void @finch_panic_index(ptr @.str.4913, i64 4470, i64 %t444, i64 %t446) + br i1 %t447, label %range7798, label %inrange7799 +range7798: + call void @finch_panic_index(ptr @.str.5168, i64 4620, i64 %t444, i64 %t446) unreachable -inrange7466: +inrange7799: %t448 = extractvalue { ptr, i64, i64 } %t445, 0 %t449 = getelementptr inbounds %S.ast.Node, ptr %t448, i64 %t444 %t450 = getelementptr inbounds %S.ast.Node, ptr %t449, i32 0, i32 9 %t451 = load { ptr, i64, i64 }, ptr %t450 %t452 = extractvalue { ptr, i64, i64 } %t451, 1 %t453 = icmp uge i64 0, %t452 - br i1 %t453, label %range7467, label %inrange7468 -range7467: - call void @finch_panic_index(ptr @.str.4914, i64 4470, i64 0, i64 %t452) + br i1 %t453, label %range7800, label %inrange7801 +range7800: + call void @finch_panic_index(ptr @.str.5169, i64 4620, i64 0, i64 %t452) unreachable -inrange7468: +inrange7801: %t454 = extractvalue { ptr, i64, i64 } %t451, 0 %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 0 %t456 = load %S.ast.Node, ptr %t455 @@ -65993,20 +70309,20 @@ inrange7468: %t459 = load { ptr, i64, i64 }, ptr %t457 %t460 = extractvalue { ptr, i64, i64 } %t459, 1 %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range7469, label %inrange7470 -range7469: - call void @finch_panic_index(ptr @.str.4916, i64 4470, i64 %t458, i64 %t460) + br i1 %t461, label %range7802, label %inrange7803 +range7802: + call void @finch_panic_index(ptr @.str.5171, i64 4620, i64 %t458, i64 %t460) unreachable -inrange7470: +inrange7803: %t462 = extractvalue { ptr, i64, i64 } %t459, 0 %t463 = getelementptr inbounds { ptr, i64, i64 }, ptr %t462, i64 %t458 %t464 = load { ptr, i64, i64 }, ptr %t463 - store { ptr, i64, i64 } { ptr @.str.4915, i64 16, i64 0 }, ptr %a466 + store { ptr, i64, i64 } { ptr @.str.5170, i64 16, i64 0 }, ptr %a466 store { ptr, i64, i64 } %t464, ptr %a467 call void @finch_str_concat(ptr %a465, ptr %a466, ptr %a467) %t468 = load { ptr, i64, i64 }, ptr %a465 store { ptr, i64, i64 } %t468, ptr %a470 - store { ptr, i64, i64 } { ptr @.str.4917, i64 1, i64 0 }, ptr %a471 + store { ptr, i64, i64 } { ptr @.str.5172, i64 1, i64 0 }, ptr %a471 call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) %t472 = load { ptr, i64, i64 }, ptr %a469 %t473 = call %S.gen.Val @finch.gen.coerce(ptr %t424, %S.gen.Val %t441, %S.ast.Type %t442, %S.ast.Node %t456, { ptr, i64, i64 } %t472) @@ -66014,11 +70330,11 @@ inrange7470: %t474 = load { ptr, i64, i64 }, ptr %a374 %t475 = load ptr, ptr %a1 %t476 = icmp eq ptr %t475, null - br i1 %t476, label %panic7471, label %ok7472 -panic7471: - call void @finch_panic(ptr @.str.4918, i64 4471, ptr @.str.4919) + br i1 %t476, label %panic7804, label %ok7805 +panic7804: + call void @finch_panic(ptr @.str.5173, i64 4621, ptr @.str.5174) unreachable -ok7472: +ok7805: %t477 = getelementptr inbounds %S.gen.Gen, ptr %t475, i32 0, i32 13 store { ptr, i64, i64 } %t474, ptr %a478 call void @finch_str_copy(ptr %a479, ptr %a478) @@ -66027,11 +70343,11 @@ ok7472: %t481 = load { ptr, i64, i64 }, ptr %a382 %t482 = load ptr, ptr %a1 %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic7473, label %ok7474 -panic7473: - call void @finch_panic(ptr @.str.4920, i64 4472, ptr @.str.4921) + br i1 %t483, label %panic7806, label %ok7807 +panic7806: + call void @finch_panic(ptr @.str.5175, i64 4622, ptr @.str.5176) unreachable -ok7474: +ok7807: %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 17 store { ptr, i64, i64 } %t481, ptr %a485 call void @finch.copy.arr_str(ptr %a486, ptr %a485) @@ -66040,11 +70356,11 @@ ok7474: %t488 = load { ptr, i64, i64 }, ptr %a390 %t489 = load ptr, ptr %a1 %t490 = icmp eq ptr %t489, null - br i1 %t490, label %panic7475, label %ok7476 -panic7475: - call void @finch_panic(ptr @.str.4922, i64 4473, ptr @.str.4923) + br i1 %t490, label %panic7808, label %ok7809 +panic7808: + call void @finch_panic(ptr @.str.5177, i64 4623, ptr @.str.5178) unreachable -ok7476: +ok7809: %t491 = getelementptr inbounds %S.gen.Gen, ptr %t489, i32 0, i32 18 store { ptr, i64, i64 } %t488, ptr %a492 call void @finch.copy.arr_S_ast_Type(ptr %a493, ptr %a492) @@ -66053,30 +70369,30 @@ ok7476: %t495 = load { ptr, i64, i64 }, ptr %a366 %t496 = load ptr, ptr %a1 %t497 = icmp eq ptr %t496, null - br i1 %t497, label %panic7477, label %ok7478 -panic7477: - call void @finch_panic(ptr @.str.4924, i64 4474, ptr @.str.4925) + br i1 %t497, label %panic7810, label %ok7811 +panic7810: + call void @finch_panic(ptr @.str.5179, i64 4624, ptr @.str.5180) unreachable -ok7478: +ok7811: %t498 = getelementptr inbounds %S.gen.Gen, ptr %t496, i32 0, i32 10 store { ptr, i64, i64 } %t495, ptr %a499 call void @finch.copy.arr_S_gen_Scope(ptr %a500, ptr %a499) %t501 = load { ptr, i64, i64 }, ptr %a500 store { ptr, i64, i64 } %t501, ptr %t498 - br label %endif7444 -else7443: - br label %for.step7417 -endif7444: - br label %endif7425 -endif7425: + br label %endif7777 +else7776: + br label %for.step7750 +endif7777: + br label %endif7758 +endif7758: %t502 = load ptr, ptr %a1 %t503 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4926, i64 12, i64 0 }, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.5181, i64 12, i64 0 }, ptr %a505 store { ptr, i64, i64 } %t503, ptr %a506 call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) %t507 = load { ptr, i64, i64 }, ptr %a504 store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.4927, i64 1, i64 0 }, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.5182, i64 1, i64 0 }, ptr %a510 call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) %t511 = load { ptr, i64, i64 }, ptr %a508 %t512 = load { ptr, i64, i64 }, ptr %a268 @@ -66085,7 +70401,7 @@ endif7425: call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) %t516 = load { ptr, i64, i64 }, ptr %a513 store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.4928, i64 2, i64 0 }, ptr %a519 + store { ptr, i64, i64 } { ptr @.str.5183, i64 2, i64 0 }, ptr %a519 call void @finch_str_concat(ptr %a517, ptr %a518, ptr %a519) %t520 = load { ptr, i64, i64 }, ptr %a517 %t521 = load ptr, ptr %a1 @@ -66096,7 +70412,7 @@ endif7425: call void @finch_str_concat(ptr %a524, ptr %a525, ptr %a526) %t527 = load { ptr, i64, i64 }, ptr %a524 store { ptr, i64, i64 } %t527, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.4929, i64 1, i64 0 }, ptr %a530 + store { ptr, i64, i64 } { ptr @.str.5184, i64 1, i64 0 }, ptr %a530 call void @finch_str_concat(ptr %a528, ptr %a529, ptr %a530) %t531 = load { ptr, i64, i64 }, ptr %a528 %t532 = load ptr, ptr %a1 @@ -66107,7 +70423,7 @@ endif7425: call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537) %t538 = load { ptr, i64, i64 }, ptr %a535 store { ptr, i64, i64 } %t538, ptr %a540 - store { ptr, i64, i64 } { ptr @.str.4930, i64 2, i64 0 }, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.5185, i64 2, i64 0 }, ptr %a541 call void @finch_str_concat(ptr %a539, ptr %a540, ptr %a541) %t542 = load { ptr, i64, i64 }, ptr %a539 %t543 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 @@ -66115,11 +70431,11 @@ endif7425: %t545 = load { ptr, i64, i64 }, ptr %t543 %t546 = extractvalue { ptr, i64, i64 } %t545, 1 %t547 = icmp uge i64 %t544, %t546 - br i1 %t547, label %range7479, label %inrange7480 -range7479: - call void @finch_panic_index(ptr @.str.4931, i64 4478, i64 %t544, i64 %t546) + br i1 %t547, label %range7812, label %inrange7813 +range7812: + call void @finch_panic_index(ptr @.str.5186, i64 4628, i64 %t544, i64 %t546) unreachable -inrange7480: +inrange7813: %t548 = extractvalue { ptr, i64, i64 } %t545, 0 %t549 = getelementptr inbounds i64, ptr %t548, i64 %t544 %t550 = load i64, ptr %t549 @@ -66131,13 +70447,13 @@ inrange7480: %t556 = load { ptr, i64, i64 }, ptr %a553 %t557 = call { ptr, i64, i64 } @finch.gen.op(ptr %t502, { ptr, i64, i64 } %t556) store { ptr, i64, i64 } %t557, ptr %a268 - br label %for.step7417 -for.step7417: + br label %for.step7750 +for.step7750: %t558 = load i64, ptr %a272 %t559 = add i64 %t558, 1 store i64 %t559, ptr %a272 - br label %for.cond7415 -for.end7418: + br label %for.cond7748 +for.end7751: %t560 = load { ptr, i64, i64 }, ptr %a268 store { ptr, i64, i64 } %t560, ptr %a561 call void @finch_str_copy(ptr %a562, ptr %a561) @@ -66155,6 +70471,56 @@ for.end7418: ret %S.gen.Val %t573 } +define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca %S.ast.Node, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca %S.docs.Doc, align 16 + store ptr %p0, ptr %a1 + store %S.ast.Node %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic7814, label %ok7815 +panic7814: + call void @finch_panic(ptr @.str.5187, i64 4637, ptr @.str.5188) + unreachable +ok7815: + %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 26 + %t7 = load i1, ptr %t6 + %t8 = xor i1 %t7, true + br i1 %t8, label %then7816, label %endif7818 +then7816: + ret void +endif7818: + %t9 = load { ptr, i64, i64 }, ptr %a3 + %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t11 = load { ptr, i64, i64 }, ptr %t10 + %t12 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t9, { ptr, i64, i64 } %t11) + store %S.docs.Doc %t12, ptr %a13 + %t14 = getelementptr inbounds %S.docs.Doc, ptr %a13, i32 0, i32 0 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = icmp sgt i64 %t16, 0 + br i1 %t17, label %then7819, label %endif7821 +then7819: + %t18 = load ptr, ptr %a1 + %t19 = load %S.ast.Node, ptr %a2 + %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 + %t21 = load i64, ptr %t20 + %t22 = add i64 %t21, 1 + %t23 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = load %S.docs.Doc, ptr %a13 + %t27 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t26) + call void @finch.gen.noteRef(ptr %t18, %S.ast.Node %t19, i64 %t22, i64 %t25, { ptr, i64, i64 } %t27, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) + br label %endif7821 +endif7821: + ret void +} + define internal %S.gen.Val @finch.gen.method(ptr %p0, %S.ast.Node %p1) { entry: %a1 = alloca ptr, align 16 @@ -66234,167 +70600,167 @@ entry: %a263 = alloca { ptr, i64, i64 }, align 16 %a264 = alloca { ptr, i64, i64 }, align 16 %a265 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.gen.Val, align 16 - %a285 = alloca %S.gen.Val, align 16 + %a281 = alloca { ptr, i64, i64 }, align 16 + %a282 = alloca { ptr, i64, i64 }, align 16 %a287 = alloca %S.gen.Val, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a298 = alloca %S.ast.Type, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 + %a288 = alloca %S.gen.Val, align 16 + %a290 = alloca %S.gen.Val, align 16 + %a300 = alloca %S.ast.Type, align 16 + %a301 = alloca %S.ast.Type, align 16 + %a315 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca i64, align 16 - %a328 = alloca i64, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a326 = alloca { ptr, i64, i64 }, align 16 + %a331 = alloca i64, align 16 + %a334 = alloca i64, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 + %a351 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a367 = alloca %S.ast.Type, align 16 + %a368 = alloca %S.ast.Type, align 16 + %a370 = alloca %S.ast.Type, align 16 + %a371 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 + %a375 = alloca { ptr, i64, i64 }, align 16 %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 + %a399 = alloca { ptr, i64, i64 }, align 16 + %a400 = alloca { ptr, i64, i64 }, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 %a417 = alloca { ptr, i64, i64 }, align 16 + %a418 = alloca { ptr, i64, i64 }, align 16 %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca %S.ast.Type, align 16 - %a432 = alloca %S.ast.Type, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 + %a429 = alloca { ptr, i64, i64 }, align 16 + %a430 = alloca { ptr, i64, i64 }, align 16 + %a440 = alloca %S.ast.Type, align 16 + %a441 = alloca %S.ast.Type, align 16 + %a444 = alloca { ptr, i64, i64 }, align 16 + %a445 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 %a465 = alloca { ptr, i64, i64 }, align 16 %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca i64, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca i64, align 16 - %a531 = alloca i64, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca i64, align 16 - %a564 = alloca %S.gen.FnSig, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 + %a474 = alloca { ptr, i64, i64 }, align 16 + %a475 = alloca { ptr, i64, i64 }, align 16 + %a480 = alloca { ptr, i64, i64 }, align 16 + %a481 = alloca { ptr, i64, i64 }, align 16 + %a493 = alloca i64, align 16 + %a498 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca { ptr, i64, i64 }, align 16 + %a509 = alloca i64, align 16 + %a540 = alloca i64, align 16 + %a561 = alloca { ptr, i64, i64 }, align 16 + %a565 = alloca i64, align 16 + %a573 = alloca %S.gen.FnSig, align 16 %a578 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 + %a579 = alloca { ptr, i64, i64 }, align 16 %a586 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 + %a587 = alloca { ptr, i64, i64 }, align 16 + %a594 = alloca { ptr, i64, i64 }, align 16 + %a595 = alloca { ptr, i64, i64 }, align 16 + %a610 = alloca { ptr, i64, i64 }, align 16 %a611 = alloca { ptr, i64, i64 }, align 16 %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 + %a614 = alloca { ptr, i64, i64 }, align 16 %a615 = alloca { ptr, i64, i64 }, align 16 %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 + %a620 = alloca { ptr, i64, i64 }, align 16 %a621 = alloca { ptr, i64, i64 }, align 16 %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 + %a624 = alloca { ptr, i64, i64 }, align 16 %a625 = alloca { ptr, i64, i64 }, align 16 %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 + %a630 = alloca { ptr, i64, i64 }, align 16 %a631 = alloca { ptr, i64, i64 }, align 16 %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 + %a634 = alloca { ptr, i64, i64 }, align 16 %a635 = alloca { ptr, i64, i64 }, align 16 %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 + %a640 = alloca { ptr, i64, i64 }, align 16 + %a641 = alloca { ptr, i64, i64 }, align 16 + %a642 = alloca { ptr, i64, i64 }, align 16 %a644 = alloca { ptr, i64, i64 }, align 16 %a645 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 + %a646 = alloca { ptr, i64, i64 }, align 16 + %a652 = alloca { ptr, i64, i64 }, align 16 %a653 = alloca { ptr, i64, i64 }, align 16 %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 + %a656 = alloca { ptr, i64, i64 }, align 16 %a657 = alloca { ptr, i64, i64 }, align 16 %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 + %a662 = alloca { ptr, i64, i64 }, align 16 %a663 = alloca { ptr, i64, i64 }, align 16 %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 + %a666 = alloca { ptr, i64, i64 }, align 16 %a667 = alloca { ptr, i64, i64 }, align 16 %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 %a672 = alloca { ptr, i64, i64 }, align 16 %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 + %a674 = alloca { ptr, i64, i64 }, align 16 %a676 = alloca { ptr, i64, i64 }, align 16 %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 + %a678 = alloca { ptr, i64, i64 }, align 16 %a681 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 + %a682 = alloca { ptr, i64, i64 }, align 16 + %a684 = alloca { ptr, i64, i64 }, align 16 + %a685 = alloca { ptr, i64, i64 }, align 16 + %a686 = alloca { ptr, i64, i64 }, align 16 + %a688 = alloca { ptr, i64, i64 }, align 16 + %a689 = alloca { ptr, i64, i64 }, align 16 + %a690 = alloca { ptr, i64, i64 }, align 16 + %a705 = alloca { ptr, i64, i64 }, align 16 + %a706 = alloca { ptr, i64, i64 }, align 16 + %a711 = alloca { ptr, i64, i64 }, align 16 + %a712 = alloca { ptr, i64, i64 }, align 16 + %a724 = alloca { ptr, i64, i64 }, align 16 %a725 = alloca { ptr, i64, i64 }, align 16 %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 + %a730 = alloca { ptr, i64, i64 }, align 16 %a731 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca i64, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 + %a732 = alloca { ptr, i64, i64 }, align 16 + %a734 = alloca { ptr, i64, i64 }, align 16 + %a735 = alloca { ptr, i64, i64 }, align 16 + %a736 = alloca { ptr, i64, i64 }, align 16 + %a740 = alloca { ptr, i64, i64 }, align 16 + %a747 = alloca i64, align 16 + %a758 = alloca { ptr, i64, i64 }, align 16 + %a759 = alloca { ptr, i64, i64 }, align 16 + %a760 = alloca { ptr, i64, i64 }, align 16 %a762 = alloca { ptr, i64, i64 }, align 16 %a763 = alloca { ptr, i64, i64 }, align 16 %a764 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 + %a771 = alloca { ptr, i64, i64 }, align 16 + %a772 = alloca { ptr, i64, i64 }, align 16 + %a773 = alloca { ptr, i64, i64 }, align 16 + %a777 = alloca { ptr, i64, i64 }, align 16 + %a778 = alloca { ptr, i64, i64 }, align 16 + %a779 = alloca { ptr, i64, i64 }, align 16 + %a789 = alloca { ptr, i64, i64 }, align 16 + %a790 = alloca { ptr, i64, i64 }, align 16 + %a791 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 store %S.ast.Node %p1, ptr %a2 %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t4 = load { ptr, i64, i64 }, ptr %t3 %t5 = extractvalue { ptr, i64, i64 } %t4, 1 %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range7481, label %inrange7482 -range7481: - call void @finch_panic_index(ptr @.str.4932, i64 4486, i64 0, i64 %t5) + br i1 %t6, label %range7822, label %inrange7823 +range7822: + call void @finch_panic_index(ptr @.str.5190, i64 4647, i64 0, i64 %t5) unreachable -inrange7482: +inrange7823: %t7 = extractvalue { ptr, i64, i64 } %t4, 0 %t8 = getelementptr inbounds %S.ast.Node, ptr %t7, i64 0 %t9 = load %S.ast.Node, ptr %t8 @@ -66405,25 +70771,25 @@ inrange7482: %t14 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 %t15 = load { ptr, i64, i64 }, ptr %t14 store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.4933, i64 3, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.5191, i64 3, i64 0 }, ptr %a17 %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) %t19 = icmp ne i32 %t18, 0 - br label %logic.from7483 -logic.from7483: - br i1 %t19, label %logic.rhs7484, label %logic.end7485 -logic.rhs7484: + br label %logic.from7824 +logic.from7824: + br i1 %t19, label %logic.rhs7825, label %logic.end7826 +logic.rhs7825: %t20 = load ptr, ptr %a1 %t21 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 %t22 = load { ptr, i64, i64 }, ptr %t21 %t23 = call i64 @finch.gen.lookup(ptr %t20, { ptr, i64, i64 } %t22) %t24 = icmp slt i64 %t23, 0 - br label %logic.rend7486 -logic.rend7486: - br label %logic.end7485 -logic.end7485: - %t25 = phi i1 [ false, %logic.from7483 ], [ %t24, %logic.rend7486 ] - br i1 %t25, label %then7487, label %endif7489 -then7487: + br label %logic.rend7827 +logic.rend7827: + br label %logic.end7826 +logic.end7826: + %t25 = phi i1 [ false, %logic.from7824 ], [ %t24, %logic.rend7827 ] + br i1 %t25, label %then7828, label %endif7830 +then7828: %t26 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 %t27 = load { ptr, i64, i64 }, ptr %t26 store { ptr, i64, i64 } %t27, ptr %a28 @@ -66434,17 +70800,17 @@ then7487: %t33 = load { ptr, i64, i64 }, ptr %a31 %t34 = call i1 @finch.gen.imports(ptr %t32, { ptr, i64, i64 } %t33) %t35 = xor i1 %t34, true - br i1 %t35, label %then7490, label %endif7492 -then7490: + br i1 %t35, label %then7831, label %endif7833 +then7831: %t36 = load ptr, ptr %a1 %t37 = load %S.ast.Node, ptr %a13 %t38 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4934, i64 38, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5192, i64 38, i64 0 }, ptr %a40 store { ptr, i64, i64 } %t38, ptr %a41 call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4935, i64 32, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.5193, i64 32, i64 0 }, ptr %a45 call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 %t47 = load { ptr, i64, i64 }, ptr %a31 @@ -66453,12 +70819,12 @@ then7490: call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) %t51 = load { ptr, i64, i64 }, ptr %a48 store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4936, i64 13, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.5194, i64 13, i64 0 }, ptr %a54 call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) %t55 = load { ptr, i64, i64 }, ptr %a52 call void @finch.gen.fail(ptr %t36, %S.ast.Node %t37, { ptr, i64, i64 } %t55) - br label %endif7492 -endif7492: + br label %endif7833 +endif7833: %t56 = load ptr, ptr %a1 %t57 = load { ptr, i64, i64 }, ptr %a31 %t58 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66467,14 +70833,14 @@ endif7492: store i64 %t60, ptr %a61 %t62 = load i64, ptr %a61 %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7493, label %endif7495 -then7493: + br i1 %t63, label %then7834, label %endif7836 +then7834: %t64 = load ptr, ptr %a1 %t65 = load i64, ptr %a61 %t66 = load %S.ast.Node, ptr %a2 %t67 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.4937, i64 1, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.5195, i64 1, i64 0 }, ptr %a70 call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) %t71 = load { ptr, i64, i64 }, ptr %a68 %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66483,25 +70849,25 @@ then7493: store { ptr, i64, i64 } %t73, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 - %t78 = call %S.gen.Val @finch.gen.callFn(ptr %t64, i64 %t65, %S.ast.Node %t66, i64 1, { ptr, i64, i64 } %t77, { ptr, i64, i64 } { ptr @.str.4938, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.4939, i64 0, i64 0 }) + %t78 = call %S.gen.Val @finch.gen.callFn(ptr %t64, i64 %t65, %S.ast.Node %t66, i64 1, { ptr, i64, i64 } %t77, { ptr, i64, i64 } { ptr @.str.5196, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5197, i64 0, i64 0 }) ret %S.gen.Val %t78 -endif7495: +endif7836: %t79 = load ptr, ptr %a1 %t80 = load { ptr, i64, i64 }, ptr %a31 %t81 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = call i64 @finch.gen.findTemplate(ptr %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, i1 false) + %t83 = call i64 @finch.gen.findTemplate(ptr %t79, { ptr, i64, i64 } %t80, { ptr, i64, i64 } %t82, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }, i1 false) store i64 %t83, ptr %a84 %t85 = load i64, ptr %a84 %t86 = icmp sge i64 %t85, 0 - br i1 %t86, label %then7496, label %endif7498 -then7496: + br i1 %t86, label %then7837, label %endif7839 +then7837: %t87 = load ptr, ptr %a1 %t88 = load %S.ast.Node, ptr %a2 %t89 = load i64, ptr %a84 %t90 = load { ptr, i64, i64 }, ptr %a31 store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.4941, i64 1, i64 0 }, ptr %a93 + store { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 %t95 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66512,7 +70878,7 @@ then7496: %t100 = load { ptr, i64, i64 }, ptr %a97 %t101 = call %S.gen.Val @finch.gen.genericCall(ptr %t87, %S.ast.Node %t88, i64 %t89, i64 1, { ptr, i64, i64 } %t100) ret %S.gen.Val %t101 -endif7498: +endif7839: %t102 = load ptr, ptr %a1 %t103 = load { ptr, i64, i64 }, ptr %a31 %t104 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66521,14 +70887,14 @@ endif7498: store i64 %t106, ptr %a107 %t108 = load i64, ptr %a107 %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then7499, label %endif7501 -then7499: + br i1 %t109, label %then7840, label %endif7842 +then7840: %t110 = load ptr, ptr %a1 %t111 = load %S.ast.Node, ptr %a2 %t112 = load i64, ptr %a107 %t113 = call %S.gen.Val @finch.gen.enumFrom(ptr %t110, %S.ast.Node %t111, i64 %t112) ret %S.gen.Val %t113 -endif7501: +endif7842: %t114 = load ptr, ptr %a1 %t115 = load { ptr, i64, i64 }, ptr %a31 %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66537,30 +70903,30 @@ endif7501: store i64 %t118, ptr %a119 %t120 = load i64, ptr %a119 %t121 = icmp sge i64 %t120, 0 - br i1 %t121, label %then7502, label %endif7504 -then7502: + br i1 %t121, label %then7843, label %endif7845 +then7843: store { ptr, i64, i64 } zeroinitializer, ptr %a122 %t123 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 %t125 = load i64, ptr %t124 store i64 1, ptr %a126 - br label %for.cond7505 -for.cond7505: + br label %for.cond7846 +for.cond7846: %t127 = load i64, ptr %a126 %t128 = icmp slt i64 %t127, %t125 - br i1 %t128, label %for.body7506, label %for.end7508 -for.body7506: + br i1 %t128, label %for.body7847, label %for.end7849 +for.body7847: %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 %t130 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t131 = load i64, ptr %a126 %t132 = load { ptr, i64, i64 }, ptr %t130 %t133 = extractvalue { ptr, i64, i64 } %t132, 1 %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range7509, label %inrange7510 -range7509: - call void @finch_panic_index(ptr @.str.4942, i64 4508, i64 %t131, i64 %t133) + br i1 %t134, label %range7850, label %inrange7851 +range7850: + call void @finch_panic_index(ptr @.str.5200, i64 4669, i64 %t131, i64 %t133) unreachable -inrange7510: +inrange7851: %t135 = extractvalue { ptr, i64, i64 } %t132, 0 %t136 = getelementptr inbounds %S.ast.Node, ptr %t135, i64 %t131 %t137 = load %S.ast.Node, ptr %t136 @@ -66574,13 +70940,13 @@ inrange7510: %t144 = getelementptr inbounds %S.ast.Node, ptr %t143, i64 %t141 store %S.ast.Node %t140, ptr %t144 store i64 %t142, ptr %t129 - br label %for.step7507 -for.step7507: + br label %for.step7848 +for.step7848: %t145 = load i64, ptr %a126 %t146 = add i64 %t145, 1 store i64 %t146, ptr %a126 - br label %for.cond7505 -for.end7508: + br label %for.cond7846 +for.end7849: %t147 = load ptr, ptr %a1 %t148 = load i64, ptr %a119 %t149 = load { ptr, i64, i64 }, ptr %a122 @@ -66589,16 +70955,16 @@ for.end7508: %t152 = load %S.ast.Node, ptr %a2 %t153 = call %S.gen.Val @finch.gen.construct(ptr %t147, i64 %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151, %S.ast.Node %t152) ret %S.gen.Val %t153 -endif7504: +endif7845: %t154 = load ptr, ptr %a1 %t155 = load %S.ast.Node, ptr %a2 %t156 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4943, i64 12, i64 0 }, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.5201, i64 12, i64 0 }, ptr %a158 store { ptr, i64, i64 } %t156, ptr %a159 call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) %t160 = load { ptr, i64, i64 }, ptr %a157 store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4944, i64 35, i64 0 }, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.5202, i64 35, i64 0 }, ptr %a163 call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) %t164 = load { ptr, i64, i64 }, ptr %a161 %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 @@ -66608,30 +70974,30 @@ endif7504: call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4945, i64 1, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.5203, i64 1, i64 0 }, ptr %a173 call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } %t174) - br label %endif7489 -endif7489: + br label %endif7830 +endif7830: %t175 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t176 = call ptr @finch_alloc(i64 %t175) %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 0 - store { ptr, i64, i64 } { ptr @.str.4946, i64 4, i64 0 }, ptr %t177 + store { ptr, i64, i64 } { ptr @.str.5204, i64 4, i64 0 }, ptr %t177 %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 1 - store { ptr, i64, i64 } { ptr @.str.4947, i64 3, i64 0 }, ptr %t178 + store { ptr, i64, i64 } { ptr @.str.5205, i64 3, i64 0 }, ptr %t178 %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 2 - store { ptr, i64, i64 } { ptr @.str.4948, i64 6, i64 0 }, ptr %t179 + store { ptr, i64, i64 } { ptr @.str.5206, i64 6, i64 0 }, ptr %t179 %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 3 - store { ptr, i64, i64 } { ptr @.str.4949, i64 6, i64 0 }, ptr %t180 + store { ptr, i64, i64 } { ptr @.str.5207, i64 6, i64 0 }, ptr %t180 %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 4 - store { ptr, i64, i64 } { ptr @.str.4950, i64 5, i64 0 }, ptr %t181 + store { ptr, i64, i64 } { ptr @.str.5208, i64 5, i64 0 }, ptr %t181 %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 5 - store { ptr, i64, i64 } { ptr @.str.4951, i64 6, i64 0 }, ptr %t182 + store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %t182 %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 6 - store { ptr, i64, i64 } { ptr @.str.4952, i64 4, i64 0 }, ptr %t183 + store { ptr, i64, i64 } { ptr @.str.5210, i64 4, i64 0 }, ptr %t183 %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 7 - store { ptr, i64, i64 } { ptr @.str.4953, i64 7, i64 0 }, ptr %t184 + store { ptr, i64, i64 } { ptr @.str.5211, i64 7, i64 0 }, ptr %t184 %t185 = insertvalue { ptr, i64, i64 } undef, ptr %t176, 0 %t186 = insertvalue { ptr, i64, i64 } %t185, i64 8, 1 %t187 = insertvalue { ptr, i64, i64 } %t186, i64 8, 2 @@ -66645,27 +71011,27 @@ endif7489: %t195 = load i64, ptr %t191 %t196 = load ptr, ptr %a188 store i64 0, ptr %a197 - br label %find.cond7511 -find.cond7511: + br label %find.cond7852 +find.cond7852: %t198 = load i64, ptr %a197 %t199 = icmp slt i64 %t198, %t195 - br i1 %t199, label %find.body7512, label %find.end7515 -find.body7512: + br i1 %t199, label %find.body7853, label %find.end7856 +find.body7853: %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t196, i64 %t198 %t201 = load { ptr, i64, i64 }, ptr %t200 store { ptr, i64, i64 } %t201, ptr %a202 store { ptr, i64, i64 } %t193, ptr %a203 %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %find.hit7513, label %find.next7514 -find.hit7513: + br i1 %t205, label %find.hit7854, label %find.next7855 +find.hit7854: store i64 %t198, ptr %a194 - br label %find.end7515 -find.next7514: + br label %find.end7856 +find.next7855: %t206 = add i64 %t198, 1 store i64 %t206, ptr %a197 - br label %find.cond7511 -find.end7515: + br label %find.cond7852 +find.end7856: %t207 = load i64, ptr %a194 %t208 = icmp sge i64 %t207, 0 %t209 = call %S.gen.Ref @finch.gen.ref(ptr %t189, %S.ast.Node %t190, i1 %t208) @@ -66679,8 +71045,8 @@ find.end7515: store %S.ast.Type %t216, ptr %a217 %t218 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 %t219 = load i1, ptr %t218 - br i1 %t219, label %then7516, label %endif7518 -then7516: + br i1 %t219, label %then7857, label %endif7859 +then7857: %t220 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 %t221 = getelementptr inbounds %S.gen.Place, ptr %t220, i32 0, i32 1 %t222 = load %S.ast.Type, ptr %t221 @@ -66688,21 +71054,21 @@ then7516: call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) %t225 = load %S.ast.Type, ptr %a224 store %S.ast.Type %t225, ptr %a217 - br label %endif7518 -endif7518: + br label %endif7859 +endif7859: %t226 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 %t227 = load { ptr, i64, i64 }, ptr %t226 store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.4954, i64 5, i64 0 }, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.5212, i64 5, i64 0 }, ptr %a229 %t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229) %t231 = icmp ne i32 %t230, 0 - br i1 %t231, label %then7519, label %endif7521 -then7519: - store { ptr, i64, i64 } { ptr @.str.4955, i64 0, i64 0 }, ptr %a232 + br i1 %t231, label %then7860, label %endif7862 +then7860: + store { ptr, i64, i64 } { ptr @.str.5213, i64 0, i64 0 }, ptr %a232 %t233 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 %t234 = load i1, ptr %t233 - br i1 %t234, label %then7522, label %else7523 -then7522: + br i1 %t234, label %then7863, label %else7864 +then7863: %t235 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 %t236 = getelementptr inbounds %S.gen.Place, ptr %t235, i32 0, i32 0 %t237 = load { ptr, i64, i64 }, ptr %t236 @@ -66710,8 +71076,8 @@ then7522: call void @finch_str_copy(ptr %a239, ptr %a238) %t240 = load { ptr, i64, i64 }, ptr %a239 store { ptr, i64, i64 } %t240, ptr %a232 - br label %endif7524 -else7523: + br label %endif7865 +else7864: %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1 %t242 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t243 = load { ptr, i64, i64 }, ptr %t242 @@ -66719,817 +71085,829 @@ else7523: %t245 = load i64, ptr %t241 %t246 = load ptr, ptr %a188 store i64 0, ptr %a247 - br label %find.cond7525 -find.cond7525: + br label %find.cond7866 +find.cond7866: %t248 = load i64, ptr %a247 %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body7526, label %find.end7529 -find.body7526: + br i1 %t249, label %find.body7867, label %find.end7870 +find.body7867: %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t248 %t251 = load { ptr, i64, i64 }, ptr %t250 store { ptr, i64, i64 } %t251, ptr %a252 store { ptr, i64, i64 } %t243, ptr %a253 %t254 = call i32 @finch_str_eq(ptr %a252, ptr %a253) %t255 = icmp ne i32 %t254, 0 - br i1 %t255, label %find.hit7527, label %find.next7528 -find.hit7527: + br i1 %t255, label %find.hit7868, label %find.next7869 +find.hit7868: store i64 %t248, ptr %a244 - br label %find.end7529 -find.next7528: + br label %find.end7870 +find.next7869: %t256 = add i64 %t248, 1 store i64 %t256, ptr %a247 - br label %find.cond7525 -find.end7529: + br label %find.cond7866 +find.end7870: %t257 = load i64, ptr %a244 %t258 = icmp sge i64 %t257, 0 - br i1 %t258, label %then7530, label %endif7532 -then7530: + br i1 %t258, label %then7871, label %endif7873 +then7871: %t259 = load ptr, ptr %a1 %t260 = load %S.ast.Node, ptr %a2 %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 %t262 = load { ptr, i64, i64 }, ptr %t261 store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4956, i64 63, i64 0 }, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.5214, i64 63, i64 0 }, ptr %a265 call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) %t266 = load { ptr, i64, i64 }, ptr %a263 call void @finch.gen.fail(ptr %t259, %S.ast.Node %t260, { ptr, i64, i64 } %t266) - br label %endif7532 -endif7532: + br label %endif7873 +endif7873: %t267 = load ptr, ptr %a1 %t268 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 %t269 = load %S.gen.Val, ptr %t268 %t270 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t267, %S.gen.Val %t269) store { ptr, i64, i64 } %t270, ptr %a232 - br label %endif7524 -endif7524: + br label %endif7865 +endif7865: %t271 = load ptr, ptr %a1 %t272 = load %S.ast.Node, ptr %a2 - %t273 = load { ptr, i64, i64 }, ptr %a232 - %t274 = load %S.ast.Type, ptr %a217 - %t275 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t271, %S.ast.Node %t272, { ptr, i64, i64 } %t273, %S.ast.Type %t274) - ret %S.gen.Val %t275 -endif7521: - %t276 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t277 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4957, i64 3, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br i1 %t281, label %then7533, label %endif7535 -then7533: - %t282 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t283 = load %S.gen.Val, ptr %t282 - store %S.gen.Val %t283, ptr %a284 - call void @finch.copy.S_gen_Val(ptr %a285, ptr %a284) - %t286 = load %S.gen.Val, ptr %a285 + %t273 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.gen.noteMethod(ptr %t271, %S.ast.Node %t272, { ptr, i64, i64 } %t273) + %t274 = load ptr, ptr %a1 + %t275 = load %S.ast.Node, ptr %a2 + %t276 = load { ptr, i64, i64 }, ptr %a232 + %t277 = load %S.ast.Type, ptr %a217 + %t278 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t274, %S.ast.Node %t275, { ptr, i64, i64 } %t276, %S.ast.Type %t277) + ret %S.gen.Val %t278 +endif7862: + %t279 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t280 = load { ptr, i64, i64 }, ptr %t279 + store { ptr, i64, i64 } %t280, ptr %a281 + store { ptr, i64, i64 } { ptr @.str.5215, i64 3, i64 0 }, ptr %a282 + %t283 = call i32 @finch_str_eq(ptr %a281, ptr %a282) + %t284 = icmp ne i32 %t283, 0 + br i1 %t284, label %then7874, label %endif7876 +then7874: + %t285 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 + %t286 = load %S.gen.Val, ptr %t285 store %S.gen.Val %t286, ptr %a287 - %t288 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t289 = load i1, ptr %t288 - br i1 %t289, label %then7536, label %endif7538 -then7536: - %t290 = load ptr, ptr %a1 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 - %t292 = getelementptr inbounds %S.gen.Place, ptr %t291, i32 0, i32 0 - %t293 = load { ptr, i64, i64 }, ptr %t292 - %t294 = call { ptr, i64, i64 } @finch.gen.load(ptr %t290, { ptr, i64, i64 } { ptr @.str.4958, i64 17, i64 0 }, { ptr, i64, i64 } %t293) - %t295 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t294, 0 - %t296 = load %S.ast.Type, ptr %a217 - store %S.ast.Type %t296, ptr %a297 - call void @finch.copy.S_ast_Type(ptr %a298, ptr %a297) - %t299 = load %S.ast.Type, ptr %a298 - %t300 = insertvalue %S.gen.Val %t295, %S.ast.Type %t299, 1 - store %S.gen.Val %t300, ptr %a287 - br label %endif7538 -endif7538: - %t301 = load ptr, ptr %a1 - %t302 = load %S.ast.Node, ptr %a2 - %t303 = load ptr, ptr %a1 - %t304 = load %S.gen.Val, ptr %a287 - %t305 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t303, %S.gen.Val %t304) - %t306 = call %S.gen.Val @finch.gen.strMethod(ptr %t301, %S.ast.Node %t302, { ptr, i64, i64 } %t305) - ret %S.gen.Val %t306 -endif7535: - %t307 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a310 - %t311 = call i32 @finch_str_eq(ptr %a309, ptr %a310) - %t312 = icmp ne i32 %t311, 0 - br i1 %t312, label %then7539, label %endif7541 -then7539: - store { ptr, i64, i64 } { ptr @.str.4960, i64 0, i64 0 }, ptr %a313 - %t314 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t315 = load i1, ptr %t314 - br i1 %t315, label %then7542, label %else7543 -then7542: - %t316 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 - %t317 = getelementptr inbounds %S.gen.Place, ptr %t316, i32 0, i32 0 - %t318 = load { ptr, i64, i64 }, ptr %t317 - store { ptr, i64, i64 } %t318, ptr %a319 - call void @finch_str_copy(ptr %a320, ptr %a319) - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a313 - br label %endif7544 -else7543: - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + call void @finch.copy.S_gen_Val(ptr %a288, ptr %a287) + %t289 = load %S.gen.Val, ptr %a288 + store %S.gen.Val %t289, ptr %a290 + %t291 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 + %t292 = load i1, ptr %t291 + br i1 %t292, label %then7877, label %endif7879 +then7877: + %t293 = load ptr, ptr %a1 + %t294 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 + %t295 = getelementptr inbounds %S.gen.Place, ptr %t294, i32 0, i32 0 + %t296 = load { ptr, i64, i64 }, ptr %t295 + %t297 = call { ptr, i64, i64 } @finch.gen.load(ptr %t293, { ptr, i64, i64 } { ptr @.str.5216, i64 17, i64 0 }, { ptr, i64, i64 } %t296) + %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t297, 0 + %t299 = load %S.ast.Type, ptr %a217 + store %S.ast.Type %t299, ptr %a300 + call void @finch.copy.S_ast_Type(ptr %a301, ptr %a300) + %t302 = load %S.ast.Type, ptr %a301 + %t303 = insertvalue %S.gen.Val %t298, %S.ast.Type %t302, 1 + store %S.gen.Val %t303, ptr %a290 + br label %endif7879 +endif7879: + %t304 = load ptr, ptr %a1 + %t305 = load %S.ast.Node, ptr %a2 + %t306 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.gen.noteMethod(ptr %t304, %S.ast.Node %t305, { ptr, i64, i64 } %t306) + %t307 = load ptr, ptr %a1 + %t308 = load %S.ast.Node, ptr %a2 + %t309 = load ptr, ptr %a1 + %t310 = load %S.gen.Val, ptr %a290 + %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t309, %S.gen.Val %t310) + %t312 = call %S.gen.Val @finch.gen.strMethod(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t311) + ret %S.gen.Val %t312 +endif7876: + %t313 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t314 = load { ptr, i64, i64 }, ptr %t313 + store { ptr, i64, i64 } %t314, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }, ptr %a316 + %t317 = call i32 @finch_str_eq(ptr %a315, ptr %a316) + %t318 = icmp ne i32 %t317, 0 + br i1 %t318, label %then7880, label %endif7882 +then7880: + store { ptr, i64, i64 } { ptr @.str.5218, i64 0, i64 0 }, ptr %a319 + %t320 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 + %t321 = load i1, ptr %t320 + br i1 %t321, label %then7883, label %else7884 +then7883: + %t322 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 + %t323 = getelementptr inbounds %S.gen.Place, ptr %t322, i32 0, i32 0 %t324 = load { ptr, i64, i64 }, ptr %t323 - store i64 -1, ptr %a325 - %t326 = load i64, ptr %t322 - %t327 = load ptr, ptr %a188 - store i64 0, ptr %a328 - br label %find.cond7545 -find.cond7545: - %t329 = load i64, ptr %a328 - %t330 = icmp slt i64 %t329, %t326 - br i1 %t330, label %find.body7546, label %find.end7549 -find.body7546: - %t331 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t329 - %t332 = load { ptr, i64, i64 }, ptr %t331 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } %t324, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %find.hit7547, label %find.next7548 -find.hit7547: - store i64 %t329, ptr %a325 - br label %find.end7549 -find.next7548: - %t337 = add i64 %t329, 1 - store i64 %t337, ptr %a328 - br label %find.cond7545 -find.end7549: - %t338 = load i64, ptr %a325 - %t339 = icmp sge i64 %t338, 0 - br i1 %t339, label %then7550, label %endif7552 -then7550: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.4961, i64 61, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a344 - call void @finch.gen.fail(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t347) - br label %endif7552 -endif7552: - %t348 = load ptr, ptr %a1 - %t349 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t350 = load %S.gen.Val, ptr %t349 - %t351 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t348, %S.gen.Val %t350) - store { ptr, i64, i64 } %t351, ptr %a313 - br label %endif7544 -endif7544: - %t352 = load ptr, ptr %a1 - %t353 = load %S.ast.Node, ptr %a2 - %t354 = load { ptr, i64, i64 }, ptr %a313 - %t355 = load %S.ast.Type, ptr %a217 - %t356 = call %S.gen.Val @finch.gen.mapMethod(ptr %t352, %S.ast.Node %t353, { ptr, i64, i64 } %t354, %S.ast.Type %t355) - ret %S.gen.Val %t356 -endif7541: - %t357 = load %S.ast.Type, ptr %a217 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - store %S.ast.Type %t360, ptr %a361 - store { ptr, i64, i64 } { ptr @.str.4962, i64 0, i64 0 }, ptr %a362 - %t363 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4963, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from7553 -logic.from7553: - br i1 %t368, label %logic.rhs7554, label %logic.end7555 -logic.rhs7554: - %t369 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 - %t370 = getelementptr inbounds { ptr, i64, i64 }, ptr %t369, i32 0, i32 1 - %t371 = load i64, ptr %t370 - %t372 = icmp sgt i64 %t371, 0 - br label %logic.rend7556 -logic.rend7556: - br label %logic.end7555 -logic.end7555: - %t373 = phi i1 [ false, %logic.from7553 ], [ %t372, %logic.rend7556 ] - br label %logic.from7557 -logic.from7557: - br i1 %t373, label %logic.rhs7558, label %logic.end7559 -logic.rhs7558: - %t374 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 - %t375 = load { ptr, i64, i64 }, ptr %t374 - %t376 = extractvalue { ptr, i64, i64 } %t375, 1 - %t377 = icmp uge i64 0, %t376 - br i1 %t377, label %range7560, label %inrange7561 -range7560: - call void @finch_panic_index(ptr @.str.4964, i64 4553, i64 0, i64 %t376) + store { ptr, i64, i64 } %t324, ptr %a325 + call void @finch_str_copy(ptr %a326, ptr %a325) + %t327 = load { ptr, i64, i64 }, ptr %a326 + store { ptr, i64, i64 } %t327, ptr %a319 + br label %endif7885 +else7884: + %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %a188, i32 0, i32 1 + %t329 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t330 = load { ptr, i64, i64 }, ptr %t329 + store i64 -1, ptr %a331 + %t332 = load i64, ptr %t328 + %t333 = load ptr, ptr %a188 + store i64 0, ptr %a334 + br label %find.cond7886 +find.cond7886: + %t335 = load i64, ptr %a334 + %t336 = icmp slt i64 %t335, %t332 + br i1 %t336, label %find.body7887, label %find.end7890 +find.body7887: + %t337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t335 + %t338 = load { ptr, i64, i64 }, ptr %t337 + store { ptr, i64, i64 } %t338, ptr %a339 + store { ptr, i64, i64 } %t330, ptr %a340 + %t341 = call i32 @finch_str_eq(ptr %a339, ptr %a340) + %t342 = icmp ne i32 %t341, 0 + br i1 %t342, label %find.hit7888, label %find.next7889 +find.hit7888: + store i64 %t335, ptr %a331 + br label %find.end7890 +find.next7889: + %t343 = add i64 %t335, 1 + store i64 %t343, ptr %a334 + br label %find.cond7886 +find.end7890: + %t344 = load i64, ptr %a331 + %t345 = icmp sge i64 %t344, 0 + br i1 %t345, label %then7891, label %endif7893 +then7891: + %t346 = load ptr, ptr %a1 + %t347 = load %S.ast.Node, ptr %a2 + %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t349 = load { ptr, i64, i64 }, ptr %t348 + store { ptr, i64, i64 } %t349, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.5219, i64 61, i64 0 }, ptr %a352 + call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) + %t353 = load { ptr, i64, i64 }, ptr %a350 + call void @finch.gen.fail(ptr %t346, %S.ast.Node %t347, { ptr, i64, i64 } %t353) + br label %endif7893 +endif7893: + %t354 = load ptr, ptr %a1 + %t355 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 + %t356 = load %S.gen.Val, ptr %t355 + %t357 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t354, %S.gen.Val %t356) + store { ptr, i64, i64 } %t357, ptr %a319 + br label %endif7885 +endif7885: + %t358 = load ptr, ptr %a1 + %t359 = load %S.ast.Node, ptr %a2 + %t360 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.gen.noteMethod(ptr %t358, %S.ast.Node %t359, { ptr, i64, i64 } %t360) + %t361 = load ptr, ptr %a1 + %t362 = load %S.ast.Node, ptr %a2 + %t363 = load { ptr, i64, i64 }, ptr %a319 + %t364 = load %S.ast.Type, ptr %a217 + %t365 = call %S.gen.Val @finch.gen.mapMethod(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t363, %S.ast.Type %t364) + ret %S.gen.Val %t365 +endif7882: + %t366 = load %S.ast.Type, ptr %a217 + store %S.ast.Type %t366, ptr %a367 + call void @finch.copy.S_ast_Type(ptr %a368, ptr %a367) + %t369 = load %S.ast.Type, ptr %a368 + store %S.ast.Type %t369, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.5220, i64 0, i64 0 }, ptr %a371 + %t372 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t373 = load { ptr, i64, i64 }, ptr %t372 + store { ptr, i64, i64 } %t373, ptr %a374 + store { ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }, ptr %a375 + %t376 = call i32 @finch_str_eq(ptr %a374, ptr %a375) + %t377 = icmp ne i32 %t376, 0 + br label %logic.from7894 +logic.from7894: + br i1 %t377, label %logic.rhs7895, label %logic.end7896 +logic.rhs7895: + %t378 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 + %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 + %t380 = load i64, ptr %t379 + %t381 = icmp sgt i64 %t380, 0 + br label %logic.rend7897 +logic.rend7897: + br label %logic.end7896 +logic.end7896: + %t382 = phi i1 [ false, %logic.from7894 ], [ %t381, %logic.rend7897 ] + br label %logic.from7898 +logic.from7898: + br i1 %t382, label %logic.rhs7899, label %logic.end7900 +logic.rhs7899: + %t383 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 + %t384 = load { ptr, i64, i64 }, ptr %t383 + %t385 = extractvalue { ptr, i64, i64 } %t384, 1 + %t386 = icmp uge i64 0, %t385 + br i1 %t386, label %range7901, label %inrange7902 +range7901: + call void @finch_panic_index(ptr @.str.5222, i64 4717, i64 0, i64 %t385) unreachable -inrange7561: - %t378 = extractvalue { ptr, i64, i64 } %t375, 0 - %t379 = getelementptr inbounds %S.ast.Type, ptr %t378, i64 0 - %t380 = getelementptr inbounds %S.ast.Type, ptr %t379, i32 0, i32 0 - %t381 = load { ptr, i64, i64 }, ptr %t380 - store { ptr, i64, i64 } %t381, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.4965, i64 6, i64 0 }, ptr %a383 - %t384 = call i32 @finch_str_eq(ptr %a382, ptr %a383) - %t385 = icmp ne i32 %t384, 0 - br label %logic.rend7562 -logic.rend7562: - br label %logic.end7559 -logic.end7559: - %t386 = phi i1 [ false, %logic.from7557 ], [ %t385, %logic.rend7562 ] - br i1 %t386, label %then7563, label %else7564 -then7563: - %t387 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t388 = getelementptr inbounds %S.gen.Val, ptr %t387, i32 0, i32 0 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t395 = load i1, ptr %t394 - br i1 %t395, label %then7566, label %endif7568 -then7566: - %t396 = load ptr, ptr %a1 - %t397 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 - %t398 = getelementptr inbounds %S.gen.Place, ptr %t397, i32 0, i32 0 - %t399 = load { ptr, i64, i64 }, ptr %t398 - %t400 = call { ptr, i64, i64 } @finch.gen.load(ptr %t396, { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t400, ptr %a393 - br label %endif7568 -endif7568: - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.4967, i64 12, i64 0 }, ptr %a405 - store { ptr, i64, i64 } %t403, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - %t407 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } %t407, ptr %a409 - store { ptr, i64, i64 } { ptr @.str.4968, i64 6, i64 0 }, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a408 - %t412 = call { ptr, i64, i64 } @finch.gen.op(ptr %t402, { ptr, i64, i64 } %t411) - %t413 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t414 = load { ptr, i64, i64 }, ptr %t413 - store { ptr, i64, i64 } { ptr @.str.4969, i64 8, i64 0 }, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t418, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4970, i64 20, i64 0 }, ptr %a421 - call void @finch_str_concat(ptr %a419, ptr %a420, ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a419 - %t423 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t401, { ptr, i64, i64 } %t412, { ptr, i64, i64 } %t422, %S.ast.Node %t423) - %t424 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = extractvalue { ptr, i64, i64 } %t425, 1 - %t427 = icmp uge i64 0, %t426 - br i1 %t427, label %range7569, label %inrange7570 -range7569: - call void @finch_panic_index(ptr @.str.4971, i64 4559, i64 0, i64 %t426) +inrange7902: + %t387 = extractvalue { ptr, i64, i64 } %t384, 0 + %t388 = getelementptr inbounds %S.ast.Type, ptr %t387, i64 0 + %t389 = getelementptr inbounds %S.ast.Type, ptr %t388, i32 0, i32 0 + %t390 = load { ptr, i64, i64 }, ptr %t389 + store { ptr, i64, i64 } %t390, ptr %a391 + store { ptr, i64, i64 } { ptr @.str.5223, i64 6, i64 0 }, ptr %a392 + %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) + %t394 = icmp ne i32 %t393, 0 + br label %logic.rend7903 +logic.rend7903: + br label %logic.end7900 +logic.end7900: + %t395 = phi i1 [ false, %logic.from7898 ], [ %t394, %logic.rend7903 ] + br i1 %t395, label %then7904, label %else7905 +then7904: + %t396 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 + %t397 = getelementptr inbounds %S.gen.Val, ptr %t396, i32 0, i32 0 + %t398 = load { ptr, i64, i64 }, ptr %t397 + store { ptr, i64, i64 } %t398, ptr %a399 + call void @finch_str_copy(ptr %a400, ptr %a399) + %t401 = load { ptr, i64, i64 }, ptr %a400 + store { ptr, i64, i64 } %t401, ptr %a402 + %t403 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 + %t404 = load i1, ptr %t403 + br i1 %t404, label %then7907, label %endif7909 +then7907: + %t405 = load ptr, ptr %a1 + %t406 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 + %t407 = getelementptr inbounds %S.gen.Place, ptr %t406, i32 0, i32 0 + %t408 = load { ptr, i64, i64 }, ptr %t407 + %t409 = call { ptr, i64, i64 } @finch.gen.load(ptr %t405, { ptr, i64, i64 } { ptr @.str.5224, i64 3, i64 0 }, { ptr, i64, i64 } %t408) + store { ptr, i64, i64 } %t409, ptr %a402 + br label %endif7909 +endif7909: + %t410 = load ptr, ptr %a1 + %t411 = load ptr, ptr %a1 + %t412 = load { ptr, i64, i64 }, ptr %a402 + store { ptr, i64, i64 } { ptr @.str.5225, i64 12, i64 0 }, ptr %a414 + store { ptr, i64, i64 } %t412, ptr %a415 + call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) + %t416 = load { ptr, i64, i64 }, ptr %a413 + store { ptr, i64, i64 } %t416, ptr %a418 + store { ptr, i64, i64 } { ptr @.str.5226, i64 6, i64 0 }, ptr %a419 + call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) + %t420 = load { ptr, i64, i64 }, ptr %a417 + %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t411, { ptr, i64, i64 } %t420) + %t422 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t423 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } { ptr @.str.5227, i64 8, i64 0 }, ptr %a425 + store { ptr, i64, i64 } %t423, ptr %a426 + call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) + %t427 = load { ptr, i64, i64 }, ptr %a424 + store { ptr, i64, i64 } %t427, ptr %a429 + store { ptr, i64, i64 } { ptr @.str.5228, i64 20, i64 0 }, ptr %a430 + call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) + %t431 = load { ptr, i64, i64 }, ptr %a428 + %t432 = load %S.ast.Node, ptr %a2 + call void @finch.gen.panicIf(ptr %t410, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t431, %S.ast.Node %t432) + %t433 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 1 + %t434 = load { ptr, i64, i64 }, ptr %t433 + %t435 = extractvalue { ptr, i64, i64 } %t434, 1 + %t436 = icmp uge i64 0, %t435 + br i1 %t436, label %range7910, label %inrange7911 +range7910: + call void @finch_panic_index(ptr @.str.5229, i64 4723, i64 0, i64 %t435) unreachable -inrange7570: - %t428 = extractvalue { ptr, i64, i64 } %t425, 0 - %t429 = getelementptr inbounds %S.ast.Type, ptr %t428, i64 0 - %t430 = load %S.ast.Type, ptr %t429 - store %S.ast.Type %t430, ptr %a431 - call void @finch.copy.S_ast_Type(ptr %a432, ptr %a431) - %t433 = load %S.ast.Type, ptr %a432 - store %S.ast.Type %t433, ptr %a361 - %t434 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t434, ptr %a435 - call void @finch_str_copy(ptr %a436, ptr %a435) - %t437 = load { ptr, i64, i64 }, ptr %a436 - store { ptr, i64, i64 } %t437, ptr %a362 - br label %endif7565 -else7564: - %t438 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t439 = load { ptr, i64, i64 }, ptr %t438 - store { ptr, i64, i64 } %t439, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.4972, i64 6, i64 0 }, ptr %a441 - %t442 = call i32 @finch_str_eq(ptr %a440, ptr %a441) - %t443 = icmp ne i32 %t442, 0 - br label %logic.from7571 -logic.from7571: - br i1 %t443, label %logic.end7573, label %logic.rhs7572 -logic.rhs7572: - %t444 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t445 = load { ptr, i64, i64 }, ptr %t444 - store { ptr, i64, i64 } %t445, ptr %a446 - store { ptr, i64, i64 } { ptr @.str.4973, i64 4, i64 0 }, ptr %a447 - %t448 = call i32 @finch_str_eq(ptr %a446, ptr %a447) - %t449 = icmp ne i32 %t448, 0 - br label %logic.rend7574 -logic.rend7574: - br label %logic.end7573 -logic.end7573: - %t450 = phi i1 [ true, %logic.from7571 ], [ %t449, %logic.rend7574 ] - br i1 %t450, label %then7575, label %endif7577 -then7575: - %t451 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t452 = load i1, ptr %t451 - br i1 %t452, label %then7578, label %else7579 -then7578: - %t453 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 - %t454 = getelementptr inbounds %S.gen.Place, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - call void @finch_str_copy(ptr %a457, ptr %a456) - %t458 = load { ptr, i64, i64 }, ptr %a457 - store { ptr, i64, i64 } %t458, ptr %a362 - br label %endif7580 -else7579: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - store { ptr, i64, i64 } %t462, ptr %a362 - br label %endif7580 -endif7580: - br label %endif7577 -endif7577: - br label %endif7565 -endif7565: - %t463 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0 +inrange7911: + %t437 = extractvalue { ptr, i64, i64 } %t434, 0 + %t438 = getelementptr inbounds %S.ast.Type, ptr %t437, i64 0 + %t439 = load %S.ast.Type, ptr %t438 + store %S.ast.Type %t439, ptr %a440 + call void @finch.copy.S_ast_Type(ptr %a441, ptr %a440) + %t442 = load %S.ast.Type, ptr %a441 + store %S.ast.Type %t442, ptr %a370 + %t443 = load { ptr, i64, i64 }, ptr %a402 + store { ptr, i64, i64 } %t443, ptr %a444 + call void @finch_str_copy(ptr %a445, ptr %a444) + %t446 = load { ptr, i64, i64 }, ptr %a445 + store { ptr, i64, i64 } %t446, ptr %a371 + br label %endif7906 +else7905: + %t447 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t448 = load { ptr, i64, i64 }, ptr %t447 + store { ptr, i64, i64 } %t448, ptr %a449 + store { ptr, i64, i64 } { ptr @.str.5230, i64 6, i64 0 }, ptr %a450 + %t451 = call i32 @finch_str_eq(ptr %a449, ptr %a450) + %t452 = icmp ne i32 %t451, 0 + br label %logic.from7912 +logic.from7912: + br i1 %t452, label %logic.end7914, label %logic.rhs7913 +logic.rhs7913: + %t453 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t454 = load { ptr, i64, i64 }, ptr %t453 + store { ptr, i64, i64 } %t454, ptr %a455 + store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a456 + %t457 = call i32 @finch_str_eq(ptr %a455, ptr %a456) + %t458 = icmp ne i32 %t457, 0 + br label %logic.rend7915 +logic.rend7915: + br label %logic.end7914 +logic.end7914: + %t459 = phi i1 [ true, %logic.from7912 ], [ %t458, %logic.rend7915 ] + br i1 %t459, label %then7916, label %endif7918 +then7916: + %t460 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 + %t461 = load i1, ptr %t460 + br i1 %t461, label %then7919, label %else7920 +then7919: + %t462 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 1 + %t463 = getelementptr inbounds %S.gen.Place, ptr %t462, i32 0, i32 0 %t464 = load { ptr, i64, i64 }, ptr %t463 store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4974, i64 6, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp ne i32 %t467, 0 - br label %logic.from7581 -logic.from7581: - br i1 %t468, label %logic.end7583, label %logic.rhs7582 -logic.rhs7582: - %t469 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0 - %t470 = load { ptr, i64, i64 }, ptr %t469 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4975, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp ne i32 %t473, 0 - br label %logic.rend7584 -logic.rend7584: - br label %logic.end7583 -logic.end7583: - %t475 = phi i1 [ true, %logic.from7581 ], [ %t474, %logic.rend7584 ] - br i1 %t475, label %then7585, label %endif7587 -then7585: - %t476 = load ptr, ptr %a1 - %t477 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t482 = load { ptr, i64, i64 }, ptr %t481 - %t483 = call i64 @finch.gen.findMethod(ptr %t476, { ptr, i64, i64 } %t478, { ptr, i64, i64 } %t480, { ptr, i64, i64 } %t482) - store i64 %t483, ptr %a484 - %t485 = load i64, ptr %a484 - %t486 = icmp slt i64 %t485, 0 - br label %logic.from7588 -logic.from7588: - br i1 %t486, label %logic.rhs7589, label %logic.end7590 -logic.rhs7589: - %t487 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0 - %t488 = load { ptr, i64, i64 }, ptr %t487 - store { ptr, i64, i64 } %t488, ptr %a489 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a490 - %t491 = call i32 @finch_str_eq(ptr %a489, ptr %a490) - %t492 = icmp ne i32 %t491, 0 - br label %logic.rend7591 -logic.rend7591: - br label %logic.end7590 -logic.end7590: - %t493 = phi i1 [ false, %logic.from7588 ], [ %t492, %logic.rend7591 ] - br i1 %t493, label %then7592, label %endif7594 -then7592: - %t494 = load ptr, ptr %a1 - %t495 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3 - %t496 = load { ptr, i64, i64 }, ptr %t495 - %t497 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2 - %t498 = load { ptr, i64, i64 }, ptr %t497 - %t499 = call i64 @finch.gen.findStruct(ptr %t494, { ptr, i64, i64 } %t496, { ptr, i64, i64 } %t498) - store i64 %t499, ptr %a500 - %t501 = load ptr, ptr %a1 - %t502 = icmp eq ptr %t501, null - br i1 %t502, label %panic7595, label %ok7596 -panic7595: - call void @finch_panic(ptr @.str.4977, i64 4572, ptr @.str.4978) + call void @finch_str_copy(ptr %a466, ptr %a465) + %t467 = load { ptr, i64, i64 }, ptr %a466 + store { ptr, i64, i64 } %t467, ptr %a371 + br label %endif7921 +else7920: + %t468 = load ptr, ptr %a1 + %t469 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 2 + %t470 = load %S.gen.Val, ptr %t469 + %t471 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t468, %S.gen.Val %t470) + store { ptr, i64, i64 } %t471, ptr %a371 + br label %endif7921 +endif7921: + br label %endif7918 +endif7918: + br label %endif7906 +endif7906: + %t472 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t473 = load { ptr, i64, i64 }, ptr %t472 + store { ptr, i64, i64 } %t473, ptr %a474 + store { ptr, i64, i64 } { ptr @.str.5232, i64 6, i64 0 }, ptr %a475 + %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) + %t477 = icmp ne i32 %t476, 0 + br label %logic.from7922 +logic.from7922: + br i1 %t477, label %logic.end7924, label %logic.rhs7923 +logic.rhs7923: + %t478 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t479 = load { ptr, i64, i64 }, ptr %t478 + store { ptr, i64, i64 } %t479, ptr %a480 + store { ptr, i64, i64 } { ptr @.str.5233, i64 4, i64 0 }, ptr %a481 + %t482 = call i32 @finch_str_eq(ptr %a480, ptr %a481) + %t483 = icmp ne i32 %t482, 0 + br label %logic.rend7925 +logic.rend7925: + br label %logic.end7924 +logic.end7924: + %t484 = phi i1 [ true, %logic.from7922 ], [ %t483, %logic.rend7925 ] + br i1 %t484, label %then7926, label %endif7928 +then7926: + %t485 = load ptr, ptr %a1 + %t486 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t487 = load { ptr, i64, i64 }, ptr %t486 + %t488 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t489 = load { ptr, i64, i64 }, ptr %t488 + %t490 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t491 = load { ptr, i64, i64 }, ptr %t490 + %t492 = call i64 @finch.gen.findMethod(ptr %t485, { ptr, i64, i64 } %t487, { ptr, i64, i64 } %t489, { ptr, i64, i64 } %t491) + store i64 %t492, ptr %a493 + %t494 = load i64, ptr %a493 + %t495 = icmp slt i64 %t494, 0 + br label %logic.from7929 +logic.from7929: + br i1 %t495, label %logic.rhs7930, label %logic.end7931 +logic.rhs7930: + %t496 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t497 = load { ptr, i64, i64 }, ptr %t496 + store { ptr, i64, i64 } %t497, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5234, i64 6, i64 0 }, ptr %a499 + %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) + %t501 = icmp ne i32 %t500, 0 + br label %logic.rend7932 +logic.rend7932: + br label %logic.end7931 +logic.end7931: + %t502 = phi i1 [ false, %logic.from7929 ], [ %t501, %logic.rend7932 ] + br i1 %t502, label %then7933, label %endif7935 +then7933: + %t503 = load ptr, ptr %a1 + %t504 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t505 = load { ptr, i64, i64 }, ptr %t504 + %t506 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t507 = load { ptr, i64, i64 }, ptr %t506 + %t508 = call i64 @finch.gen.findStruct(ptr %t503, { ptr, i64, i64 } %t505, { ptr, i64, i64 } %t507) + store i64 %t508, ptr %a509 + %t510 = load ptr, ptr %a1 + %t511 = icmp eq ptr %t510, null + br i1 %t511, label %panic7936, label %ok7937 +panic7936: + call void @finch_panic(ptr @.str.5235, i64 4736, ptr @.str.5236) unreachable -ok7596: - %t503 = getelementptr inbounds %S.gen.Gen, ptr %t501, i32 0, i32 15 - %t504 = load i64, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %t503 - %t506 = extractvalue { ptr, i64, i64 } %t505, 1 - %t507 = icmp uge i64 %t504, %t506 - br i1 %t507, label %range7597, label %inrange7598 -range7597: - call void @finch_panic_index(ptr @.str.4979, i64 4572, i64 %t504, i64 %t506) +ok7937: + %t512 = getelementptr inbounds %S.gen.Gen, ptr %t510, i32 0, i32 15 + %t513 = load i64, ptr %a509 + %t514 = load { ptr, i64, i64 }, ptr %t512 + %t515 = extractvalue { ptr, i64, i64 } %t514, 1 + %t516 = icmp uge i64 %t513, %t515 + br i1 %t516, label %range7938, label %inrange7939 +range7938: + call void @finch_panic_index(ptr @.str.5237, i64 4736, i64 %t513, i64 %t515) unreachable -inrange7598: - %t508 = extractvalue { ptr, i64, i64 } %t505, 0 - %t509 = getelementptr inbounds %S.gen.StructDef, ptr %t508, i64 %t504 - %t510 = getelementptr inbounds %S.gen.StructDef, ptr %t509, i32 0, i32 5 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %t510, i32 0, i32 1 - %t512 = load i64, ptr %t511 - %t513 = icmp sgt i64 %t512, 0 - br i1 %t513, label %then7599, label %endif7601 -then7599: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = load ptr, ptr %a1 - %t520 = icmp eq ptr %t519, null - br i1 %t520, label %panic7602, label %ok7603 -panic7602: - call void @finch_panic(ptr @.str.4980, i64 4573, ptr @.str.4981) +inrange7939: + %t517 = extractvalue { ptr, i64, i64 } %t514, 0 + %t518 = getelementptr inbounds %S.gen.StructDef, ptr %t517, i64 %t513 + %t519 = getelementptr inbounds %S.gen.StructDef, ptr %t518, i32 0, i32 5 + %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i32 0, i32 1 + %t521 = load i64, ptr %t520 + %t522 = icmp sgt i64 %t521, 0 + br i1 %t522, label %then7940, label %endif7942 +then7940: + %t523 = load ptr, ptr %a1 + %t524 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t525 = load { ptr, i64, i64 }, ptr %t524 + %t526 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t527 = load { ptr, i64, i64 }, ptr %t526 + %t528 = load ptr, ptr %a1 + %t529 = icmp eq ptr %t528, null + br i1 %t529, label %panic7943, label %ok7944 +panic7943: + call void @finch_panic(ptr @.str.5238, i64 4737, ptr @.str.5239) unreachable -ok7603: - %t521 = getelementptr inbounds %S.gen.Gen, ptr %t519, i32 0, i32 15 - %t522 = load i64, ptr %a500 - %t523 = load { ptr, i64, i64 }, ptr %t521 - %t524 = extractvalue { ptr, i64, i64 } %t523, 1 - %t525 = icmp uge i64 %t522, %t524 - br i1 %t525, label %range7604, label %inrange7605 -range7604: - call void @finch_panic_index(ptr @.str.4982, i64 4573, i64 %t522, i64 %t524) +ok7944: + %t530 = getelementptr inbounds %S.gen.Gen, ptr %t528, i32 0, i32 15 + %t531 = load i64, ptr %a509 + %t532 = load { ptr, i64, i64 }, ptr %t530 + %t533 = extractvalue { ptr, i64, i64 } %t532, 1 + %t534 = icmp uge i64 %t531, %t533 + br i1 %t534, label %range7945, label %inrange7946 +range7945: + call void @finch_panic_index(ptr @.str.5240, i64 4737, i64 %t531, i64 %t533) unreachable -inrange7605: - %t526 = extractvalue { ptr, i64, i64 } %t523, 0 - %t527 = getelementptr inbounds %S.gen.StructDef, ptr %t526, i64 %t522 - %t528 = getelementptr inbounds %S.gen.StructDef, ptr %t527, i32 0, i32 5 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findTemplate(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518, { ptr, i64, i64 } %t529, i1 false) - store i64 %t530, ptr %a531 - %t532 = load i64, ptr %a531 - %t533 = icmp sge i64 %t532, 0 - br i1 %t533, label %then7606, label %endif7608 -then7606: - %t534 = load ptr, ptr %a1 - %t535 = load i64, ptr %a531 - %t536 = load ptr, ptr %a1 - %t537 = icmp eq ptr %t536, null - br i1 %t537, label %panic7609, label %ok7610 -panic7609: - call void @finch_panic(ptr @.str.4983, i64 4575, ptr @.str.4984) +inrange7946: + %t535 = extractvalue { ptr, i64, i64 } %t532, 0 + %t536 = getelementptr inbounds %S.gen.StructDef, ptr %t535, i64 %t531 + %t537 = getelementptr inbounds %S.gen.StructDef, ptr %t536, i32 0, i32 5 + %t538 = load { ptr, i64, i64 }, ptr %t537 + %t539 = call i64 @finch.gen.findTemplate(ptr %t523, { ptr, i64, i64 } %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t538, i1 false) + store i64 %t539, ptr %a540 + %t541 = load i64, ptr %a540 + %t542 = icmp sge i64 %t541, 0 + br i1 %t542, label %then7947, label %endif7949 +then7947: + %t543 = load ptr, ptr %a1 + %t544 = load i64, ptr %a540 + %t545 = load ptr, ptr %a1 + %t546 = icmp eq ptr %t545, null + br i1 %t546, label %panic7950, label %ok7951 +panic7950: + call void @finch_panic(ptr @.str.5241, i64 4739, ptr @.str.5242) unreachable -ok7610: - %t538 = getelementptr inbounds %S.gen.Gen, ptr %t536, i32 0, i32 15 - %t539 = load i64, ptr %a500 - %t540 = load { ptr, i64, i64 }, ptr %t538 - %t541 = extractvalue { ptr, i64, i64 } %t540, 1 - %t542 = icmp uge i64 %t539, %t541 - br i1 %t542, label %range7611, label %inrange7612 -range7611: - call void @finch_panic_index(ptr @.str.4985, i64 4575, i64 %t539, i64 %t541) +ok7951: + %t547 = getelementptr inbounds %S.gen.Gen, ptr %t545, i32 0, i32 15 + %t548 = load i64, ptr %a509 + %t549 = load { ptr, i64, i64 }, ptr %t547 + %t550 = extractvalue { ptr, i64, i64 } %t549, 1 + %t551 = icmp uge i64 %t548, %t550 + br i1 %t551, label %range7952, label %inrange7953 +range7952: + call void @finch_panic_index(ptr @.str.5243, i64 4739, i64 %t548, i64 %t550) unreachable -inrange7612: - %t543 = extractvalue { ptr, i64, i64 } %t540, 0 - %t544 = getelementptr inbounds %S.gen.StructDef, ptr %t543, i64 %t539 - %t545 = getelementptr inbounds %S.gen.StructDef, ptr %t544, i32 0, i32 7 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = load %S.ast.Type, ptr %a361 - %t548 = load %S.ast.Node, ptr %a2 - %t549 = call i64 @finch.gen.instFn(ptr %t534, i64 %t535, { ptr, i64, i64 } %t546, %S.ast.Type %t547, %S.ast.Node %t548) - store i64 %t549, ptr %a484 - br label %endif7608 -endif7608: - br label %endif7601 -endif7601: - br label %endif7594 -endif7594: - %t550 = load i64, ptr %a484 - %t551 = icmp slt i64 %t550, 0 - br i1 %t551, label %then7613, label %endif7615 -then7613: - store { ptr, i64, i64 } zeroinitializer, ptr %a552 - %t553 = load ptr, ptr %a1 - %t554 = icmp eq ptr %t553, null - br i1 %t554, label %panic7616, label %ok7617 -panic7616: - call void @finch_panic(ptr @.str.4986, i64 4581, ptr @.str.4987) +inrange7953: + %t552 = extractvalue { ptr, i64, i64 } %t549, 0 + %t553 = getelementptr inbounds %S.gen.StructDef, ptr %t552, i64 %t548 + %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i32 0, i32 7 + %t555 = load { ptr, i64, i64 }, ptr %t554 + %t556 = load %S.ast.Type, ptr %a370 + %t557 = load %S.ast.Node, ptr %a2 + %t558 = call i64 @finch.gen.instFn(ptr %t543, i64 %t544, { ptr, i64, i64 } %t555, %S.ast.Type %t556, %S.ast.Node %t557) + store i64 %t558, ptr %a493 + br label %endif7949 +endif7949: + br label %endif7942 +endif7942: + br label %endif7935 +endif7935: + %t559 = load i64, ptr %a493 + %t560 = icmp slt i64 %t559, 0 + br i1 %t560, label %then7954, label %endif7956 +then7954: + store { ptr, i64, i64 } zeroinitializer, ptr %a561 + %t562 = load ptr, ptr %a1 + %t563 = icmp eq ptr %t562, null + br i1 %t563, label %panic7957, label %ok7958 +panic7957: + call void @finch_panic(ptr @.str.5244, i64 4745, ptr @.str.5245) unreachable -ok7617: - %t555 = getelementptr inbounds %S.gen.Gen, ptr %t553, i32 0, i32 14 - store i64 0, ptr %a556 - br label %each.cond7618 -each.cond7618: - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i32 0, i32 1 - %t558 = load i64, ptr %t557 - %t559 = load i64, ptr %a556 - %t560 = icmp slt i64 %t559, %t558 - br i1 %t560, label %each.body7619, label %each.end7621 -each.body7619: - %t561 = load ptr, ptr %t555 - %t562 = getelementptr inbounds %S.gen.FnSig, ptr %t561, i64 %t559 - %t563 = load %S.gen.FnSig, ptr %t562 - store %S.gen.FnSig %t563, ptr %a564 - %t565 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 2 - %t566 = load { ptr, i64, i64 }, ptr %t565 - %t567 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t566, ptr %a569 - store { ptr, i64, i64 } %t568, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from7622 -logic.from7622: - br i1 %t572, label %logic.rhs7623, label %logic.end7624 -logic.rhs7623: - %t573 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 3 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 3 - %t576 = load { ptr, i64, i64 }, ptr %t575 - store { ptr, i64, i64 } %t574, ptr %a577 - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = call i32 @finch_str_eq(ptr %a577, ptr %a578) - %t580 = icmp ne i32 %t579, 0 - br label %logic.rend7625 -logic.rend7625: - br label %logic.end7624 -logic.end7624: - %t581 = phi i1 [ false, %logic.from7622 ], [ %t580, %logic.rend7625 ] - br i1 %t581, label %then7626, label %endif7628 -then7626: - %t582 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1 - %t583 = getelementptr inbounds %S.gen.FnSig, ptr %a564, i32 0, i32 1 - %t584 = load { ptr, i64, i64 }, ptr %t583 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load i64, ptr %t582 - %t589 = add i64 %t588, 1 - call void @finch_arr_reserve(ptr %a552, i64 %t589, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t590 = load ptr, ptr %a552 - %t591 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i64 %t588 - store { ptr, i64, i64 } %t587, ptr %t591 - store i64 %t589, ptr %t582 - br label %endif7628 -endif7628: - br label %each.step7620 -each.step7620: - %t592 = load i64, ptr %a556 - %t593 = add i64 %t592, 1 - store i64 %t593, ptr %a556 - br label %each.cond7618 -each.end7621: - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1 - %t595 = load i64, ptr %t594 - %t596 = icmp eq i64 %t595, 0 - br i1 %t596, label %then7629, label %endif7631 -then7629: - %t597 = load ptr, ptr %a1 - %t598 = load %S.ast.Node, ptr %a2 - %t599 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0 - %t600 = load { ptr, i64, i64 }, ptr %t599 - store { ptr, i64, i64 } { ptr @.str.4988, i64 4, i64 0 }, ptr %a602 - store { ptr, i64, i64 } %t600, ptr %a603 - call void @finch_str_concat(ptr %a601, ptr %a602, ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a601 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.4989, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a605 - %t609 = load %S.ast.Type, ptr %a361 - %t610 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t609) - store { ptr, i64, i64 } %t608, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - %t614 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t614, ptr %a616 - store { ptr, i64, i64 } { ptr @.str.4990, i64 34, i64 0 }, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - %t619 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 2 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t618, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.4991, i64 1, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a625 - %t629 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t630 = load { ptr, i64, i64 }, ptr %t629 - store { ptr, i64, i64 } %t628, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.4992, i64 13, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.fail(ptr %t597, %S.ast.Node %t598, { ptr, i64, i64 } %t638) - br label %endif7631 -endif7631: - %t639 = load ptr, ptr %a1 - %t640 = load %S.ast.Node, ptr %a2 - %t641 = getelementptr inbounds %S.ast.Type, ptr %a361, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - store { ptr, i64, i64 } { ptr @.str.4993, i64 4, i64 0 }, ptr %a644 - store { ptr, i64, i64 } %t642, ptr %a645 - call void @finch_str_concat(ptr %a643, ptr %a644, ptr %a645) - %t646 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t646, ptr %a648 - store { ptr, i64, i64 } { ptr @.str.4994, i64 1, i64 0 }, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - %t650 = load { ptr, i64, i64 }, ptr %a647 - %t651 = load %S.ast.Type, ptr %a361 - %t652 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t651) - store { ptr, i64, i64 } %t650, ptr %a654 - store { ptr, i64, i64 } %t652, ptr %a655 - call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a653 - store { ptr, i64, i64 } %t656, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4995, i64 16, i64 0 }, ptr %a659 - call void @finch_str_concat(ptr %a657, ptr %a658, ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a657 - %t661 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t662 = load { ptr, i64, i64 }, ptr %t661 - store { ptr, i64, i64 } %t660, ptr %a664 - store { ptr, i64, i64 } %t662, ptr %a665 - call void @finch_str_concat(ptr %a663, ptr %a664, ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.4996, i64 11, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a667 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a552, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4997, i64 2, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a552, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4998, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a679 - call void @finch.gen.fail(ptr %t639, %S.ast.Node %t640, { ptr, i64, i64 } %t682) - br label %endif7615 -endif7615: - %t683 = load ptr, ptr %a1 - %t684 = icmp eq ptr %t683, null - br i1 %t684, label %panic7632, label %ok7633 -panic7632: - call void @finch_panic(ptr @.str.4999, i64 4592, ptr @.str.5000) +ok7958: + %t564 = getelementptr inbounds %S.gen.Gen, ptr %t562, i32 0, i32 14 + store i64 0, ptr %a565 + br label %each.cond7959 +each.cond7959: + %t566 = getelementptr inbounds { ptr, i64, i64 }, ptr %t564, i32 0, i32 1 + %t567 = load i64, ptr %t566 + %t568 = load i64, ptr %a565 + %t569 = icmp slt i64 %t568, %t567 + br i1 %t569, label %each.body7960, label %each.end7962 +each.body7960: + %t570 = load ptr, ptr %t564 + %t571 = getelementptr inbounds %S.gen.FnSig, ptr %t570, i64 %t568 + %t572 = load %S.gen.FnSig, ptr %t571 + store %S.gen.FnSig %t572, ptr %a573 + %t574 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 2 + %t575 = load { ptr, i64, i64 }, ptr %t574 + %t576 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t577 = load { ptr, i64, i64 }, ptr %t576 + store { ptr, i64, i64 } %t575, ptr %a578 + store { ptr, i64, i64 } %t577, ptr %a579 + %t580 = call i32 @finch_str_eq(ptr %a578, ptr %a579) + %t581 = icmp ne i32 %t580, 0 + br label %logic.from7963 +logic.from7963: + br i1 %t581, label %logic.rhs7964, label %logic.end7965 +logic.rhs7964: + %t582 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 3 + %t583 = load { ptr, i64, i64 }, ptr %t582 + %t584 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 3 + %t585 = load { ptr, i64, i64 }, ptr %t584 + store { ptr, i64, i64 } %t583, ptr %a586 + store { ptr, i64, i64 } %t585, ptr %a587 + %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) + %t589 = icmp ne i32 %t588, 0 + br label %logic.rend7966 +logic.rend7966: + br label %logic.end7965 +logic.end7965: + %t590 = phi i1 [ false, %logic.from7963 ], [ %t589, %logic.rend7966 ] + br i1 %t590, label %then7967, label %endif7969 +then7967: + %t591 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + %t592 = getelementptr inbounds %S.gen.FnSig, ptr %a573, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %t592 + store { ptr, i64, i64 } %t593, ptr %a594 + call void @finch_str_copy(ptr %a595, ptr %a594) + %t596 = load { ptr, i64, i64 }, ptr %a595 + %t597 = load i64, ptr %t591 + %t598 = add i64 %t597, 1 + call void @finch_arr_reserve(ptr %a561, i64 %t598, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t599 = load ptr, ptr %a561 + %t600 = getelementptr inbounds { ptr, i64, i64 }, ptr %t599, i64 %t597 + store { ptr, i64, i64 } %t596, ptr %t600 + store i64 %t598, ptr %t591 + br label %endif7969 +endif7969: + br label %each.step7961 +each.step7961: + %t601 = load i64, ptr %a565 + %t602 = add i64 %t601, 1 + store i64 %t602, ptr %a565 + br label %each.cond7959 +each.end7962: + %t603 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + %t604 = load i64, ptr %t603 + %t605 = icmp eq i64 %t604, 0 + br i1 %t605, label %then7970, label %endif7972 +then7970: + %t606 = load ptr, ptr %a1 + %t607 = load %S.ast.Node, ptr %a2 + %t608 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t609 = load { ptr, i64, i64 }, ptr %t608 + store { ptr, i64, i64 } { ptr @.str.5246, i64 4, i64 0 }, ptr %a611 + store { ptr, i64, i64 } %t609, ptr %a612 + call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612) + %t613 = load { ptr, i64, i64 }, ptr %a610 + store { ptr, i64, i64 } %t613, ptr %a615 + store { ptr, i64, i64 } { ptr @.str.5247, i64 1, i64 0 }, ptr %a616 + call void @finch_str_concat(ptr %a614, ptr %a615, ptr %a616) + %t617 = load { ptr, i64, i64 }, ptr %a614 + %t618 = load %S.ast.Type, ptr %a370 + %t619 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t618) + store { ptr, i64, i64 } %t617, ptr %a621 + store { ptr, i64, i64 } %t619, ptr %a622 + call void @finch_str_concat(ptr %a620, ptr %a621, ptr %a622) + %t623 = load { ptr, i64, i64 }, ptr %a620 + store { ptr, i64, i64 } %t623, ptr %a625 + store { ptr, i64, i64 } { ptr @.str.5248, i64 34, i64 0 }, ptr %a626 + call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) + %t627 = load { ptr, i64, i64 }, ptr %a624 + %t628 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 2 + %t629 = load { ptr, i64, i64 }, ptr %t628 + store { ptr, i64, i64 } %t627, ptr %a631 + store { ptr, i64, i64 } %t629, ptr %a632 + call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) + %t633 = load { ptr, i64, i64 }, ptr %a630 + store { ptr, i64, i64 } %t633, ptr %a635 + store { ptr, i64, i64 } { ptr @.str.5249, i64 1, i64 0 }, ptr %a636 + call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) + %t637 = load { ptr, i64, i64 }, ptr %a634 + %t638 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t639 = load { ptr, i64, i64 }, ptr %t638 + store { ptr, i64, i64 } %t637, ptr %a641 + store { ptr, i64, i64 } %t639, ptr %a642 + call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) + %t643 = load { ptr, i64, i64 }, ptr %a640 + store { ptr, i64, i64 } %t643, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.5250, i64 13, i64 0 }, ptr %a646 + call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646) + %t647 = load { ptr, i64, i64 }, ptr %a644 + call void @finch.gen.fail(ptr %t606, %S.ast.Node %t607, { ptr, i64, i64 } %t647) + br label %endif7972 +endif7972: + %t648 = load ptr, ptr %a1 + %t649 = load %S.ast.Node, ptr %a2 + %t650 = getelementptr inbounds %S.ast.Type, ptr %a370, i32 0, i32 0 + %t651 = load { ptr, i64, i64 }, ptr %t650 + store { ptr, i64, i64 } { ptr @.str.5251, i64 4, i64 0 }, ptr %a653 + store { ptr, i64, i64 } %t651, ptr %a654 + call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) + %t655 = load { ptr, i64, i64 }, ptr %a652 + store { ptr, i64, i64 } %t655, ptr %a657 + store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a658 + call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) + %t659 = load { ptr, i64, i64 }, ptr %a656 + %t660 = load %S.ast.Type, ptr %a370 + %t661 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t660) + store { ptr, i64, i64 } %t659, ptr %a663 + store { ptr, i64, i64 } %t661, ptr %a664 + call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) + %t665 = load { ptr, i64, i64 }, ptr %a662 + store { ptr, i64, i64 } %t665, ptr %a667 + store { ptr, i64, i64 } { ptr @.str.5253, i64 16, i64 0 }, ptr %a668 + call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) + %t669 = load { ptr, i64, i64 }, ptr %a666 + %t670 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t671 = load { ptr, i64, i64 }, ptr %t670 + store { ptr, i64, i64 } %t669, ptr %a673 + store { ptr, i64, i64 } %t671, ptr %a674 + call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) + %t675 = load { ptr, i64, i64 }, ptr %a672 + store { ptr, i64, i64 } %t675, ptr %a677 + store { ptr, i64, i64 } { ptr @.str.5254, i64 11, i64 0 }, ptr %a678 + call void @finch_str_concat(ptr %a676, ptr %a677, ptr %a678) + %t679 = load { ptr, i64, i64 }, ptr %a676 + %t680 = getelementptr inbounds { ptr, i64, i64 }, ptr %a561, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5255, i64 2, i64 0 }, ptr %a681 + call void @finch_str_join(ptr %a682, ptr %a561, ptr %a681) + %t683 = load { ptr, i64, i64 }, ptr %a682 + store { ptr, i64, i64 } %t679, ptr %a685 + store { ptr, i64, i64 } %t683, ptr %a686 + call void @finch_str_concat(ptr %a684, ptr %a685, ptr %a686) + %t687 = load { ptr, i64, i64 }, ptr %a684 + store { ptr, i64, i64 } %t687, ptr %a689 + store { ptr, i64, i64 } { ptr @.str.5256, i64 1, i64 0 }, ptr %a690 + call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) + %t691 = load { ptr, i64, i64 }, ptr %a688 + call void @finch.gen.fail(ptr %t648, %S.ast.Node %t649, { ptr, i64, i64 } %t691) + br label %endif7956 +endif7956: + %t692 = load ptr, ptr %a1 + %t693 = icmp eq ptr %t692, null + br i1 %t693, label %panic7973, label %ok7974 +panic7973: + call void @finch_panic(ptr @.str.5257, i64 4756, ptr @.str.5258) unreachable -ok7633: - %t685 = getelementptr inbounds %S.gen.Gen, ptr %t683, i32 0, i32 14 - %t686 = load i64, ptr %a484 - %t687 = load { ptr, i64, i64 }, ptr %t685 - %t688 = extractvalue { ptr, i64, i64 } %t687, 1 - %t689 = icmp uge i64 %t686, %t688 - br i1 %t689, label %range7634, label %inrange7635 -range7634: - call void @finch_panic_index(ptr @.str.5001, i64 4592, i64 %t686, i64 %t688) +ok7974: + %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 + %t695 = load i64, ptr %a493 + %t696 = load { ptr, i64, i64 }, ptr %t694 + %t697 = extractvalue { ptr, i64, i64 } %t696, 1 + %t698 = icmp uge i64 %t695, %t697 + br i1 %t698, label %range7975, label %inrange7976 +range7975: + call void @finch_panic_index(ptr @.str.5259, i64 4756, i64 %t695, i64 %t697) unreachable -inrange7635: - %t690 = extractvalue { ptr, i64, i64 } %t687, 0 - %t691 = getelementptr inbounds %S.gen.FnSig, ptr %t690, i64 %t686 - %t692 = getelementptr inbounds %S.gen.FnSig, ptr %t691, i32 0, i32 10 - %t693 = load i1, ptr %t692 - br label %logic.from7636 -logic.from7636: - br i1 %t693, label %logic.rhs7637, label %logic.end7638 -logic.rhs7637: - %t694 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t695 = load { ptr, i64, i64 }, ptr %t694 - store { ptr, i64, i64 } %t695, ptr %a696 - store { ptr, i64, i64 } { ptr @.str.5002, i64 6, i64 0 }, ptr %a697 - %t698 = call i32 @finch_str_eq(ptr %a696, ptr %a697) - %t699 = icmp ne i32 %t698, 0 - br label %logic.from7639 -logic.from7639: - br i1 %t699, label %logic.end7641, label %logic.rhs7640 -logic.rhs7640: - %t700 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - store { ptr, i64, i64 } { ptr @.str.5003, i64 4, i64 0 }, ptr %a703 - %t704 = call i32 @finch_str_eq(ptr %a702, ptr %a703) - %t705 = icmp ne i32 %t704, 0 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t706 = phi i1 [ true, %logic.from7639 ], [ %t705, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t707 = phi i1 [ false, %logic.from7636 ], [ %t706, %logic.rend7643 ] - br i1 %t707, label %then7644, label %endif7646 -then7644: - %t708 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 - %t709 = load i1, ptr %t708 - %t710 = xor i1 %t709, true - br i1 %t710, label %then7647, label %endif7649 -then7647: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t714 = load { ptr, i64, i64 }, ptr %t713 - store { ptr, i64, i64 } %t714, ptr %a716 - store { ptr, i64, i64 } { ptr @.str.5004, i64 28, i64 0 }, ptr %a717 - call void @finch_str_concat(ptr %a715, ptr %a716, ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a715 - %t719 = load %S.ast.Type, ptr %a361 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } %t718, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.5005, i64 30, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t728) - br label %endif7649 -endif7649: - %t729 = load %S.ast.Node, ptr %a13 - %t730 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t729) - store { ptr, i64, i64 } %t730, ptr %a731 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a731, i32 0, i32 1 - %t733 = load i64, ptr %t732 - %t734 = icmp sgt i64 %t733, 0 - br i1 %t734, label %then7650, label %endif7652 -then7650: - %t735 = load ptr, ptr %a1 - %t736 = load { ptr, i64, i64 }, ptr %a731 - %t737 = call i64 @finch.gen.lookup(ptr %t735, { ptr, i64, i64 } %t736) - store i64 %t737, ptr %a738 - %t739 = load i64, ptr %a738 - %t740 = icmp sge i64 %t739, 0 - br label %logic.from7653 -logic.from7653: - br i1 %t740, label %logic.rhs7654, label %logic.end7655 -logic.rhs7654: - %t741 = load ptr, ptr %a1 - %t742 = load i64, ptr %a738 - %t743 = call %S.gen.Var @finch.gen.varAt(ptr %t741, i64 %t742) - %t744 = extractvalue %S.gen.Var %t743, 3 - br label %logic.rend7656 -logic.rend7656: - br label %logic.end7655 -logic.end7655: - %t745 = phi i1 [ false, %logic.from7653 ], [ %t744, %logic.rend7656 ] - br i1 %t745, label %then7657, label %endif7659 -then7657: - %t746 = load ptr, ptr %a1 - %t747 = load %S.ast.Node, ptr %a2 - %t748 = load { ptr, i64, i64 }, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5006, i64 19, i64 0 }, ptr %a750 - store { ptr, i64, i64 } %t748, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - %t752 = load { ptr, i64, i64 }, ptr %a749 - store { ptr, i64, i64 } %t752, ptr %a754 - store { ptr, i64, i64 } { ptr @.str.5007, i64 18, i64 0 }, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - call void @finch.gen.fail(ptr %t746, %S.ast.Node %t747, { ptr, i64, i64 } %t756) - br label %endif7659 -endif7659: - br label %endif7652 -endif7652: - br label %endif7646 -endif7646: - %t757 = load ptr, ptr %a1 - %t758 = load i64, ptr %a484 - %t759 = load %S.ast.Node, ptr %a2 - %t760 = load %S.ast.Type, ptr %a361 - %t761 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t760) +inrange7976: + %t699 = extractvalue { ptr, i64, i64 } %t696, 0 + %t700 = getelementptr inbounds %S.gen.FnSig, ptr %t699, i64 %t695 + %t701 = getelementptr inbounds %S.gen.FnSig, ptr %t700, i32 0, i32 10 + %t702 = load i1, ptr %t701 + br label %logic.from7977 +logic.from7977: + br i1 %t702, label %logic.rhs7978, label %logic.end7979 +logic.rhs7978: + %t703 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t704 = load { ptr, i64, i64 }, ptr %t703 + store { ptr, i64, i64 } %t704, ptr %a705 + store { ptr, i64, i64 } { ptr @.str.5260, i64 6, i64 0 }, ptr %a706 + %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) + %t708 = icmp ne i32 %t707, 0 + br label %logic.from7980 +logic.from7980: + br i1 %t708, label %logic.end7982, label %logic.rhs7981 +logic.rhs7981: + %t709 = getelementptr inbounds %S.ast.Type, ptr %a217, i32 0, i32 0 + %t710 = load { ptr, i64, i64 }, ptr %t709 + store { ptr, i64, i64 } %t710, ptr %a711 + store { ptr, i64, i64 } { ptr @.str.5261, i64 4, i64 0 }, ptr %a712 + %t713 = call i32 @finch_str_eq(ptr %a711, ptr %a712) + %t714 = icmp ne i32 %t713, 0 + br label %logic.rend7983 +logic.rend7983: + br label %logic.end7982 +logic.end7982: + %t715 = phi i1 [ true, %logic.from7980 ], [ %t714, %logic.rend7983 ] + br label %logic.rend7984 +logic.rend7984: + br label %logic.end7979 +logic.end7979: + %t716 = phi i1 [ false, %logic.from7977 ], [ %t715, %logic.rend7984 ] + br i1 %t716, label %then7985, label %endif7987 +then7985: + %t717 = getelementptr inbounds %S.gen.Ref, ptr %a210, i32 0, i32 0 + %t718 = load i1, ptr %t717 + %t719 = xor i1 %t718, true + br i1 %t719, label %then7988, label %endif7990 +then7988: + %t720 = load ptr, ptr %a1 + %t721 = load %S.ast.Node, ptr %a2 + %t722 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t723 = load { ptr, i64, i64 }, ptr %t722 + store { ptr, i64, i64 } %t723, ptr %a725 + store { ptr, i64, i64 } { ptr @.str.5262, i64 28, i64 0 }, ptr %a726 + call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) + %t727 = load { ptr, i64, i64 }, ptr %a724 + %t728 = load %S.ast.Type, ptr %a370 + %t729 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t728) + store { ptr, i64, i64 } %t727, ptr %a731 + store { ptr, i64, i64 } %t729, ptr %a732 + call void @finch_str_concat(ptr %a730, ptr %a731, ptr %a732) + %t733 = load { ptr, i64, i64 }, ptr %a730 + store { ptr, i64, i64 } %t733, ptr %a735 + store { ptr, i64, i64 } { ptr @.str.5263, i64 30, i64 0 }, ptr %a736 + call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) + %t737 = load { ptr, i64, i64 }, ptr %a734 + call void @finch.gen.fail(ptr %t720, %S.ast.Node %t721, { ptr, i64, i64 } %t737) + br label %endif7990 +endif7990: + %t738 = load %S.ast.Node, ptr %a13 + %t739 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t738) + store { ptr, i64, i64 } %t739, ptr %a740 + %t741 = getelementptr inbounds { ptr, i64, i64 }, ptr %a740, i32 0, i32 1 + %t742 = load i64, ptr %t741 + %t743 = icmp sgt i64 %t742, 0 + br i1 %t743, label %then7991, label %endif7993 +then7991: + %t744 = load ptr, ptr %a1 + %t745 = load { ptr, i64, i64 }, ptr %a740 + %t746 = call i64 @finch.gen.lookup(ptr %t744, { ptr, i64, i64 } %t745) + store i64 %t746, ptr %a747 + %t748 = load i64, ptr %a747 + %t749 = icmp sge i64 %t748, 0 + br label %logic.from7994 +logic.from7994: + br i1 %t749, label %logic.rhs7995, label %logic.end7996 +logic.rhs7995: + %t750 = load ptr, ptr %a1 + %t751 = load i64, ptr %a747 + %t752 = call %S.gen.Var @finch.gen.varAt(ptr %t750, i64 %t751) + %t753 = extractvalue %S.gen.Var %t752, 3 + br label %logic.rend7997 +logic.rend7997: + br label %logic.end7996 +logic.end7996: + %t754 = phi i1 [ false, %logic.from7994 ], [ %t753, %logic.rend7997 ] + br i1 %t754, label %then7998, label %endif8000 +then7998: + %t755 = load ptr, ptr %a1 + %t756 = load %S.ast.Node, ptr %a2 + %t757 = load { ptr, i64, i64 }, ptr %a740 + store { ptr, i64, i64 } { ptr @.str.5264, i64 19, i64 0 }, ptr %a759 + store { ptr, i64, i64 } %t757, ptr %a760 + call void @finch_str_concat(ptr %a758, ptr %a759, ptr %a760) + %t761 = load { ptr, i64, i64 }, ptr %a758 store { ptr, i64, i64 } %t761, ptr %a763 - store { ptr, i64, i64 } { ptr @.str.5008, i64 1, i64 0 }, ptr %a764 + store { ptr, i64, i64 } { ptr @.str.5265, i64 18, i64 0 }, ptr %a764 call void @finch_str_concat(ptr %a762, ptr %a763, ptr %a764) %t765 = load { ptr, i64, i64 }, ptr %a762 - %t766 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t767 = load { ptr, i64, i64 }, ptr %t766 - store { ptr, i64, i64 } %t765, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - %t771 = load { ptr, i64, i64 }, ptr %a768 - %t772 = load { ptr, i64, i64 }, ptr %a362 - %t773 = load %S.ast.Node, ptr %a13 - %t774 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t773) - %t775 = call %S.gen.Val @finch.gen.callFn(ptr %t757, i64 %t758, %S.ast.Node %t759, i64 1, { ptr, i64, i64 } %t771, { ptr, i64, i64 } %t772, { ptr, i64, i64 } %t774) - ret %S.gen.Val %t775 -endif7587: - %t776 = load ptr, ptr %a1 - %t777 = load %S.ast.Node, ptr %a2 - %t778 = load %S.ast.Type, ptr %a217 - %t779 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t778) - store { ptr, i64, i64 } %t779, ptr %a781 - store { ptr, i64, i64 } { ptr @.str.5009, i64 15, i64 0 }, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a780 - call void @finch.gen.fail(ptr %t776, %S.ast.Node %t777, { ptr, i64, i64 } %t783) + call void @finch.gen.fail(ptr %t755, %S.ast.Node %t756, { ptr, i64, i64 } %t765) + br label %endif8000 +endif8000: + br label %endif7993 +endif7993: + br label %endif7987 +endif7987: + %t766 = load ptr, ptr %a1 + %t767 = load i64, ptr %a493 + %t768 = load %S.ast.Node, ptr %a2 + %t769 = load %S.ast.Type, ptr %a370 + %t770 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t769) + store { ptr, i64, i64 } %t770, ptr %a772 + store { ptr, i64, i64 } { ptr @.str.5266, i64 1, i64 0 }, ptr %a773 + call void @finch_str_concat(ptr %a771, ptr %a772, ptr %a773) + %t774 = load { ptr, i64, i64 }, ptr %a771 + %t775 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 + %t776 = load { ptr, i64, i64 }, ptr %t775 + store { ptr, i64, i64 } %t774, ptr %a778 + store { ptr, i64, i64 } %t776, ptr %a779 + call void @finch_str_concat(ptr %a777, ptr %a778, ptr %a779) + %t780 = load { ptr, i64, i64 }, ptr %a777 + %t781 = load { ptr, i64, i64 }, ptr %a371 + %t782 = load %S.ast.Node, ptr %a13 + %t783 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t782) + %t784 = call %S.gen.Val @finch.gen.callFn(ptr %t766, i64 %t767, %S.ast.Node %t768, i64 1, { ptr, i64, i64 } %t780, { ptr, i64, i64 } %t781, { ptr, i64, i64 } %t783) + ret %S.gen.Val %t784 +endif7928: + %t785 = load ptr, ptr %a1 + %t786 = load %S.ast.Node, ptr %a2 + %t787 = load %S.ast.Type, ptr %a217 + %t788 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t787) + store { ptr, i64, i64 } %t788, ptr %a790 + store { ptr, i64, i64 } { ptr @.str.5267, i64 15, i64 0 }, ptr %a791 + call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) + %t792 = load { ptr, i64, i64 }, ptr %a789 + call void @finch.gen.fail(ptr %t785, %S.ast.Node %t786, { ptr, i64, i64 } %t792) ret %S.gen.Val zeroinitializer } @@ -68103,11 +72481,11 @@ entry: %t6 = load { ptr, i64, i64 }, ptr %t5 %t7 = extractvalue { ptr, i64, i64 } %t6, 1 %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range7660, label %inrange7661 -range7660: - call void @finch_panic_index(ptr @.str.5010, i64 4615, i64 0, i64 %t7) + br i1 %t8, label %range8001, label %inrange8002 +range8001: + call void @finch_panic_index(ptr @.str.5268, i64 4779, i64 0, i64 %t7) unreachable -inrange7661: +inrange8002: %t9 = extractvalue { ptr, i64, i64 } %t6, 0 %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 %t11 = load %S.ast.Type, ptr %t10 @@ -68127,23 +72505,23 @@ inrange7661: store { ptr, i64, i64 } %t24, ptr %a25 %t26 = load ptr, ptr %a1 %t27 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5011, i64 46, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5269, i64 46, i64 0 }, ptr %a29 store { ptr, i64, i64 } %t27, ptr %a30 call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) %t31 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t31, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5012, i64 14, i64 0 }, ptr %a34 + store { ptr, i64, i64 } { ptr @.str.5270, i64 14, i64 0 }, ptr %a34 call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) %t35 = load { ptr, i64, i64 }, ptr %a32 %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t35) store { ptr, i64, i64 } %t36, ptr %a37 %t38 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5013, i64 4, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5271, i64 4, i64 0 }, ptr %a40 %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) %t42 = icmp ne i32 %t41, 0 - br i1 %t42, label %then7662, label %endif7664 -then7662: + br i1 %t42, label %then8003, label %endif8005 +then8003: %t43 = load ptr, ptr %a1 %t44 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t43, %S.ast.Node %t44, i64 1) @@ -68154,11 +72532,11 @@ then7662: %t49 = load { ptr, i64, i64 }, ptr %t48 %t50 = extractvalue { ptr, i64, i64 } %t49, 1 %t51 = icmp uge i64 1, %t50 - br i1 %t51, label %range7665, label %inrange7666 -range7665: - call void @finch_panic_index(ptr @.str.5014, i64 4621, i64 1, i64 %t50) + br i1 %t51, label %range8006, label %inrange8007 +range8006: + call void @finch_panic_index(ptr @.str.5272, i64 4785, i64 1, i64 %t50) unreachable -inrange7666: +inrange8007: %t52 = extractvalue { ptr, i64, i64 } %t49, 0 %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 1 %t54 = load %S.ast.Node, ptr %t53 @@ -68169,41 +72547,41 @@ inrange7666: %t59 = load { ptr, i64, i64 }, ptr %t58 %t60 = extractvalue { ptr, i64, i64 } %t59, 1 %t61 = icmp uge i64 1, %t60 - br i1 %t61, label %range7667, label %inrange7668 -range7667: - call void @finch_panic_index(ptr @.str.5015, i64 4621, i64 1, i64 %t60) + br i1 %t61, label %range8008, label %inrange8009 +range8008: + call void @finch_panic_index(ptr @.str.5273, i64 4785, i64 1, i64 %t60) unreachable -inrange7668: +inrange8009: %t62 = extractvalue { ptr, i64, i64 } %t59, 0 %t63 = getelementptr inbounds %S.ast.Node, ptr %t62, i64 1 %t64 = load %S.ast.Node, ptr %t63 - %t65 = call %S.gen.Val @finch.gen.coerce(ptr %t46, %S.gen.Val %t56, %S.ast.Type %t57, %S.ast.Node %t64, { ptr, i64, i64 } { ptr @.str.5016, i64 11, i64 0 }) + %t65 = call %S.gen.Val @finch.gen.coerce(ptr %t46, %S.gen.Val %t56, %S.ast.Type %t57, %S.ast.Node %t64, { ptr, i64, i64 } { ptr @.str.5274, i64 11, i64 0 }) %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t45, %S.gen.Val %t65) store { ptr, i64, i64 } %t66, ptr %a67 %t68 = load ptr, ptr %a1 %t69 = load { ptr, i64, i64 }, ptr %a37 - %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.5017, i64 3, i64 0 }, { ptr, i64, i64 } %t69) + %t70 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.5275, i64 3, i64 0 }, { ptr, i64, i64 } %t69) store { ptr, i64, i64 } %t70, ptr %a71 %t72 = load ptr, ptr %a1 %t73 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5018, i64 8, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.5276, i64 8, i64 0 }, ptr %a75 store { ptr, i64, i64 } %t73, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.5019, i64 3, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.5277, i64 3, i64 0 }, ptr %a80 call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) %t81 = load { ptr, i64, i64 }, ptr %a78 %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t72, { ptr, i64, i64 } %t81) store { ptr, i64, i64 } %t82, ptr %a83 %t84 = load ptr, ptr %a1 %t85 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5020, i64 33, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.5278, i64 33, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.5021, i64 6, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.5279, i64 6, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 %t94 = load { ptr, i64, i64 }, ptr %a83 @@ -68212,7 +72590,7 @@ inrange7668: call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) %t98 = load { ptr, i64, i64 }, ptr %a95 store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.5022, i64 6, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.5280, i64 6, i64 0 }, ptr %a101 call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 %t103 = load ptr, ptr %a1 @@ -68223,25 +72601,25 @@ inrange7668: call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) %t109 = load { ptr, i64, i64 }, ptr %a106 store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5023, i64 1, i64 0 }, ptr %a112 + store { ptr, i64, i64 } { ptr @.str.5281, i64 1, i64 0 }, ptr %a112 call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) %t113 = load { ptr, i64, i64 }, ptr %a110 call void @finch.gen.emit(ptr %t84, { ptr, i64, i64 } %t113) %t114 = load ptr, ptr %a1 %t115 = load { ptr, i64, i64 }, ptr %a3 - %t116 = call { ptr, i64, i64 } @finch.gen.load(ptr %t114, { ptr, i64, i64 } { ptr @.str.5024, i64 3, i64 0 }, { ptr, i64, i64 } %t115) + %t116 = call { ptr, i64, i64 } @finch.gen.load(ptr %t114, { ptr, i64, i64 } { ptr @.str.5282, i64 3, i64 0 }, { ptr, i64, i64 } %t115) store { ptr, i64, i64 } %t116, ptr %a117 %t118 = load ptr, ptr %a1 %t119 = load { ptr, i64, i64 }, ptr %a19 %t120 = load { ptr, i64, i64 }, ptr %a67 %t121 = load ptr, ptr %a1 %t122 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5025, i64 23, i64 0 }, ptr %a124 + store { ptr, i64, i64 } { ptr @.str.5283, i64 23, i64 0 }, ptr %a124 store { ptr, i64, i64 } %t122, ptr %a125 call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) %t126 = load { ptr, i64, i64 }, ptr %a123 store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5026, i64 6, i64 0 }, ptr %a129 + store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a129 call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) %t130 = load { ptr, i64, i64 }, ptr %a127 %t131 = load { ptr, i64, i64 }, ptr %a117 @@ -68250,7 +72628,7 @@ inrange7668: call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5027, i64 6, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 %t140 = load { ptr, i64, i64 }, ptr %a71 @@ -68263,65 +72641,65 @@ inrange7668: %t146 = load ptr, ptr %a1 %t147 = load { ptr, i64, i64 }, ptr %a83 %t148 = load { ptr, i64, i64 }, ptr %a37 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.5028, i64 3, i64 0 }, { ptr, i64, i64 } %t147, { ptr, i64, i64 } %t148) - %t149 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5029, i64 4, i64 0 }) + call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.5286, i64 3, i64 0 }, { ptr, i64, i64 } %t147, { ptr, i64, i64 } %t148) + %t149 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5287, i64 4, i64 0 }) %t150 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t149, 1 ret %S.gen.Val %t150 -endif7664: +endif8005: %t151 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5030, i64 3, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a153 %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) %t155 = icmp ne i32 %t154, 0 - br i1 %t155, label %then7669, label %endif7671 -then7669: + br i1 %t155, label %then8010, label %endif8012 +then8010: %t156 = load ptr, ptr %a1 %t157 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t156, %S.ast.Node %t157, i64 0) %t158 = load ptr, ptr %a1 %t159 = load { ptr, i64, i64 }, ptr %a37 - %t160 = call { ptr, i64, i64 } @finch.gen.load(ptr %t158, { ptr, i64, i64 } { ptr @.str.5031, i64 3, i64 0 }, { ptr, i64, i64 } %t159) + %t160 = call { ptr, i64, i64 } @finch.gen.load(ptr %t158, { ptr, i64, i64 } { ptr @.str.5289, i64 3, i64 0 }, { ptr, i64, i64 } %t159) store { ptr, i64, i64 } %t160, ptr %a161 %t162 = load ptr, ptr %a1 %t163 = load ptr, ptr %a1 %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.5032, i64 12, i64 0 }, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.5290, i64 12, i64 0 }, ptr %a166 store { ptr, i64, i64 } %t164, ptr %a167 call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) %t168 = load { ptr, i64, i64 }, ptr %a165 store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5033, i64 3, i64 0 }, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.5291, i64 3, i64 0 }, ptr %a171 call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) %t172 = load { ptr, i64, i64 }, ptr %a169 %t173 = call { ptr, i64, i64 } @finch.gen.op(ptr %t163, { ptr, i64, i64 } %t172) %t174 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t162, { ptr, i64, i64 } %t173, { ptr, i64, i64 } { ptr @.str.5034, i64 23, i64 0 }, %S.ast.Node %t174) + call void @finch.gen.panicIf(ptr %t162, { ptr, i64, i64 } %t173, { ptr, i64, i64 } { ptr @.str.5292, i64 23, i64 0 }, %S.ast.Node %t174) %t175 = load ptr, ptr %a1 %t176 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.5035, i64 8, i64 0 }, ptr %a178 + store { ptr, i64, i64 } { ptr @.str.5293, i64 8, i64 0 }, ptr %a178 store { ptr, i64, i64 } %t176, ptr %a179 call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) %t180 = load { ptr, i64, i64 }, ptr %a177 store { ptr, i64, i64 } %t180, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.5036, i64 3, i64 0 }, ptr %a183 + store { ptr, i64, i64 } { ptr @.str.5294, i64 3, i64 0 }, ptr %a183 call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) %t184 = load { ptr, i64, i64 }, ptr %a181 %t185 = call { ptr, i64, i64 } @finch.gen.op(ptr %t175, { ptr, i64, i64 } %t184) store { ptr, i64, i64 } %t185, ptr %a186 %t187 = load ptr, ptr %a1 %t188 = load { ptr, i64, i64 }, ptr %a3 - %t189 = call { ptr, i64, i64 } @finch.gen.load(ptr %t187, { ptr, i64, i64 } { ptr @.str.5037, i64 3, i64 0 }, { ptr, i64, i64 } %t188) + %t189 = call { ptr, i64, i64 } @finch.gen.load(ptr %t187, { ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }, { ptr, i64, i64 } %t188) store { ptr, i64, i64 } %t189, ptr %a190 %t191 = load ptr, ptr %a1 %t192 = load { ptr, i64, i64 }, ptr %a19 %t193 = load ptr, ptr %a1 %t194 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5038, i64 23, i64 0 }, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.5296, i64 23, i64 0 }, ptr %a196 store { ptr, i64, i64 } %t194, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5039, i64 6, i64 0 }, ptr %a201 + store { ptr, i64, i64 } { ptr @.str.5297, i64 6, i64 0 }, ptr %a201 call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) %t202 = load { ptr, i64, i64 }, ptr %a199 %t203 = load { ptr, i64, i64 }, ptr %a190 @@ -68330,7 +72708,7 @@ then7669: call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5040, i64 6, i64 0 }, ptr %a210 + store { ptr, i64, i64 } { ptr @.str.5298, i64 6, i64 0 }, ptr %a210 call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) %t211 = load { ptr, i64, i64 }, ptr %a208 %t212 = load { ptr, i64, i64 }, ptr %a186 @@ -68344,7 +72722,7 @@ then7669: %t220 = load ptr, ptr %a1 %t221 = load { ptr, i64, i64 }, ptr %a186 %t222 = load { ptr, i64, i64 }, ptr %a37 - call void @finch.gen.store(ptr %t220, { ptr, i64, i64 } { ptr @.str.5041, i64 3, i64 0 }, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222) + call void @finch.gen.store(ptr %t220, { ptr, i64, i64 } { ptr @.str.5299, i64 3, i64 0 }, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222) %t223 = load { ptr, i64, i64 }, ptr %a219 store { ptr, i64, i64 } %t223, ptr %a224 call void @finch_str_copy(ptr %a225, ptr %a224) @@ -68360,45 +72738,45 @@ then7669: %t235 = call i1 @finch.gen.owning(ptr %t233, %S.ast.Type %t234) %t236 = insertvalue %S.gen.Val %t232, i1 %t235, 2 ret %S.gen.Val %t236 -endif7671: +endif8012: %t237 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t237, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5042, i64 5, i64 0 }, ptr %a239 + store { ptr, i64, i64 } { ptr @.str.5300, i64 5, i64 0 }, ptr %a239 %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) %t241 = icmp ne i32 %t240, 0 - br i1 %t241, label %then7672, label %endif7674 -then7672: + br i1 %t241, label %then8013, label %endif8015 +then8013: %t242 = load ptr, ptr %a1 %t243 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t242, %S.ast.Node %t243, i64 0) %t244 = load ptr, ptr %a1 %t245 = load { ptr, i64, i64 }, ptr %a37 - call void @finch.gen.store(ptr %t244, { ptr, i64, i64 } { ptr @.str.5043, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5044, i64 1, i64 0 }, { ptr, i64, i64 } %t245) - %t246 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5045, i64 4, i64 0 }) + call void @finch.gen.store(ptr %t244, { ptr, i64, i64 } { ptr @.str.5301, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5302, i64 1, i64 0 }, { ptr, i64, i64 } %t245) + %t246 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5303, i64 4, i64 0 }) %t247 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t246, 1 ret %S.gen.Val %t247 -endif7674: +endif8015: %t248 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.5046, i64 4, i64 0 }, ptr %a250 + store { ptr, i64, i64 } { ptr @.str.5304, i64 4, i64 0 }, ptr %a250 %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) %t252 = icmp ne i32 %t251, 0 - br label %logic.from7675 -logic.from7675: - br i1 %t252, label %logic.end7677, label %logic.rhs7676 -logic.rhs7676: + br label %logic.from8016 +logic.from8016: + br i1 %t252, label %logic.end8018, label %logic.rhs8017 +logic.rhs8017: %t253 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.5047, i64 8, i64 0 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.5305, i64 8, i64 0 }, ptr %a255 %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) %t257 = icmp ne i32 %t256, 0 - br label %logic.rend7678 -logic.rend7678: - br label %logic.end7677 -logic.end7677: - %t258 = phi i1 [ true, %logic.from7675 ], [ %t257, %logic.rend7678 ] - br i1 %t258, label %then7679, label %endif7681 -then7679: + br label %logic.rend8019 +logic.rend8019: + br label %logic.end8018 +logic.end8018: + %t258 = phi i1 [ true, %logic.from8016 ], [ %t257, %logic.rend8019 ] + br i1 %t258, label %then8020, label %endif8022 +then8020: %t259 = load ptr, ptr %a1 %t260 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t259, %S.ast.Node %t260, i64 1) @@ -68408,11 +72786,11 @@ then7679: %t264 = load { ptr, i64, i64 }, ptr %t263 %t265 = extractvalue { ptr, i64, i64 } %t264, 1 %t266 = icmp uge i64 1, %t265 - br i1 %t266, label %range7682, label %inrange7683 -range7682: - call void @finch_panic_index(ptr @.str.5048, i64 4647, i64 1, i64 %t265) + br i1 %t266, label %range8023, label %inrange8024 +range8023: + call void @finch_panic_index(ptr @.str.5306, i64 4811, i64 1, i64 %t265) unreachable -inrange7683: +inrange8024: %t267 = extractvalue { ptr, i64, i64 } %t264, 0 %t268 = getelementptr inbounds %S.ast.Node, ptr %t267, i64 1 %t269 = load %S.ast.Node, ptr %t268 @@ -68423,50 +72801,50 @@ inrange7683: %t274 = load { ptr, i64, i64 }, ptr %t273 %t275 = extractvalue { ptr, i64, i64 } %t274, 1 %t276 = icmp uge i64 1, %t275 - br i1 %t276, label %range7684, label %inrange7685 -range7684: - call void @finch_panic_index(ptr @.str.5049, i64 4647, i64 1, i64 %t275) + br i1 %t276, label %range8025, label %inrange8026 +range8025: + call void @finch_panic_index(ptr @.str.5307, i64 4811, i64 1, i64 %t275) unreachable -inrange7685: +inrange8026: %t277 = extractvalue { ptr, i64, i64 } %t274, 0 %t278 = getelementptr inbounds %S.ast.Node, ptr %t277, i64 1 %t279 = load %S.ast.Node, ptr %t278 - %t280 = call %S.gen.Val @finch.gen.coerce(ptr %t261, %S.gen.Val %t271, %S.ast.Type %t272, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.5050, i64 21, i64 0 }) + %t280 = call %S.gen.Val @finch.gen.coerce(ptr %t261, %S.gen.Val %t271, %S.ast.Type %t272, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.5308, i64 21, i64 0 }) store %S.gen.Val %t280, ptr %a281 %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.5051, i64 3, i64 0 }) + %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.5309, i64 3, i64 0 }) store { ptr, i64, i64 } %t283, ptr %a284 %t285 = load ptr, ptr %a1 %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.5052, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5053, i64 2, i64 0 }, { ptr, i64, i64 } %t286) + call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.5310, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5311, i64 2, i64 0 }, { ptr, i64, i64 } %t286) %t287 = load ptr, ptr %a1 %t288 = load { ptr, i64, i64 }, ptr %a37 - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t287, { ptr, i64, i64 } { ptr @.str.5054, i64 3, i64 0 }, { ptr, i64, i64 } %t288) + %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t287, { ptr, i64, i64 } { ptr @.str.5312, i64 3, i64 0 }, { ptr, i64, i64 } %t288) store { ptr, i64, i64 } %t289, ptr %a290 %t291 = load ptr, ptr %a1 %t292 = load { ptr, i64, i64 }, ptr %a3 - %t293 = call { ptr, i64, i64 } @finch.gen.load(ptr %t291, { ptr, i64, i64 } { ptr @.str.5055, i64 3, i64 0 }, { ptr, i64, i64 } %t292) + %t293 = call { ptr, i64, i64 } @finch.gen.load(ptr %t291, { ptr, i64, i64 } { ptr @.str.5313, i64 3, i64 0 }, { ptr, i64, i64 } %t292) store { ptr, i64, i64 } %t293, ptr %a294 %t295 = load ptr, ptr %a1 - %t296 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t295, { ptr, i64, i64 } { ptr @.str.5056, i64 3, i64 0 }) + %t296 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t295, { ptr, i64, i64 } { ptr @.str.5314, i64 3, i64 0 }) store { ptr, i64, i64 } %t296, ptr %a297 %t298 = load ptr, ptr %a1 %t299 = load { ptr, i64, i64 }, ptr %a297 - call void @finch.gen.store(ptr %t298, { ptr, i64, i64 } { ptr @.str.5057, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5058, i64 1, i64 0 }, { ptr, i64, i64 } %t299) + call void @finch.gen.store(ptr %t298, { ptr, i64, i64 } { ptr @.str.5315, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5316, i64 1, i64 0 }, { ptr, i64, i64 } %t299) %t300 = load ptr, ptr %a1 - %t301 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t300, { ptr, i64, i64 } { ptr @.str.5059, i64 9, i64 0 }) + %t301 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t300, { ptr, i64, i64 } { ptr @.str.5317, i64 9, i64 0 }) store { ptr, i64, i64 } %t301, ptr %a302 %t303 = load ptr, ptr %a1 - %t304 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t303, { ptr, i64, i64 } { ptr @.str.5060, i64 9, i64 0 }) + %t304 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t303, { ptr, i64, i64 } { ptr @.str.5318, i64 9, i64 0 }) store { ptr, i64, i64 } %t304, ptr %a305 %t306 = load ptr, ptr %a1 - %t307 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t306, { ptr, i64, i64 } { ptr @.str.5061, i64 8, i64 0 }) + %t307 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t306, { ptr, i64, i64 } { ptr @.str.5319, i64 8, i64 0 }) store { ptr, i64, i64 } %t307, ptr %a308 %t309 = load ptr, ptr %a1 - %t310 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t309, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) + %t310 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t309, { ptr, i64, i64 } { ptr @.str.5320, i64 9, i64 0 }) store { ptr, i64, i64 } %t310, ptr %a311 %t312 = load ptr, ptr %a1 - %t313 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t312, { ptr, i64, i64 } { ptr @.str.5063, i64 8, i64 0 }) + %t313 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t312, { ptr, i64, i64 } { ptr @.str.5321, i64 8, i64 0 }) store { ptr, i64, i64 } %t313, ptr %a314 %t315 = load ptr, ptr %a1 %t316 = load { ptr, i64, i64 }, ptr %a302 @@ -68476,16 +72854,16 @@ inrange7685: call void @finch.gen.label(ptr %t317, { ptr, i64, i64 } %t318) %t319 = load ptr, ptr %a1 %t320 = load { ptr, i64, i64 }, ptr %a297 - %t321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t319, { ptr, i64, i64 } { ptr @.str.5064, i64 3, i64 0 }, { ptr, i64, i64 } %t320) + %t321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t319, { ptr, i64, i64 } { ptr @.str.5322, i64 3, i64 0 }, { ptr, i64, i64 } %t320) store { ptr, i64, i64 } %t321, ptr %a322 %t323 = load ptr, ptr %a1 %t324 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.5065, i64 13, i64 0 }, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.5323, i64 13, i64 0 }, ptr %a326 store { ptr, i64, i64 } %t324, ptr %a327 call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) %t328 = load { ptr, i64, i64 }, ptr %a325 store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.5066, i64 2, i64 0 }, ptr %a331 + store { ptr, i64, i64 } { ptr @.str.5324, i64 2, i64 0 }, ptr %a331 call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) %t332 = load { ptr, i64, i64 }, ptr %a329 %t333 = load { ptr, i64, i64 }, ptr %a290 @@ -68507,12 +72885,12 @@ inrange7685: %t347 = load { ptr, i64, i64 }, ptr %a19 %t348 = load ptr, ptr %a1 %t349 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5067, i64 23, i64 0 }, ptr %a351 + store { ptr, i64, i64 } { ptr @.str.5325, i64 23, i64 0 }, ptr %a351 store { ptr, i64, i64 } %t349, ptr %a352 call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) %t353 = load { ptr, i64, i64 }, ptr %a350 store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.5068, i64 6, i64 0 }, ptr %a356 + store { ptr, i64, i64 } { ptr @.str.5326, i64 6, i64 0 }, ptr %a356 call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) %t357 = load { ptr, i64, i64 }, ptr %a354 %t358 = load { ptr, i64, i64 }, ptr %a294 @@ -68521,7 +72899,7 @@ inrange7685: call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) %t362 = load { ptr, i64, i64 }, ptr %a359 store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5069, i64 6, i64 0 }, ptr %a365 + store { ptr, i64, i64 } { ptr @.str.5327, i64 6, i64 0 }, ptr %a365 call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) %t366 = load { ptr, i64, i64 }, ptr %a363 %t367 = load { ptr, i64, i64 }, ptr %a322 @@ -68542,7 +72920,7 @@ inrange7685: %t382 = load %S.gen.Val, ptr %a380 %t383 = load %S.gen.Val, ptr %a281 %t384 = load %S.ast.Node, ptr %a2 - %t385 = call %S.gen.Val @finch.gen.compare(ptr %t381, { ptr, i64, i64 } { ptr @.str.5070, i64 2, i64 0 }, %S.gen.Val %t382, %S.gen.Val %t383, %S.ast.Node %t384) + %t385 = call %S.gen.Val @finch.gen.compare(ptr %t381, { ptr, i64, i64 } { ptr @.str.5328, i64 2, i64 0 }, %S.gen.Val %t382, %S.gen.Val %t383, %S.ast.Node %t384) %t386 = extractvalue %S.gen.Val %t385, 0 store { ptr, i64, i64 } %t386, ptr %a387 call void @finch_str_copy(ptr %a388, ptr %a387) @@ -68559,7 +72937,7 @@ inrange7685: %t397 = load ptr, ptr %a1 %t398 = load { ptr, i64, i64 }, ptr %a322 %t399 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t397, { ptr, i64, i64 } { ptr @.str.5071, i64 3, i64 0 }, { ptr, i64, i64 } %t398, { ptr, i64, i64 } %t399) + call void @finch.gen.store(ptr %t397, { ptr, i64, i64 } { ptr @.str.5329, i64 3, i64 0 }, { ptr, i64, i64 } %t398, { ptr, i64, i64 } %t399) %t400 = load ptr, ptr %a1 %t401 = load { ptr, i64, i64 }, ptr %a314 call void @finch.gen.br(ptr %t400, { ptr, i64, i64 } %t401) @@ -68569,17 +72947,17 @@ inrange7685: %t404 = load ptr, ptr %a1 %t405 = load ptr, ptr %a1 %t406 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.5073, i64 8, i64 0 }, ptr %a408 + store { ptr, i64, i64 } { ptr @.str.5331, i64 8, i64 0 }, ptr %a408 store { ptr, i64, i64 } %t406, ptr %a409 call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) %t410 = load { ptr, i64, i64 }, ptr %a407 store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5074, i64 3, i64 0 }, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.5332, i64 3, i64 0 }, ptr %a413 call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) %t414 = load { ptr, i64, i64 }, ptr %a411 %t415 = call { ptr, i64, i64 } @finch.gen.op(ptr %t405, { ptr, i64, i64 } %t414) %t416 = load { ptr, i64, i64 }, ptr %a297 - call void @finch.gen.store(ptr %t404, { ptr, i64, i64 } { ptr @.str.5072, i64 3, i64 0 }, { ptr, i64, i64 } %t415, { ptr, i64, i64 } %t416) + call void @finch.gen.store(ptr %t404, { ptr, i64, i64 } { ptr @.str.5330, i64 3, i64 0 }, { ptr, i64, i64 } %t415, { ptr, i64, i64 } %t416) %t417 = load ptr, ptr %a1 %t418 = load { ptr, i64, i64 }, ptr %a302 call void @finch.gen.br(ptr %t417, { ptr, i64, i64 } %t418) @@ -68588,78 +72966,78 @@ inrange7685: call void @finch.gen.label(ptr %t419, { ptr, i64, i64 } %t420) %t421 = load ptr, ptr %a1 %t422 = load { ptr, i64, i64 }, ptr %a284 - %t423 = call { ptr, i64, i64 } @finch.gen.load(ptr %t421, { ptr, i64, i64 } { ptr @.str.5075, i64 3, i64 0 }, { ptr, i64, i64 } %t422) + %t423 = call { ptr, i64, i64 } @finch.gen.load(ptr %t421, { ptr, i64, i64 } { ptr @.str.5333, i64 3, i64 0 }, { ptr, i64, i64 } %t422) store { ptr, i64, i64 } %t423, ptr %a424 %t425 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.5076, i64 4, i64 0 }, ptr %a427 + store { ptr, i64, i64 } { ptr @.str.5334, i64 4, i64 0 }, ptr %a427 %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) %t429 = icmp ne i32 %t428, 0 - br i1 %t429, label %then7686, label %endif7688 -then7686: + br i1 %t429, label %then8027, label %endif8029 +then8027: %t430 = load { ptr, i64, i64 }, ptr %a424 store { ptr, i64, i64 } %t430, ptr %a431 call void @finch_str_copy(ptr %a432, ptr %a431) %t433 = load { ptr, i64, i64 }, ptr %a432 %t434 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t433, 0 - %t435 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5077, i64 3, i64 0 }) + %t435 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 3, i64 0 }) %t436 = insertvalue %S.gen.Val %t434, %S.ast.Type %t435, 1 ret %S.gen.Val %t436 -endif7688: +endif8029: %t437 = load ptr, ptr %a1 %t438 = load { ptr, i64, i64 }, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5078, i64 13, i64 0 }, ptr %a440 + store { ptr, i64, i64 } { ptr @.str.5336, i64 13, i64 0 }, ptr %a440 store { ptr, i64, i64 } %t438, ptr %a441 call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) %t442 = load { ptr, i64, i64 }, ptr %a439 store { ptr, i64, i64 } %t442, ptr %a444 - store { ptr, i64, i64 } { ptr @.str.5079, i64 3, i64 0 }, ptr %a445 + store { ptr, i64, i64 } { ptr @.str.5337, i64 3, i64 0 }, ptr %a445 call void @finch_str_concat(ptr %a443, ptr %a444, ptr %a445) %t446 = load { ptr, i64, i64 }, ptr %a443 %t447 = call { ptr, i64, i64 } @finch.gen.op(ptr %t437, { ptr, i64, i64 } %t446) %t448 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t447, 0 - %t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5080, i64 4, i64 0 }) + %t449 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5338, i64 4, i64 0 }) %t450 = insertvalue %S.gen.Val %t448, %S.ast.Type %t449, 1 ret %S.gen.Val %t450 -endif7681: +endif8022: %t451 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t451, ptr %a452 - store { ptr, i64, i64 } { ptr @.str.5081, i64 4, i64 0 }, ptr %a453 + store { ptr, i64, i64 } { ptr @.str.5339, i64 4, i64 0 }, ptr %a453 %t454 = call i32 @finch_str_eq(ptr %a452, ptr %a453) %t455 = icmp ne i32 %t454, 0 - br i1 %t455, label %then7689, label %endif7691 -then7689: + br i1 %t455, label %then8030, label %endif8032 +then8030: %t456 = load ptr, ptr %a1 %t457 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t456, %S.ast.Node %t457, i64 1) %t458 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 %t459 = load { ptr, i64, i64 }, ptr %t458 store { ptr, i64, i64 } %t459, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.5082, i64 3, i64 0 }, ptr %a461 + store { ptr, i64, i64 } { ptr @.str.5340, i64 3, i64 0 }, ptr %a461 %t462 = call i32 @finch_str_eq(ptr %a460, ptr %a461) %t463 = icmp eq i32 %t462, 0 - br i1 %t463, label %then7692, label %endif7694 -then7692: + br i1 %t463, label %then8033, label %endif8035 +then8033: %t464 = load ptr, ptr %a1 %t465 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t464, %S.ast.Node %t465, { ptr, i64, i64 } { ptr @.str.5083, i64 31, i64 0 }) - br label %endif7694 -endif7694: + call void @finch.gen.fail(ptr %t464, %S.ast.Node %t465, { ptr, i64, i64 } { ptr @.str.5341, i64 31, i64 0 }) + br label %endif8035 +endif8035: %t466 = load ptr, ptr %a1 %t467 = load ptr, ptr %a1 %t468 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t469 = load { ptr, i64, i64 }, ptr %t468 %t470 = extractvalue { ptr, i64, i64 } %t469, 1 %t471 = icmp uge i64 1, %t470 - br i1 %t471, label %range7695, label %inrange7696 -range7695: - call void @finch_panic_index(ptr @.str.5084, i64 4686, i64 1, i64 %t470) + br i1 %t471, label %range8036, label %inrange8037 +range8036: + call void @finch_panic_index(ptr @.str.5342, i64 4850, i64 1, i64 %t470) unreachable -inrange7696: +inrange8037: %t472 = extractvalue { ptr, i64, i64 } %t469, 0 %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 1 %t474 = load %S.ast.Node, ptr %t473 - %t475 = call %S.gen.Val @finch.gen.strArg(ptr %t467, %S.ast.Node %t474, { ptr, i64, i64 } { ptr @.str.5085, i64 13, i64 0 }) + %t475 = call %S.gen.Val @finch.gen.strArg(ptr %t467, %S.ast.Node %t474, { ptr, i64, i64 } { ptr @.str.5343, i64 13, i64 0 }) %t476 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t466, %S.gen.Val %t475) store { ptr, i64, i64 } %t476, ptr %a477 %t478 = load ptr, ptr %a1 @@ -68667,12 +73045,12 @@ inrange7696: store { ptr, i64, i64 } %t479, ptr %a480 %t481 = load ptr, ptr %a1 %t482 = load { ptr, i64, i64 }, ptr %a480 - store { ptr, i64, i64 } { ptr @.str.5086, i64 30, i64 0 }, ptr %a484 + store { ptr, i64, i64 } { ptr @.str.5344, i64 30, i64 0 }, ptr %a484 store { ptr, i64, i64 } %t482, ptr %a485 call void @finch_str_concat(ptr %a483, ptr %a484, ptr %a485) %t486 = load { ptr, i64, i64 }, ptr %a483 store { ptr, i64, i64 } %t486, ptr %a488 - store { ptr, i64, i64 } { ptr @.str.5087, i64 6, i64 0 }, ptr %a489 + store { ptr, i64, i64 } { ptr @.str.5345, i64 6, i64 0 }, ptr %a489 call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) %t490 = load { ptr, i64, i64 }, ptr %a487 %t491 = load { ptr, i64, i64 }, ptr %a3 @@ -68681,7 +73059,7 @@ inrange7696: call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) %t495 = load { ptr, i64, i64 }, ptr %a492 store { ptr, i64, i64 } %t495, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5088, i64 6, i64 0 }, ptr %a498 + store { ptr, i64, i64 } { ptr @.str.5346, i64 6, i64 0 }, ptr %a498 call void @finch_str_concat(ptr %a496, ptr %a497, ptr %a498) %t499 = load { ptr, i64, i64 }, ptr %a496 %t500 = load { ptr, i64, i64 }, ptr %a477 @@ -68690,26 +73068,26 @@ inrange7696: call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) %t504 = load { ptr, i64, i64 }, ptr %a501 store { ptr, i64, i64 } %t504, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.5089, i64 1, i64 0 }, ptr %a507 + store { ptr, i64, i64 } { ptr @.str.5347, i64 1, i64 0 }, ptr %a507 call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507) %t508 = load { ptr, i64, i64 }, ptr %a505 call void @finch.gen.emit(ptr %t481, { ptr, i64, i64 } %t508) %t509 = load ptr, ptr %a1 %t510 = load { ptr, i64, i64 }, ptr %a480 - %t511 = call { ptr, i64, i64 } @finch.gen.load(ptr %t509, { ptr, i64, i64 } { ptr @.str.5090, i64 17, i64 0 }, { ptr, i64, i64 } %t510) + %t511 = call { ptr, i64, i64 } @finch.gen.load(ptr %t509, { ptr, i64, i64 } { ptr @.str.5348, i64 17, i64 0 }, { ptr, i64, i64 } %t510) %t512 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t513 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) + %t513 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5349, i64 3, i64 0 }) %t514 = insertvalue %S.gen.Val %t512, %S.ast.Type %t513, 1 %t515 = insertvalue %S.gen.Val %t514, i1 true, 2 ret %S.gen.Val %t515 -endif7691: +endif8032: %t516 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t516, ptr %a517 - store { ptr, i64, i64 } { ptr @.str.5092, i64 6, i64 0 }, ptr %a518 + store { ptr, i64, i64 } { ptr @.str.5350, i64 6, i64 0 }, ptr %a518 %t519 = call i32 @finch_str_eq(ptr %a517, ptr %a518) %t520 = icmp ne i32 %t519, 0 - br i1 %t520, label %then7697, label %endif7699 -then7697: + br i1 %t520, label %then8038, label %endif8040 +then8038: %t521 = load ptr, ptr %a1 %t522 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t521, %S.ast.Node %t522, i64 2) @@ -68719,29 +73097,29 @@ then7697: %t526 = load { ptr, i64, i64 }, ptr %t525 %t527 = extractvalue { ptr, i64, i64 } %t526, 1 %t528 = icmp uge i64 1, %t527 - br i1 %t528, label %range7700, label %inrange7701 -range7700: - call void @finch_panic_index(ptr @.str.5093, i64 4693, i64 1, i64 %t527) + br i1 %t528, label %range8041, label %inrange8042 +range8041: + call void @finch_panic_index(ptr @.str.5351, i64 4857, i64 1, i64 %t527) unreachable -inrange7701: +inrange8042: %t529 = extractvalue { ptr, i64, i64 } %t526, 0 %t530 = getelementptr inbounds %S.ast.Node, ptr %t529, i64 1 %t531 = load %S.ast.Node, ptr %t530 %t532 = call %S.gen.Val @finch.gen.expr(ptr %t524, %S.ast.Node %t531) - %t533 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5094, i64 3, i64 0 }) + %t533 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5352, i64 3, i64 0 }) %t534 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t535 = load { ptr, i64, i64 }, ptr %t534 %t536 = extractvalue { ptr, i64, i64 } %t535, 1 %t537 = icmp uge i64 1, %t536 - br i1 %t537, label %range7702, label %inrange7703 -range7702: - call void @finch_panic_index(ptr @.str.5095, i64 4693, i64 1, i64 %t536) + br i1 %t537, label %range8043, label %inrange8044 +range8043: + call void @finch_panic_index(ptr @.str.5353, i64 4857, i64 1, i64 %t536) unreachable -inrange7703: +inrange8044: %t538 = extractvalue { ptr, i64, i64 } %t535, 0 %t539 = getelementptr inbounds %S.ast.Node, ptr %t538, i64 1 %t540 = load %S.ast.Node, ptr %t539 - %t541 = call %S.gen.Val @finch.gen.coerce(ptr %t523, %S.gen.Val %t532, %S.ast.Type %t533, %S.ast.Node %t540, { ptr, i64, i64 } { ptr @.str.5096, i64 12, i64 0 }) + %t541 = call %S.gen.Val @finch.gen.coerce(ptr %t523, %S.gen.Val %t532, %S.ast.Type %t533, %S.ast.Node %t540, { ptr, i64, i64 } { ptr @.str.5354, i64 12, i64 0 }) %t542 = extractvalue %S.gen.Val %t541, 0 store { ptr, i64, i64 } %t542, ptr %a543 call void @finch_str_copy(ptr %a544, ptr %a543) @@ -68754,11 +73132,11 @@ inrange7703: %t551 = load { ptr, i64, i64 }, ptr %t550 %t552 = extractvalue { ptr, i64, i64 } %t551, 1 %t553 = icmp uge i64 2, %t552 - br i1 %t553, label %range7704, label %inrange7705 -range7704: - call void @finch_panic_index(ptr @.str.5097, i64 4694, i64 2, i64 %t552) + br i1 %t553, label %range8045, label %inrange8046 +range8045: + call void @finch_panic_index(ptr @.str.5355, i64 4858, i64 2, i64 %t552) unreachable -inrange7705: +inrange8046: %t554 = extractvalue { ptr, i64, i64 } %t551, 0 %t555 = getelementptr inbounds %S.ast.Node, ptr %t554, i64 2 %t556 = load %S.ast.Node, ptr %t555 @@ -68769,36 +73147,36 @@ inrange7705: %t561 = load { ptr, i64, i64 }, ptr %t560 %t562 = extractvalue { ptr, i64, i64 } %t561, 1 %t563 = icmp uge i64 2, %t562 - br i1 %t563, label %range7706, label %inrange7707 -range7706: - call void @finch_panic_index(ptr @.str.5098, i64 4694, i64 2, i64 %t562) + br i1 %t563, label %range8047, label %inrange8048 +range8047: + call void @finch_panic_index(ptr @.str.5356, i64 4858, i64 2, i64 %t562) unreachable -inrange7707: +inrange8048: %t564 = extractvalue { ptr, i64, i64 } %t561, 0 %t565 = getelementptr inbounds %S.ast.Node, ptr %t564, i64 2 %t566 = load %S.ast.Node, ptr %t565 - %t567 = call %S.gen.Val @finch.gen.coerce(ptr %t548, %S.gen.Val %t558, %S.ast.Type %t559, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.5099, i64 11, i64 0 }) + %t567 = call %S.gen.Val @finch.gen.coerce(ptr %t548, %S.gen.Val %t558, %S.ast.Type %t559, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.5357, i64 11, i64 0 }) %t568 = call { ptr, i64, i64 } @finch.gen.own(ptr %t547, %S.gen.Val %t567) store { ptr, i64, i64 } %t568, ptr %a569 %t570 = load ptr, ptr %a1 %t571 = load ptr, ptr %a1 %t572 = icmp eq ptr %t571, null - br i1 %t572, label %panic7708, label %ok7709 -panic7708: - call void @finch_panic(ptr @.str.5100, i64 4695, ptr @.str.5101) + br i1 %t572, label %panic8049, label %ok8050 +panic8049: + call void @finch_panic(ptr @.str.5358, i64 4859, ptr @.str.5359) unreachable -ok7709: +ok8050: %t573 = getelementptr inbounds %S.gen.Gen, ptr %t571, i32 0, i32 1 %t574 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t575 = load i64, ptr %t574 %t576 = load { ptr, i64, i64 }, ptr %t573 %t577 = extractvalue { ptr, i64, i64 } %t576, 1 %t578 = icmp uge i64 %t575, %t577 - br i1 %t578, label %range7710, label %inrange7711 -range7710: - call void @finch_panic_index(ptr @.str.5102, i64 4695, i64 %t575, i64 %t577) + br i1 %t578, label %range8051, label %inrange8052 +range8051: + call void @finch_panic_index(ptr @.str.5360, i64 4859, i64 %t575, i64 %t577) unreachable -inrange7711: +inrange8052: %t579 = extractvalue { ptr, i64, i64 } %t576, 0 %t580 = getelementptr inbounds { ptr, i64, i64 }, ptr %t579, i64 %t575 %t581 = load { ptr, i64, i64 }, ptr %t580 @@ -68806,12 +73184,12 @@ inrange7711: store { ptr, i64, i64 } %t582, ptr %a583 %t584 = load ptr, ptr %a1 %t585 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5103, i64 36, i64 0 }, ptr %a587 + store { ptr, i64, i64 } { ptr @.str.5361, i64 36, i64 0 }, ptr %a587 store { ptr, i64, i64 } %t585, ptr %a588 call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) %t589 = load { ptr, i64, i64 }, ptr %a586 store { ptr, i64, i64 } %t589, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5104, i64 6, i64 0 }, ptr %a592 + store { ptr, i64, i64 } { ptr @.str.5362, i64 6, i64 0 }, ptr %a592 call void @finch_str_concat(ptr %a590, ptr %a591, ptr %a592) %t593 = load { ptr, i64, i64 }, ptr %a590 %t594 = load { ptr, i64, i64 }, ptr %a546 @@ -68820,7 +73198,7 @@ inrange7711: call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597) %t598 = load { ptr, i64, i64 }, ptr %a595 store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.5105, i64 6, i64 0 }, ptr %a601 + store { ptr, i64, i64 } { ptr @.str.5363, i64 6, i64 0 }, ptr %a601 call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) %t602 = load { ptr, i64, i64 }, ptr %a599 %t603 = load ptr, ptr %a1 @@ -68831,7 +73209,7 @@ inrange7711: call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) %t609 = load { ptr, i64, i64 }, ptr %a606 store { ptr, i64, i64 } %t609, ptr %a611 - store { ptr, i64, i64 } { ptr @.str.5106, i64 6, i64 0 }, ptr %a612 + store { ptr, i64, i64 } { ptr @.str.5364, i64 6, i64 0 }, ptr %a612 call void @finch_str_concat(ptr %a610, ptr %a611, ptr %a612) %t613 = load { ptr, i64, i64 }, ptr %a610 %t614 = load { ptr, i64, i64 }, ptr %a583 @@ -68840,7 +73218,7 @@ inrange7711: call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) %t618 = load { ptr, i64, i64 }, ptr %a615 store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5107, i64 6, i64 0 }, ptr %a621 + store { ptr, i64, i64 } { ptr @.str.5365, i64 6, i64 0 }, ptr %a621 call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) %t622 = load { ptr, i64, i64 }, ptr %a619 %t623 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -68852,25 +73230,25 @@ inrange7711: call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) %t630 = load { ptr, i64, i64 }, ptr %a627 store { ptr, i64, i64 } %t630, ptr %a632 - store { ptr, i64, i64 } { ptr @.str.5108, i64 1, i64 0 }, ptr %a633 + store { ptr, i64, i64 } { ptr @.str.5366, i64 1, i64 0 }, ptr %a633 call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) %t634 = load { ptr, i64, i64 }, ptr %a631 call void @finch.gen.emit(ptr %t584, { ptr, i64, i64 } %t634) %t635 = load ptr, ptr %a1 %t636 = load { ptr, i64, i64 }, ptr %a3 - %t637 = call { ptr, i64, i64 } @finch.gen.load(ptr %t635, { ptr, i64, i64 } { ptr @.str.5109, i64 3, i64 0 }, { ptr, i64, i64 } %t636) + %t637 = call { ptr, i64, i64 } @finch.gen.load(ptr %t635, { ptr, i64, i64 } { ptr @.str.5367, i64 3, i64 0 }, { ptr, i64, i64 } %t636) store { ptr, i64, i64 } %t637, ptr %a638 %t639 = load ptr, ptr %a1 %t640 = load { ptr, i64, i64 }, ptr %a19 %t641 = load { ptr, i64, i64 }, ptr %a569 %t642 = load ptr, ptr %a1 %t643 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5110, i64 23, i64 0 }, ptr %a645 + store { ptr, i64, i64 } { ptr @.str.5368, i64 23, i64 0 }, ptr %a645 store { ptr, i64, i64 } %t643, ptr %a646 call void @finch_str_concat(ptr %a644, ptr %a645, ptr %a646) %t647 = load { ptr, i64, i64 }, ptr %a644 store { ptr, i64, i64 } %t647, ptr %a649 - store { ptr, i64, i64 } { ptr @.str.5111, i64 6, i64 0 }, ptr %a650 + store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a650 call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) %t651 = load { ptr, i64, i64 }, ptr %a648 %t652 = load { ptr, i64, i64 }, ptr %a638 @@ -68879,7 +73257,7 @@ inrange7711: call void @finch_str_concat(ptr %a653, ptr %a654, ptr %a655) %t656 = load { ptr, i64, i64 }, ptr %a653 store { ptr, i64, i64 } %t656, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.5112, i64 6, i64 0 }, ptr %a659 + store { ptr, i64, i64 } { ptr @.str.5370, i64 6, i64 0 }, ptr %a659 call void @finch_str_concat(ptr %a657, ptr %a658, ptr %a659) %t660 = load { ptr, i64, i64 }, ptr %a657 %t661 = load { ptr, i64, i64 }, ptr %a546 @@ -68889,17 +73267,17 @@ inrange7711: %t665 = load { ptr, i64, i64 }, ptr %a662 %t666 = call { ptr, i64, i64 } @finch.gen.op(ptr %t642, { ptr, i64, i64 } %t665) call void @finch.gen.store(ptr %t639, { ptr, i64, i64 } %t640, { ptr, i64, i64 } %t641, { ptr, i64, i64 } %t666) - %t667 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5113, i64 4, i64 0 }) + %t667 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5371, i64 4, i64 0 }) %t668 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t667, 1 ret %S.gen.Val %t668 -endif7699: +endif8040: %t669 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.5114, i64 6, i64 0 }, ptr %a671 + store { ptr, i64, i64 } { ptr @.str.5372, i64 6, i64 0 }, ptr %a671 %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then7712, label %endif7714 -then7712: + br i1 %t673, label %then8053, label %endif8055 +then8053: %t674 = load ptr, ptr %a1 %t675 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 1) @@ -68909,29 +73287,29 @@ then7712: %t679 = load { ptr, i64, i64 }, ptr %t678 %t680 = extractvalue { ptr, i64, i64 } %t679, 1 %t681 = icmp uge i64 1, %t680 - br i1 %t681, label %range7715, label %inrange7716 -range7715: - call void @finch_panic_index(ptr @.str.5115, i64 4703, i64 1, i64 %t680) + br i1 %t681, label %range8056, label %inrange8057 +range8056: + call void @finch_panic_index(ptr @.str.5373, i64 4867, i64 1, i64 %t680) unreachable -inrange7716: +inrange8057: %t682 = extractvalue { ptr, i64, i64 } %t679, 0 %t683 = getelementptr inbounds %S.ast.Node, ptr %t682, i64 1 %t684 = load %S.ast.Node, ptr %t683 %t685 = call %S.gen.Val @finch.gen.expr(ptr %t677, %S.ast.Node %t684) - %t686 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5116, i64 3, i64 0 }) + %t686 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t688 = load { ptr, i64, i64 }, ptr %t687 %t689 = extractvalue { ptr, i64, i64 } %t688, 1 %t690 = icmp uge i64 1, %t689 - br i1 %t690, label %range7717, label %inrange7718 -range7717: - call void @finch_panic_index(ptr @.str.5117, i64 4703, i64 1, i64 %t689) + br i1 %t690, label %range8058, label %inrange8059 +range8058: + call void @finch_panic_index(ptr @.str.5375, i64 4867, i64 1, i64 %t689) unreachable -inrange7718: +inrange8059: %t691 = extractvalue { ptr, i64, i64 } %t688, 0 %t692 = getelementptr inbounds %S.ast.Node, ptr %t691, i64 1 %t693 = load %S.ast.Node, ptr %t692 - %t694 = call %S.gen.Val @finch.gen.coerce(ptr %t676, %S.gen.Val %t685, %S.ast.Type %t686, %S.ast.Node %t693, { ptr, i64, i64 } { ptr @.str.5118, i64 12, i64 0 }) + %t694 = call %S.gen.Val @finch.gen.coerce(ptr %t676, %S.gen.Val %t685, %S.ast.Type %t686, %S.ast.Node %t693, { ptr, i64, i64 } { ptr @.str.5376, i64 12, i64 0 }) %t695 = extractvalue %S.gen.Val %t694, 0 store { ptr, i64, i64 } %t695, ptr %a696 call void @finch_str_copy(ptr %a697, ptr %a696) @@ -68941,23 +73319,23 @@ inrange7718: %t701 = load { ptr, i64, i64 }, ptr %a699 %t702 = load ptr, ptr %a1 %t703 = load { ptr, i64, i64 }, ptr %a37 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.5119, i64 3, i64 0 }, { ptr, i64, i64 } %t703) + %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }, { ptr, i64, i64 } %t703) %t705 = load %S.ast.Node, ptr %a2 call void @finch.gen.boundsCheck(ptr %t700, { ptr, i64, i64 } %t701, { ptr, i64, i64 } %t704, %S.ast.Node %t705) %t706 = load ptr, ptr %a1 %t707 = load { ptr, i64, i64 }, ptr %a3 - %t708 = call { ptr, i64, i64 } @finch.gen.load(ptr %t706, { ptr, i64, i64 } { ptr @.str.5120, i64 3, i64 0 }, { ptr, i64, i64 } %t707) + %t708 = call { ptr, i64, i64 } @finch.gen.load(ptr %t706, { ptr, i64, i64 } { ptr @.str.5378, i64 3, i64 0 }, { ptr, i64, i64 } %t707) store { ptr, i64, i64 } %t708, ptr %a709 %t710 = load ptr, ptr %a1 %t711 = load { ptr, i64, i64 }, ptr %a19 %t712 = load ptr, ptr %a1 %t713 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5121, i64 23, i64 0 }, ptr %a715 + store { ptr, i64, i64 } { ptr @.str.5379, i64 23, i64 0 }, ptr %a715 store { ptr, i64, i64 } %t713, ptr %a716 call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) %t717 = load { ptr, i64, i64 }, ptr %a714 store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.5122, i64 6, i64 0 }, ptr %a720 + store { ptr, i64, i64 } { ptr @.str.5380, i64 6, i64 0 }, ptr %a720 call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) %t721 = load { ptr, i64, i64 }, ptr %a718 %t722 = load { ptr, i64, i64 }, ptr %a709 @@ -68966,7 +73344,7 @@ inrange7718: call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) %t726 = load { ptr, i64, i64 }, ptr %a723 store { ptr, i64, i64 } %t726, ptr %a728 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a729 + store { ptr, i64, i64 } { ptr @.str.5381, i64 6, i64 0 }, ptr %a729 call void @finch_str_concat(ptr %a727, ptr %a728, ptr %a729) %t730 = load { ptr, i64, i64 }, ptr %a727 %t731 = load { ptr, i64, i64 }, ptr %a699 @@ -68979,12 +73357,12 @@ inrange7718: store { ptr, i64, i64 } %t737, ptr %a738 %t739 = load ptr, ptr %a1 %t740 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5124, i64 36, i64 0 }, ptr %a742 + store { ptr, i64, i64 } { ptr @.str.5382, i64 36, i64 0 }, ptr %a742 store { ptr, i64, i64 } %t740, ptr %a743 call void @finch_str_concat(ptr %a741, ptr %a742, ptr %a743) %t744 = load { ptr, i64, i64 }, ptr %a741 store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.5125, i64 6, i64 0 }, ptr %a747 + store { ptr, i64, i64 } { ptr @.str.5383, i64 6, i64 0 }, ptr %a747 call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) %t748 = load { ptr, i64, i64 }, ptr %a745 %t749 = load { ptr, i64, i64 }, ptr %a699 @@ -68993,7 +73371,7 @@ inrange7718: call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) %t753 = load { ptr, i64, i64 }, ptr %a750 store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.5126, i64 6, i64 0 }, ptr %a756 + store { ptr, i64, i64 } { ptr @.str.5384, i64 6, i64 0 }, ptr %a756 call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) %t757 = load { ptr, i64, i64 }, ptr %a754 %t758 = load ptr, ptr %a1 @@ -69004,7 +73382,7 @@ inrange7718: call void @finch_str_concat(ptr %a761, ptr %a762, ptr %a763) %t764 = load { ptr, i64, i64 }, ptr %a761 store { ptr, i64, i64 } %t764, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5127, i64 1, i64 0 }, ptr %a767 + store { ptr, i64, i64 } { ptr @.str.5385, i64 1, i64 0 }, ptr %a767 call void @finch_str_concat(ptr %a765, ptr %a766, ptr %a767) %t768 = load { ptr, i64, i64 }, ptr %a765 call void @finch.gen.emit(ptr %t739, { ptr, i64, i64 } %t768) @@ -69023,14 +73401,14 @@ inrange7718: %t781 = call i1 @finch.gen.owning(ptr %t779, %S.ast.Type %t780) %t782 = insertvalue %S.gen.Val %t778, i1 %t781, 2 ret %S.gen.Val %t782 -endif7714: +endif8055: %t783 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t783, ptr %a784 - store { ptr, i64, i64 } { ptr @.str.5128, i64 6, i64 0 }, ptr %a785 + store { ptr, i64, i64 } { ptr @.str.5386, i64 6, i64 0 }, ptr %a785 %t786 = call i32 @finch_str_eq(ptr %a784, ptr %a785) %t787 = icmp ne i32 %t786, 0 - br i1 %t787, label %then7719, label %endif7721 -then7719: + br i1 %t787, label %then8060, label %endif8062 +then8060: %t788 = load ptr, ptr %a1 %t789 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t788, %S.ast.Node %t789, i64 1) @@ -69040,29 +73418,29 @@ then7719: %t793 = load { ptr, i64, i64 }, ptr %t792 %t794 = extractvalue { ptr, i64, i64 } %t793, 1 %t795 = icmp uge i64 1, %t794 - br i1 %t795, label %range7722, label %inrange7723 -range7722: - call void @finch_panic_index(ptr @.str.5129, i64 4712, i64 1, i64 %t794) + br i1 %t795, label %range8063, label %inrange8064 +range8063: + call void @finch_panic_index(ptr @.str.5387, i64 4876, i64 1, i64 %t794) unreachable -inrange7723: +inrange8064: %t796 = extractvalue { ptr, i64, i64 } %t793, 0 %t797 = getelementptr inbounds %S.ast.Node, ptr %t796, i64 1 %t798 = load %S.ast.Node, ptr %t797 %t799 = call %S.gen.Val @finch.gen.expr(ptr %t791, %S.ast.Node %t798) - %t800 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5130, i64 3, i64 0 }) + %t800 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5388, i64 3, i64 0 }) %t801 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t802 = load { ptr, i64, i64 }, ptr %t801 %t803 = extractvalue { ptr, i64, i64 } %t802, 1 %t804 = icmp uge i64 1, %t803 - br i1 %t804, label %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.5131, i64 4712, i64 1, i64 %t803) + br i1 %t804, label %range8065, label %inrange8066 +range8065: + call void @finch_panic_index(ptr @.str.5389, i64 4876, i64 1, i64 %t803) unreachable -inrange7725: +inrange8066: %t805 = extractvalue { ptr, i64, i64 } %t802, 0 %t806 = getelementptr inbounds %S.ast.Node, ptr %t805, i64 1 %t807 = load %S.ast.Node, ptr %t806 - %t808 = call %S.gen.Val @finch.gen.coerce(ptr %t790, %S.gen.Val %t799, %S.ast.Type %t800, %S.ast.Node %t807, { ptr, i64, i64 } { ptr @.str.5132, i64 14, i64 0 }) + %t808 = call %S.gen.Val @finch.gen.coerce(ptr %t790, %S.gen.Val %t799, %S.ast.Type %t800, %S.ast.Node %t807, { ptr, i64, i64 } { ptr @.str.5390, i64 14, i64 0 }) %t809 = extractvalue %S.gen.Val %t808, 0 store { ptr, i64, i64 } %t809, ptr %a810 call void @finch_str_copy(ptr %a811, ptr %a810) @@ -69070,12 +73448,12 @@ inrange7725: store { ptr, i64, i64 } %t812, ptr %a813 %t814 = load ptr, ptr %a1 %t815 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5133, i64 32, i64 0 }, ptr %a817 + store { ptr, i64, i64 } { ptr @.str.5391, i64 32, i64 0 }, ptr %a817 store { ptr, i64, i64 } %t815, ptr %a818 call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) %t819 = load { ptr, i64, i64 }, ptr %a816 store { ptr, i64, i64 } %t819, ptr %a821 - store { ptr, i64, i64 } { ptr @.str.5134, i64 6, i64 0 }, ptr %a822 + store { ptr, i64, i64 } { ptr @.str.5392, i64 6, i64 0 }, ptr %a822 call void @finch_str_concat(ptr %a820, ptr %a821, ptr %a822) %t823 = load { ptr, i64, i64 }, ptr %a820 %t824 = load { ptr, i64, i64 }, ptr %a813 @@ -69084,7 +73462,7 @@ inrange7725: call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) %t828 = load { ptr, i64, i64 }, ptr %a825 store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5135, i64 6, i64 0 }, ptr %a831 + store { ptr, i64, i64 } { ptr @.str.5393, i64 6, i64 0 }, ptr %a831 call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) %t832 = load { ptr, i64, i64 }, ptr %a829 %t833 = load ptr, ptr %a1 @@ -69095,40 +73473,40 @@ inrange7725: call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) %t839 = load { ptr, i64, i64 }, ptr %a836 store { ptr, i64, i64 } %t839, ptr %a841 - store { ptr, i64, i64 } { ptr @.str.5136, i64 1, i64 0 }, ptr %a842 + store { ptr, i64, i64 } { ptr @.str.5394, i64 1, i64 0 }, ptr %a842 call void @finch_str_concat(ptr %a840, ptr %a841, ptr %a842) %t843 = load { ptr, i64, i64 }, ptr %a840 call void @finch.gen.emit(ptr %t814, { ptr, i64, i64 } %t843) - %t844 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5137, i64 4, i64 0 }) + %t844 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5395, i64 4, i64 0 }) %t845 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t844, 1 ret %S.gen.Val %t845 -endif7721: +endif8062: %t846 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t846, ptr %a847 - store { ptr, i64, i64 } { ptr @.str.5138, i64 7, i64 0 }, ptr %a848 + store { ptr, i64, i64 } { ptr @.str.5396, i64 7, i64 0 }, ptr %a848 %t849 = call i32 @finch_str_eq(ptr %a847, ptr %a848) %t850 = icmp ne i32 %t849, 0 - br i1 %t850, label %then7726, label %endif7728 -then7726: + br i1 %t850, label %then8067, label %endif8069 +then8067: %t851 = load ptr, ptr %a1 %t852 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t851, %S.ast.Node %t852, i64 0) %t853 = load ptr, ptr %a1 %t854 = load { ptr, i64, i64 }, ptr %a37 - %t855 = call { ptr, i64, i64 } @finch.gen.load(ptr %t853, { ptr, i64, i64 } { ptr @.str.5139, i64 3, i64 0 }, { ptr, i64, i64 } %t854) + %t855 = call { ptr, i64, i64 } @finch.gen.load(ptr %t853, { ptr, i64, i64 } { ptr @.str.5397, i64 3, i64 0 }, { ptr, i64, i64 } %t854) store { ptr, i64, i64 } %t855, ptr %a856 %t857 = load ptr, ptr %a1 %t858 = load { ptr, i64, i64 }, ptr %a3 - %t859 = call { ptr, i64, i64 } @finch.gen.load(ptr %t857, { ptr, i64, i64 } { ptr @.str.5140, i64 3, i64 0 }, { ptr, i64, i64 } %t858) + %t859 = call { ptr, i64, i64 } @finch.gen.load(ptr %t857, { ptr, i64, i64 } { ptr @.str.5398, i64 3, i64 0 }, { ptr, i64, i64 } %t858) store { ptr, i64, i64 } %t859, ptr %a860 %t861 = load ptr, ptr %a1 %t862 = load { ptr, i64, i64 }, ptr %a856 - store { ptr, i64, i64 } { ptr @.str.5141, i64 9, i64 0 }, ptr %a864 + store { ptr, i64, i64 } { ptr @.str.5399, i64 9, i64 0 }, ptr %a864 store { ptr, i64, i64 } %t862, ptr %a865 call void @finch_str_concat(ptr %a863, ptr %a864, ptr %a865) %t866 = load { ptr, i64, i64 }, ptr %a863 store { ptr, i64, i64 } %t866, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5142, i64 3, i64 0 }, ptr %a869 + store { ptr, i64, i64 } { ptr @.str.5400, i64 3, i64 0 }, ptr %a869 call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) %t870 = load { ptr, i64, i64 }, ptr %a867 %t871 = call { ptr, i64, i64 } @finch.gen.op(ptr %t861, { ptr, i64, i64 } %t870) @@ -69139,12 +73517,12 @@ then7726: store { ptr, i64, i64 } %t875, ptr %a876 %t877 = load ptr, ptr %a1 %t878 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5143, i64 23, i64 0 }, ptr %a880 + store { ptr, i64, i64 } { ptr @.str.5401, i64 23, i64 0 }, ptr %a880 store { ptr, i64, i64 } %t878, ptr %a881 call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) %t882 = load { ptr, i64, i64 }, ptr %a879 store { ptr, i64, i64 } %t882, ptr %a884 - store { ptr, i64, i64 } { ptr @.str.5144, i64 6, i64 0 }, ptr %a885 + store { ptr, i64, i64 } { ptr @.str.5402, i64 6, i64 0 }, ptr %a885 call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) %t886 = load { ptr, i64, i64 }, ptr %a883 %t887 = load { ptr, i64, i64 }, ptr %a860 @@ -69153,17 +73531,17 @@ then7726: call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) %t891 = load { ptr, i64, i64 }, ptr %a888 store { ptr, i64, i64 } %t891, ptr %a893 - store { ptr, i64, i64 } { ptr @.str.5145, i64 6, i64 0 }, ptr %a894 + store { ptr, i64, i64 } { ptr @.str.5403, i64 6, i64 0 }, ptr %a894 call void @finch_str_concat(ptr %a892, ptr %a893, ptr %a894) %t895 = load { ptr, i64, i64 }, ptr %a892 %t896 = load { ptr, i64, i64 }, ptr %a876 %t897 = extractvalue { ptr, i64, i64 } %t896, 1 %t898 = icmp uge i64 3, %t897 - br i1 %t898, label %range7729, label %inrange7730 -range7729: - call void @finch_panic_index(ptr @.str.5146, i64 4722, i64 3, i64 %t897) + br i1 %t898, label %range8070, label %inrange8071 +range8070: + call void @finch_panic_index(ptr @.str.5404, i64 4886, i64 3, i64 %t897) unreachable -inrange7730: +inrange8071: %t899 = extractvalue { ptr, i64, i64 } %t896, 0 %t900 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 3 %t901 = load { ptr, i64, i64 }, ptr %t900 @@ -69176,31 +73554,31 @@ inrange7730: %t908 = load ptr, ptr %a1 %t909 = load ptr, ptr %a1 %t910 = load { ptr, i64, i64 }, ptr %a856 - store { ptr, i64, i64 } { ptr @.str.5148, i64 8, i64 0 }, ptr %a912 + store { ptr, i64, i64 } { ptr @.str.5406, i64 8, i64 0 }, ptr %a912 store { ptr, i64, i64 } %t910, ptr %a913 call void @finch_str_concat(ptr %a911, ptr %a912, ptr %a913) %t914 = load { ptr, i64, i64 }, ptr %a911 store { ptr, i64, i64 } %t914, ptr %a916 - store { ptr, i64, i64 } { ptr @.str.5149, i64 3, i64 0 }, ptr %a917 + store { ptr, i64, i64 } { ptr @.str.5407, i64 3, i64 0 }, ptr %a917 call void @finch_str_concat(ptr %a915, ptr %a916, ptr %a917) %t918 = load { ptr, i64, i64 }, ptr %a915 %t919 = call { ptr, i64, i64 } @finch.gen.op(ptr %t909, { ptr, i64, i64 } %t918) - store { ptr, i64, i64 } { ptr @.str.5147, i64 8, i64 0 }, ptr %a921 + store { ptr, i64, i64 } { ptr @.str.5405, i64 8, i64 0 }, ptr %a921 store { ptr, i64, i64 } %t919, ptr %a922 call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) %t923 = load { ptr, i64, i64 }, ptr %a920 store { ptr, i64, i64 } %t923, ptr %a925 - store { ptr, i64, i64 } { ptr @.str.5150, i64 2, i64 0 }, ptr %a926 + store { ptr, i64, i64 } { ptr @.str.5408, i64 2, i64 0 }, ptr %a926 call void @finch_str_concat(ptr %a924, ptr %a925, ptr %a926) %t927 = load { ptr, i64, i64 }, ptr %a924 %t928 = load { ptr, i64, i64 }, ptr %a876 %t929 = extractvalue { ptr, i64, i64 } %t928, 1 %t930 = icmp uge i64 3, %t929 - br i1 %t930, label %range7731, label %inrange7732 -range7731: - call void @finch_panic_index(ptr @.str.5151, i64 4723, i64 3, i64 %t929) + br i1 %t930, label %range8072, label %inrange8073 +range8072: + call void @finch_panic_index(ptr @.str.5409, i64 4887, i64 3, i64 %t929) unreachable -inrange7732: +inrange8073: %t931 = extractvalue { ptr, i64, i64 } %t928, 0 %t932 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 3 %t933 = load { ptr, i64, i64 }, ptr %t932 @@ -69212,12 +73590,12 @@ inrange7732: store { ptr, i64, i64 } %t938, ptr %a939 %t940 = load ptr, ptr %a1 %t941 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5152, i64 23, i64 0 }, ptr %a943 + store { ptr, i64, i64 } { ptr @.str.5410, i64 23, i64 0 }, ptr %a943 store { ptr, i64, i64 } %t941, ptr %a944 call void @finch_str_concat(ptr %a942, ptr %a943, ptr %a944) %t945 = load { ptr, i64, i64 }, ptr %a942 store { ptr, i64, i64 } %t945, ptr %a947 - store { ptr, i64, i64 } { ptr @.str.5153, i64 6, i64 0 }, ptr %a948 + store { ptr, i64, i64 } { ptr @.str.5411, i64 6, i64 0 }, ptr %a948 call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) %t949 = load { ptr, i64, i64 }, ptr %a946 %t950 = load { ptr, i64, i64 }, ptr %a860 @@ -69226,7 +73604,7 @@ inrange7732: call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) %t954 = load { ptr, i64, i64 }, ptr %a951 store { ptr, i64, i64 } %t954, ptr %a956 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %a957 + store { ptr, i64, i64 } { ptr @.str.5412, i64 6, i64 0 }, ptr %a957 call void @finch_str_concat(ptr %a955, ptr %a956, ptr %a957) %t958 = load { ptr, i64, i64 }, ptr %a955 %t959 = load { ptr, i64, i64 }, ptr %a939 @@ -69259,17 +73637,17 @@ inrange7732: %t984 = load ptr, ptr %a1 %t985 = load { ptr, i64, i64 }, ptr %a876 call void @finch.gen.loopEnd(ptr %t984, { ptr, i64, i64 } %t985) - %t986 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5155, i64 4, i64 0 }) + %t986 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5413, i64 4, i64 0 }) %t987 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t986, 1 ret %S.gen.Val %t987 -endif7728: +endif8069: %t988 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t988, ptr %a989 - store { ptr, i64, i64 } { ptr @.str.5156, i64 5, i64 0 }, ptr %a990 + store { ptr, i64, i64 } { ptr @.str.5414, i64 5, i64 0 }, ptr %a990 %t991 = call i32 @finch_str_eq(ptr %a989, ptr %a990) %t992 = icmp ne i32 %t991, 0 - br i1 %t992, label %then7733, label %endif7735 -then7733: + br i1 %t992, label %then8074, label %endif8076 +then8074: %t993 = load ptr, ptr %a1 %t994 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t993, %S.ast.Node %t994, i64 2) @@ -69279,29 +73657,29 @@ then7733: %t998 = load { ptr, i64, i64 }, ptr %t997 %t999 = extractvalue { ptr, i64, i64 } %t998, 1 %t1000 = icmp uge i64 1, %t999 - br i1 %t1000, label %range7736, label %inrange7737 -range7736: - call void @finch_panic_index(ptr @.str.5157, i64 4734, i64 1, i64 %t999) + br i1 %t1000, label %range8077, label %inrange8078 +range8077: + call void @finch_panic_index(ptr @.str.5415, i64 4898, i64 1, i64 %t999) unreachable -inrange7737: +inrange8078: %t1001 = extractvalue { ptr, i64, i64 } %t998, 0 %t1002 = getelementptr inbounds %S.ast.Node, ptr %t1001, i64 1 %t1003 = load %S.ast.Node, ptr %t1002 %t1004 = call %S.gen.Val @finch.gen.expr(ptr %t996, %S.ast.Node %t1003) - %t1005 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5158, i64 3, i64 0 }) + %t1005 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5416, i64 3, i64 0 }) %t1006 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t1007 = load { ptr, i64, i64 }, ptr %t1006 %t1008 = extractvalue { ptr, i64, i64 } %t1007, 1 %t1009 = icmp uge i64 1, %t1008 - br i1 %t1009, label %range7738, label %inrange7739 -range7738: - call void @finch_panic_index(ptr @.str.5159, i64 4734, i64 1, i64 %t1008) + br i1 %t1009, label %range8079, label %inrange8080 +range8079: + call void @finch_panic_index(ptr @.str.5417, i64 4898, i64 1, i64 %t1008) unreachable -inrange7739: +inrange8080: %t1010 = extractvalue { ptr, i64, i64 } %t1007, 0 %t1011 = getelementptr inbounds %S.ast.Node, ptr %t1010, i64 1 %t1012 = load %S.ast.Node, ptr %t1011 - %t1013 = call %S.gen.Val @finch.gen.coerce(ptr %t995, %S.gen.Val %t1004, %S.ast.Type %t1005, %S.ast.Node %t1012, { ptr, i64, i64 } { ptr @.str.5160, i64 9, i64 0 }) + %t1013 = call %S.gen.Val @finch.gen.coerce(ptr %t995, %S.gen.Val %t1004, %S.ast.Type %t1005, %S.ast.Node %t1012, { ptr, i64, i64 } { ptr @.str.5418, i64 9, i64 0 }) %t1014 = extractvalue %S.gen.Val %t1013, 0 store { ptr, i64, i64 } %t1014, ptr %a1015 call void @finch_str_copy(ptr %a1016, ptr %a1015) @@ -69313,29 +73691,29 @@ inrange7739: %t1022 = load { ptr, i64, i64 }, ptr %t1021 %t1023 = extractvalue { ptr, i64, i64 } %t1022, 1 %t1024 = icmp uge i64 2, %t1023 - br i1 %t1024, label %range7740, label %inrange7741 -range7740: - call void @finch_panic_index(ptr @.str.5161, i64 4735, i64 2, i64 %t1023) + br i1 %t1024, label %range8081, label %inrange8082 +range8081: + call void @finch_panic_index(ptr @.str.5419, i64 4899, i64 2, i64 %t1023) unreachable -inrange7741: +inrange8082: %t1025 = extractvalue { ptr, i64, i64 } %t1022, 0 %t1026 = getelementptr inbounds %S.ast.Node, ptr %t1025, i64 2 %t1027 = load %S.ast.Node, ptr %t1026 %t1028 = call %S.gen.Val @finch.gen.expr(ptr %t1020, %S.ast.Node %t1027) - %t1029 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5162, i64 3, i64 0 }) + %t1029 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5420, i64 3, i64 0 }) %t1030 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t1031 = load { ptr, i64, i64 }, ptr %t1030 %t1032 = extractvalue { ptr, i64, i64 } %t1031, 1 %t1033 = icmp uge i64 2, %t1032 - br i1 %t1033, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.5163, i64 4735, i64 2, i64 %t1032) + br i1 %t1033, label %range8083, label %inrange8084 +range8083: + call void @finch_panic_index(ptr @.str.5421, i64 4899, i64 2, i64 %t1032) unreachable -inrange7743: +inrange8084: %t1034 = extractvalue { ptr, i64, i64 } %t1031, 0 %t1035 = getelementptr inbounds %S.ast.Node, ptr %t1034, i64 2 %t1036 = load %S.ast.Node, ptr %t1035 - %t1037 = call %S.gen.Val @finch.gen.coerce(ptr %t1019, %S.gen.Val %t1028, %S.ast.Type %t1029, %S.ast.Node %t1036, { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }) + %t1037 = call %S.gen.Val @finch.gen.coerce(ptr %t1019, %S.gen.Val %t1028, %S.ast.Type %t1029, %S.ast.Node %t1036, { ptr, i64, i64 } { ptr @.str.5422, i64 7, i64 0 }) %t1038 = extractvalue %S.gen.Val %t1037, 0 store { ptr, i64, i64 } %t1038, ptr %a1039 call void @finch_str_copy(ptr %a1040, ptr %a1039) @@ -69343,28 +73721,28 @@ inrange7743: store { ptr, i64, i64 } %t1041, ptr %a1042 %t1043 = load ptr, ptr %a1 %t1044 = load { ptr, i64, i64 }, ptr %a37 - %t1045 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1043, { ptr, i64, i64 } { ptr @.str.5165, i64 3, i64 0 }, { ptr, i64, i64 } %t1044) + %t1045 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1043, { ptr, i64, i64 } { ptr @.str.5423, i64 3, i64 0 }, { ptr, i64, i64 } %t1044) store { ptr, i64, i64 } %t1045, ptr %a1046 %t1047 = load ptr, ptr %a1 %t1048 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } { ptr @.str.5166, i64 13, i64 0 }, ptr %a1050 + store { ptr, i64, i64 } { ptr @.str.5424, i64 13, i64 0 }, ptr %a1050 store { ptr, i64, i64 } %t1048, ptr %a1051 call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) %t1052 = load { ptr, i64, i64 }, ptr %a1049 store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5167, i64 3, i64 0 }, ptr %a1055 + store { ptr, i64, i64 } { ptr @.str.5425, i64 3, i64 0 }, ptr %a1055 call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) %t1056 = load { ptr, i64, i64 }, ptr %a1053 %t1057 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1056) store { ptr, i64, i64 } %t1057, ptr %a1058 %t1059 = load ptr, ptr %a1 %t1060 = load { ptr, i64, i64 }, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5168, i64 13, i64 0 }, ptr %a1062 + store { ptr, i64, i64 } { ptr @.str.5426, i64 13, i64 0 }, ptr %a1062 store { ptr, i64, i64 } %t1060, ptr %a1063 call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) %t1064 = load { ptr, i64, i64 }, ptr %a1061 store { ptr, i64, i64 } %t1064, ptr %a1066 - store { ptr, i64, i64 } { ptr @.str.5169, i64 2, i64 0 }, ptr %a1067 + store { ptr, i64, i64 } { ptr @.str.5427, i64 2, i64 0 }, ptr %a1067 call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) %t1068 = load { ptr, i64, i64 }, ptr %a1065 %t1069 = load { ptr, i64, i64 }, ptr %a1046 @@ -69376,12 +73754,12 @@ inrange7743: store { ptr, i64, i64 } %t1074, ptr %a1075 %t1076 = load ptr, ptr %a1 %t1077 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } { ptr @.str.5170, i64 13, i64 0 }, ptr %a1079 + store { ptr, i64, i64 } { ptr @.str.5428, i64 13, i64 0 }, ptr %a1079 store { ptr, i64, i64 } %t1077, ptr %a1080 call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) %t1081 = load { ptr, i64, i64 }, ptr %a1078 store { ptr, i64, i64 } %t1081, ptr %a1083 - store { ptr, i64, i64 } { ptr @.str.5171, i64 2, i64 0 }, ptr %a1084 + store { ptr, i64, i64 } { ptr @.str.5429, i64 2, i64 0 }, ptr %a1084 call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) %t1085 = load { ptr, i64, i64 }, ptr %a1082 %t1086 = load { ptr, i64, i64 }, ptr %a1042 @@ -69395,12 +73773,12 @@ inrange7743: %t1094 = load ptr, ptr %a1 %t1095 = load ptr, ptr %a1 %t1096 = load { ptr, i64, i64 }, ptr %a1058 - store { ptr, i64, i64 } { ptr @.str.5173, i64 6, i64 0 }, ptr %a1098 + store { ptr, i64, i64 } { ptr @.str.5431, i64 6, i64 0 }, ptr %a1098 store { ptr, i64, i64 } %t1096, ptr %a1099 call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) %t1100 = load { ptr, i64, i64 }, ptr %a1097 store { ptr, i64, i64 } %t1100, ptr %a1102 - store { ptr, i64, i64 } { ptr @.str.5174, i64 2, i64 0 }, ptr %a1103 + store { ptr, i64, i64 } { ptr @.str.5432, i64 2, i64 0 }, ptr %a1103 call void @finch_str_concat(ptr %a1101, ptr %a1102, ptr %a1103) %t1104 = load { ptr, i64, i64 }, ptr %a1101 %t1105 = load { ptr, i64, i64 }, ptr %a1075 @@ -69409,12 +73787,12 @@ inrange7743: call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) %t1109 = load { ptr, i64, i64 }, ptr %a1106 %t1110 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1095, { ptr, i64, i64 } %t1109) - store { ptr, i64, i64 } { ptr @.str.5172, i64 6, i64 0 }, ptr %a1112 + store { ptr, i64, i64 } { ptr @.str.5430, i64 6, i64 0 }, ptr %a1112 store { ptr, i64, i64 } %t1110, ptr %a1113 call void @finch_str_concat(ptr %a1111, ptr %a1112, ptr %a1113) %t1114 = load { ptr, i64, i64 }, ptr %a1111 store { ptr, i64, i64 } %t1114, ptr %a1116 - store { ptr, i64, i64 } { ptr @.str.5175, i64 2, i64 0 }, ptr %a1117 + store { ptr, i64, i64 } { ptr @.str.5433, i64 2, i64 0 }, ptr %a1117 call void @finch_str_concat(ptr %a1115, ptr %a1116, ptr %a1117) %t1118 = load { ptr, i64, i64 }, ptr %a1115 %t1119 = load { ptr, i64, i64 }, ptr %a1092 @@ -69424,15 +73802,15 @@ inrange7743: %t1123 = load { ptr, i64, i64 }, ptr %a1120 %t1124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1094, { ptr, i64, i64 } %t1123) %t1125 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1093, { ptr, i64, i64 } %t1124, { ptr, i64, i64 } { ptr @.str.5176, i64 33, i64 0 }, %S.ast.Node %t1125) + call void @finch.gen.panicIf(ptr %t1093, { ptr, i64, i64 } %t1124, { ptr, i64, i64 } { ptr @.str.5434, i64 33, i64 0 }, %S.ast.Node %t1125) %t1126 = load ptr, ptr %a1 %t1127 = load { ptr, i64, i64 }, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %a1129 + store { ptr, i64, i64 } { ptr @.str.5435, i64 8, i64 0 }, ptr %a1129 store { ptr, i64, i64 } %t1127, ptr %a1130 call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) %t1131 = load { ptr, i64, i64 }, ptr %a1128 store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5178, i64 2, i64 0 }, ptr %a1134 + store { ptr, i64, i64 } { ptr @.str.5436, i64 2, i64 0 }, ptr %a1134 call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) %t1135 = load { ptr, i64, i64 }, ptr %a1132 %t1136 = load { ptr, i64, i64 }, ptr %a1018 @@ -69443,16 +73821,16 @@ inrange7743: %t1141 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1140) store { ptr, i64, i64 } %t1141, ptr %a1142 %t1143 = load ptr, ptr %a1 - %t1144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1143, { ptr, i64, i64 } { ptr @.str.5179, i64 17, i64 0 }) + %t1144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1143, { ptr, i64, i64 } { ptr @.str.5437, i64 17, i64 0 }) store { ptr, i64, i64 } %t1144, ptr %a1145 %t1146 = load ptr, ptr %a1 %t1147 = load { ptr, i64, i64 }, ptr %a1145 - store { ptr, i64, i64 } { ptr @.str.5180, i64 30, i64 0 }, ptr %a1149 + store { ptr, i64, i64 } { ptr @.str.5438, i64 30, i64 0 }, ptr %a1149 store { ptr, i64, i64 } %t1147, ptr %a1150 call void @finch_str_concat(ptr %a1148, ptr %a1149, ptr %a1150) %t1151 = load { ptr, i64, i64 }, ptr %a1148 store { ptr, i64, i64 } %t1151, ptr %a1153 - store { ptr, i64, i64 } { ptr @.str.5181, i64 6, i64 0 }, ptr %a1154 + store { ptr, i64, i64 } { ptr @.str.5439, i64 6, i64 0 }, ptr %a1154 call void @finch_str_concat(ptr %a1152, ptr %a1153, ptr %a1154) %t1155 = load { ptr, i64, i64 }, ptr %a1152 %t1156 = load { ptr, i64, i64 }, ptr %a1142 @@ -69461,7 +73839,7 @@ inrange7743: call void @finch_str_concat(ptr %a1157, ptr %a1158, ptr %a1159) %t1160 = load { ptr, i64, i64 }, ptr %a1157 store { ptr, i64, i64 } %t1160, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5182, i64 6, i64 0 }, ptr %a1163 + store { ptr, i64, i64 } { ptr @.str.5440, i64 6, i64 0 }, ptr %a1163 call void @finch_str_concat(ptr %a1161, ptr %a1162, ptr %a1163) %t1164 = load { ptr, i64, i64 }, ptr %a1161 %t1165 = load ptr, ptr %a1 @@ -69472,17 +73850,17 @@ inrange7743: call void @finch_str_concat(ptr %a1168, ptr %a1169, ptr %a1170) %t1171 = load { ptr, i64, i64 }, ptr %a1168 store { ptr, i64, i64 } %t1171, ptr %a1173 - store { ptr, i64, i64 } { ptr @.str.5183, i64 1, i64 0 }, ptr %a1174 + store { ptr, i64, i64 } { ptr @.str.5441, i64 1, i64 0 }, ptr %a1174 call void @finch_str_concat(ptr %a1172, ptr %a1173, ptr %a1174) %t1175 = load { ptr, i64, i64 }, ptr %a1172 call void @finch.gen.emit(ptr %t1146, { ptr, i64, i64 } %t1175) %t1176 = load ptr, ptr %a1 %t1177 = load { ptr, i64, i64 }, ptr %a3 - %t1178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1176, { ptr, i64, i64 } { ptr @.str.5184, i64 3, i64 0 }, { ptr, i64, i64 } %t1177) + %t1178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1176, { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, { ptr, i64, i64 } %t1177) store { ptr, i64, i64 } %t1178, ptr %a1179 %t1180 = load ptr, ptr %a1 %t1181 = load { ptr, i64, i64 }, ptr %a1145 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5185, i64 3, i64 0 }, { ptr, i64, i64 } %t1181) + %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5443, i64 3, i64 0 }, { ptr, i64, i64 } %t1181) store { ptr, i64, i64 } %t1182, ptr %a1183 %t1184 = load ptr, ptr %a1 %t1185 = load { ptr, i64, i64 }, ptr %a1142 @@ -69490,12 +73868,12 @@ inrange7743: store { ptr, i64, i64 } %t1186, ptr %a1187 %t1188 = load ptr, ptr %a1 %t1189 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5186, i64 23, i64 0 }, ptr %a1191 + store { ptr, i64, i64 } { ptr @.str.5444, i64 23, i64 0 }, ptr %a1191 store { ptr, i64, i64 } %t1189, ptr %a1192 call void @finch_str_concat(ptr %a1190, ptr %a1191, ptr %a1192) %t1193 = load { ptr, i64, i64 }, ptr %a1190 store { ptr, i64, i64 } %t1193, ptr %a1195 - store { ptr, i64, i64 } { ptr @.str.5187, i64 6, i64 0 }, ptr %a1196 + store { ptr, i64, i64 } { ptr @.str.5445, i64 6, i64 0 }, ptr %a1196 call void @finch_str_concat(ptr %a1194, ptr %a1195, ptr %a1196) %t1197 = load { ptr, i64, i64 }, ptr %a1194 %t1198 = load { ptr, i64, i64 }, ptr %a1183 @@ -69504,17 +73882,17 @@ inrange7743: call void @finch_str_concat(ptr %a1199, ptr %a1200, ptr %a1201) %t1202 = load { ptr, i64, i64 }, ptr %a1199 store { ptr, i64, i64 } %t1202, ptr %a1204 - store { ptr, i64, i64 } { ptr @.str.5188, i64 6, i64 0 }, ptr %a1205 + store { ptr, i64, i64 } { ptr @.str.5446, i64 6, i64 0 }, ptr %a1205 call void @finch_str_concat(ptr %a1203, ptr %a1204, ptr %a1205) %t1206 = load { ptr, i64, i64 }, ptr %a1203 %t1207 = load { ptr, i64, i64 }, ptr %a1187 %t1208 = extractvalue { ptr, i64, i64 } %t1207, 1 %t1209 = icmp uge i64 3, %t1208 - br i1 %t1209, label %range7744, label %inrange7745 -range7744: - call void @finch_panic_index(ptr @.str.5189, i64 4747, i64 3, i64 %t1208) + br i1 %t1209, label %range8085, label %inrange8086 +range8085: + call void @finch_panic_index(ptr @.str.5447, i64 4911, i64 3, i64 %t1208) unreachable -inrange7745: +inrange8086: %t1210 = extractvalue { ptr, i64, i64 } %t1207, 0 %t1211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1210, i64 3 %t1212 = load { ptr, i64, i64 }, ptr %t1211 @@ -69526,12 +73904,12 @@ inrange7745: store { ptr, i64, i64 } %t1217, ptr %a1218 %t1219 = load ptr, ptr %a1 %t1220 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5190, i64 23, i64 0 }, ptr %a1222 + store { ptr, i64, i64 } { ptr @.str.5448, i64 23, i64 0 }, ptr %a1222 store { ptr, i64, i64 } %t1220, ptr %a1223 call void @finch_str_concat(ptr %a1221, ptr %a1222, ptr %a1223) %t1224 = load { ptr, i64, i64 }, ptr %a1221 store { ptr, i64, i64 } %t1224, ptr %a1226 - store { ptr, i64, i64 } { ptr @.str.5191, i64 6, i64 0 }, ptr %a1227 + store { ptr, i64, i64 } { ptr @.str.5449, i64 6, i64 0 }, ptr %a1227 call void @finch_str_concat(ptr %a1225, ptr %a1226, ptr %a1227) %t1228 = load { ptr, i64, i64 }, ptr %a1225 %t1229 = load { ptr, i64, i64 }, ptr %a1179 @@ -69540,27 +73918,27 @@ inrange7745: call void @finch_str_concat(ptr %a1230, ptr %a1231, ptr %a1232) %t1233 = load { ptr, i64, i64 }, ptr %a1230 store { ptr, i64, i64 } %t1233, ptr %a1235 - store { ptr, i64, i64 } { ptr @.str.5192, i64 6, i64 0 }, ptr %a1236 + store { ptr, i64, i64 } { ptr @.str.5450, i64 6, i64 0 }, ptr %a1236 call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) %t1237 = load { ptr, i64, i64 }, ptr %a1234 %t1238 = load ptr, ptr %a1 %t1239 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } { ptr @.str.5193, i64 8, i64 0 }, ptr %a1241 + store { ptr, i64, i64 } { ptr @.str.5451, i64 8, i64 0 }, ptr %a1241 store { ptr, i64, i64 } %t1239, ptr %a1242 call void @finch_str_concat(ptr %a1240, ptr %a1241, ptr %a1242) %t1243 = load { ptr, i64, i64 }, ptr %a1240 store { ptr, i64, i64 } %t1243, ptr %a1245 - store { ptr, i64, i64 } { ptr @.str.5194, i64 2, i64 0 }, ptr %a1246 + store { ptr, i64, i64 } { ptr @.str.5452, i64 2, i64 0 }, ptr %a1246 call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) %t1247 = load { ptr, i64, i64 }, ptr %a1244 %t1248 = load { ptr, i64, i64 }, ptr %a1187 %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 %t1250 = icmp uge i64 3, %t1249 - br i1 %t1250, label %range7746, label %inrange7747 -range7746: - call void @finch_panic_index(ptr @.str.5195, i64 4748, i64 3, i64 %t1249) + br i1 %t1250, label %range8087, label %inrange8088 +range8087: + call void @finch_panic_index(ptr @.str.5453, i64 4912, i64 3, i64 %t1249) unreachable -inrange7747: +inrange8088: %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 %t1252 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1251, i64 3 %t1253 = load { ptr, i64, i64 }, ptr %t1252 @@ -69585,7 +73963,7 @@ inrange7747: call void @finch.gen.loopEnd(ptr %t1269, { ptr, i64, i64 } %t1270) %t1271 = load ptr, ptr %a1 %t1272 = load { ptr, i64, i64 }, ptr %a1145 - %t1273 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1271, { ptr, i64, i64 } { ptr @.str.5196, i64 17, i64 0 }, { ptr, i64, i64 } %t1272) + %t1273 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1271, { ptr, i64, i64 } { ptr @.str.5454, i64 17, i64 0 }, { ptr, i64, i64 } %t1272) %t1274 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1273, 0 %t1275 = load %S.ast.Type, ptr %a4 store %S.ast.Type %t1275, ptr %a1276 @@ -69594,14 +73972,14 @@ inrange7747: %t1279 = insertvalue %S.gen.Val %t1274, %S.ast.Type %t1278, 1 %t1280 = insertvalue %S.gen.Val %t1279, i1 true, 2 ret %S.gen.Val %t1280 -endif7735: +endif8076: %t1281 = load { ptr, i64, i64 }, ptr %a25 store { ptr, i64, i64 } %t1281, ptr %a1282 - store { ptr, i64, i64 } { ptr @.str.5197, i64 4, i64 0 }, ptr %a1283 + store { ptr, i64, i64 } { ptr @.str.5455, i64 4, i64 0 }, ptr %a1283 %t1284 = call i32 @finch_str_eq(ptr %a1282, ptr %a1283) %t1285 = icmp ne i32 %t1284, 0 - br i1 %t1285, label %then7748, label %endif7750 -then7748: + br i1 %t1285, label %then8089, label %endif8091 +then8089: %t1286 = load ptr, ptr %a1 %t1287 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t1286, %S.ast.Node %t1287, i64 0) @@ -69614,61 +73992,61 @@ then7748: %t1294 = load %S.ast.Type, ptr %a15 %t1295 = call i1 @finch.gen.isNumber(%S.ast.Type %t1294) %t1296 = xor i1 %t1295, true - br label %logic.from7751 -logic.from7751: - br i1 %t1296, label %logic.rhs7752, label %logic.end7753 -logic.rhs7752: + br label %logic.from8092 +logic.from8092: + br i1 %t1296, label %logic.rhs8093, label %logic.end8094 +logic.rhs8093: %t1297 = load { ptr, i64, i64 }, ptr %a1293 store { ptr, i64, i64 } %t1297, ptr %a1298 - store { ptr, i64, i64 } { ptr @.str.5198, i64 4, i64 0 }, ptr %a1299 + store { ptr, i64, i64 } { ptr @.str.5456, i64 4, i64 0 }, ptr %a1299 %t1300 = call i32 @finch_str_eq(ptr %a1298, ptr %a1299) %t1301 = icmp eq i32 %t1300, 0 - br label %logic.rend7754 -logic.rend7754: - br label %logic.end7753 -logic.end7753: - %t1302 = phi i1 [ false, %logic.from7751 ], [ %t1301, %logic.rend7754 ] - br label %logic.from7755 -logic.from7755: - br i1 %t1302, label %logic.rhs7756, label %logic.end7757 -logic.rhs7756: + br label %logic.rend8095 +logic.rend8095: + br label %logic.end8094 +logic.end8094: + %t1302 = phi i1 [ false, %logic.from8092 ], [ %t1301, %logic.rend8095 ] + br label %logic.from8096 +logic.from8096: + br i1 %t1302, label %logic.rhs8097, label %logic.end8098 +logic.rhs8097: %t1303 = load { ptr, i64, i64 }, ptr %a1293 store { ptr, i64, i64 } %t1303, ptr %a1304 - store { ptr, i64, i64 } { ptr @.str.5199, i64 3, i64 0 }, ptr %a1305 + store { ptr, i64, i64 } { ptr @.str.5457, i64 3, i64 0 }, ptr %a1305 %t1306 = call i32 @finch_str_eq(ptr %a1304, ptr %a1305) %t1307 = icmp eq i32 %t1306, 0 - br label %logic.rend7758 -logic.rend7758: - br label %logic.end7757 -logic.end7757: - %t1308 = phi i1 [ false, %logic.from7755 ], [ %t1307, %logic.rend7758 ] - br i1 %t1308, label %then7759, label %endif7761 -then7759: + br label %logic.rend8099 +logic.rend8099: + br label %logic.end8098 +logic.end8098: + %t1308 = phi i1 [ false, %logic.from8096 ], [ %t1307, %logic.rend8099 ] + br i1 %t1308, label %then8100, label %endif8102 +then8100: %t1309 = load ptr, ptr %a1 %t1310 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1309, %S.ast.Node %t1310, { ptr, i64, i64 } { ptr @.str.5200, i64 47, i64 0 }) - br label %endif7761 -endif7761: + call void @finch.gen.fail(ptr %t1309, %S.ast.Node %t1310, { ptr, i64, i64 } { ptr @.str.5458, i64 47, i64 0 }) + br label %endif8102 +endif8102: %t1311 = load ptr, ptr %a1 %t1312 = load %S.ast.Type, ptr %a15 %t1313 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1311, %S.ast.Type %t1312) store { ptr, i64, i64 } %t1313, ptr %a1314 %t1315 = load ptr, ptr %a1 %t1316 = load { ptr, i64, i64 }, ptr %a37 - %t1317 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1315, { ptr, i64, i64 } { ptr @.str.5201, i64 3, i64 0 }, { ptr, i64, i64 } %t1316) + %t1317 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1315, { ptr, i64, i64 } { ptr @.str.5459, i64 3, i64 0 }, { ptr, i64, i64 } %t1316) store { ptr, i64, i64 } %t1317, ptr %a1318 %t1319 = load ptr, ptr %a1 %t1320 = load { ptr, i64, i64 }, ptr %a3 - %t1321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1319, { ptr, i64, i64 } { ptr @.str.5202, i64 3, i64 0 }, { ptr, i64, i64 } %t1320) + %t1321 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1319, { ptr, i64, i64 } { ptr @.str.5460, i64 3, i64 0 }, { ptr, i64, i64 } %t1320) store { ptr, i64, i64 } %t1321, ptr %a1322 %t1323 = load ptr, ptr %a1 %t1324 = load { ptr, i64, i64 }, ptr %a1322 - store { ptr, i64, i64 } { ptr @.str.5203, i64 21, i64 0 }, ptr %a1326 + store { ptr, i64, i64 } { ptr @.str.5461, i64 21, i64 0 }, ptr %a1326 store { ptr, i64, i64 } %t1324, ptr %a1327 call void @finch_str_concat(ptr %a1325, ptr %a1326, ptr %a1327) %t1328 = load { ptr, i64, i64 }, ptr %a1325 store { ptr, i64, i64 } %t1328, ptr %a1330 - store { ptr, i64, i64 } { ptr @.str.5204, i64 6, i64 0 }, ptr %a1331 + store { ptr, i64, i64 } { ptr @.str.5462, i64 6, i64 0 }, ptr %a1331 call void @finch_str_concat(ptr %a1329, ptr %a1330, ptr %a1331) %t1332 = load { ptr, i64, i64 }, ptr %a1329 %t1333 = load { ptr, i64, i64 }, ptr %a1318 @@ -69677,7 +74055,7 @@ endif7761: call void @finch_str_concat(ptr %a1334, ptr %a1335, ptr %a1336) %t1337 = load { ptr, i64, i64 }, ptr %a1334 store { ptr, i64, i64 } %t1337, ptr %a1339 - store { ptr, i64, i64 } { ptr @.str.5205, i64 6, i64 0 }, ptr %a1340 + store { ptr, i64, i64 } { ptr @.str.5463, i64 6, i64 0 }, ptr %a1340 call void @finch_str_concat(ptr %a1338, ptr %a1339, ptr %a1340) %t1341 = load { ptr, i64, i64 }, ptr %a1338 %t1342 = load ptr, ptr %a1 @@ -69688,7 +74066,7 @@ endif7761: call void @finch_str_concat(ptr %a1345, ptr %a1346, ptr %a1347) %t1348 = load { ptr, i64, i64 }, ptr %a1345 store { ptr, i64, i64 } %t1348, ptr %a1350 - store { ptr, i64, i64 } { ptr @.str.5206, i64 6, i64 0 }, ptr %a1351 + store { ptr, i64, i64 } { ptr @.str.5464, i64 6, i64 0 }, ptr %a1351 call void @finch_str_concat(ptr %a1349, ptr %a1350, ptr %a1351) %t1352 = load { ptr, i64, i64 }, ptr %a1349 %t1353 = load { ptr, i64, i64 }, ptr %a1314 @@ -69697,23 +74075,23 @@ endif7761: call void @finch_str_concat(ptr %a1354, ptr %a1355, ptr %a1356) %t1357 = load { ptr, i64, i64 }, ptr %a1354 store { ptr, i64, i64 } %t1357, ptr %a1359 - store { ptr, i64, i64 } { ptr @.str.5207, i64 1, i64 0 }, ptr %a1360 + store { ptr, i64, i64 } { ptr @.str.5465, i64 1, i64 0 }, ptr %a1360 call void @finch_str_concat(ptr %a1358, ptr %a1359, ptr %a1360) %t1361 = load { ptr, i64, i64 }, ptr %a1358 call void @finch.gen.emit(ptr %t1323, { ptr, i64, i64 } %t1361) - %t1362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5208, i64 4, i64 0 }) + %t1362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5466, i64 4, i64 0 }) %t1363 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1362, 1 ret %S.gen.Val %t1363 -endif7750: +endif8091: %t1364 = load ptr, ptr %a1 %t1365 = load %S.ast.Node, ptr %a2 %t1366 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5209, i64 24, i64 0 }, ptr %a1368 + store { ptr, i64, i64 } { ptr @.str.5467, i64 24, i64 0 }, ptr %a1368 store { ptr, i64, i64 } %t1366, ptr %a1369 call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) %t1370 = load { ptr, i64, i64 }, ptr %a1367 store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5210, i64 96, i64 0 }, ptr %a1373 + store { ptr, i64, i64 } { ptr @.str.5468, i64 96, i64 0 }, ptr %a1373 call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) %t1374 = load { ptr, i64, i64 }, ptr %a1371 call void @finch.gen.fail(ptr %t1364, %S.ast.Node %t1365, { ptr, i64, i64 } %t1374) @@ -69856,37 +74234,37 @@ entry: store %S.ast.Type %p1, ptr %a2 %t3 = load %S.ast.Type, ptr %a2 %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5211, i64 11, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.5469, i64 11, i64 0 }, ptr %a6 store { ptr, i64, i64 } %t4, ptr %a7 call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) %t8 = load { ptr, i64, i64 }, ptr %a5 store { ptr, i64, i64 } %t8, ptr %a9 %t10 = load ptr, ptr %a1 %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic7762, label %ok7763 -panic7762: - call void @finch_panic(ptr @.str.5212, i64 4772, ptr @.str.5213) + br i1 %t11, label %panic8103, label %ok8104 +panic8103: + call void @finch_panic(ptr @.str.5470, i64 4936, ptr @.str.5471) unreachable -ok7763: +ok8104: %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 21 %t13 = load { ptr, i64, i64 }, ptr %t12 %t14 = load { ptr, i64, i64 }, ptr %a9 %t15 = call i1 @finch.gen.has({ ptr, i64, i64 } %t13, { ptr, i64, i64 } %t14) - br i1 %t15, label %then7764, label %endif7766 -then7764: + br i1 %t15, label %then8105, label %endif8107 +then8105: %t16 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t16, ptr %a17 call void @finch_str_copy(ptr %a18, ptr %a17) %t19 = load { ptr, i64, i64 }, ptr %a18 ret { ptr, i64, i64 } %t19 -endif7766: +endif8107: %t20 = load ptr, ptr %a1 %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic7767, label %ok7768 -panic7767: - call void @finch_panic(ptr @.str.5214, i64 4775, ptr @.str.5215) + br i1 %t21, label %panic8108, label %ok8109 +panic8108: + call void @finch_panic(ptr @.str.5472, i64 4939, ptr @.str.5473) unreachable -ok7768: +ok8109: %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 21 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 %t24 = load { ptr, i64, i64 }, ptr %a9 @@ -69903,58 +74281,58 @@ ok7768: %t32 = load ptr, ptr %a1 %t33 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t32) store %S.gen.Saved %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.5216, i64 0, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.5474, i64 0, i64 0 }, ptr %a35 %t36 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 %t37 = load { ptr, i64, i64 }, ptr %t36 store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.5475, i64 3, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br i1 %t41, label %then7769, label %else7770 -then7769: + br i1 %t41, label %then8110, label %else8111 +then8110: %t42 = load ptr, ptr %a1 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t42, { ptr, i64, i64 } { ptr @.str.5218, i64 39, i64 0 }) + %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t42, { ptr, i64, i64 } { ptr @.str.5476, i64 39, i64 0 }) store { ptr, i64, i64 } %t43, ptr %a44 %t45 = load ptr, ptr %a1 %t46 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.5219, i64 10, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.5477, i64 10, i64 0 }, ptr %a48 store { ptr, i64, i64 } %t46, ptr %a49 call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) %t50 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.5220, i64 7, i64 0 }, ptr %a53 + store { ptr, i64, i64 } { ptr @.str.5478, i64 7, i64 0 }, ptr %a53 call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) %t54 = load { ptr, i64, i64 }, ptr %a51 %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t54) store { ptr, i64, i64 } %t55, ptr %a35 - br label %endif7771 -else7770: + br label %endif8112 +else8111: %t56 = load ptr, ptr %a1 %t57 = load %S.ast.Type, ptr %a2 %t58 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t57) store { ptr, i64, i64 } %t58, ptr %a59 %t60 = load ptr, ptr %a1 %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } %t61, { ptr, i64, i64 } { ptr @.str.5221, i64 2, i64 0 }) + %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } %t61, { ptr, i64, i64 } { ptr @.str.5479, i64 2, i64 0 }) store { ptr, i64, i64 } %t62, ptr %a63 %t64 = load ptr, ptr %a1 %t65 = load { ptr, i64, i64 }, ptr %a59 - %t66 = call { ptr, i64, i64 } @finch.gen.load(ptr %t64, { ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.5222, i64 2, i64 0 }) + %t66 = call { ptr, i64, i64 } @finch.gen.load(ptr %t64, { ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.5480, i64 2, i64 0 }) store { ptr, i64, i64 } %t66, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.5223, i64 0, i64 0 }, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5224, i64 0, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.5481, i64 0, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.5482, i64 0, i64 0 }, ptr %a69 %t70 = load %S.ast.Type, ptr %a2 %t71 = call i1 @finch.gen.isFloat(%S.ast.Type %t70) - br i1 %t71, label %then7772, label %else7773 -then7772: + br i1 %t71, label %then8113, label %else8114 +then8113: %t72 = load ptr, ptr %a1 %t73 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.5225, i64 9, i64 0 }, ptr %a75 + store { ptr, i64, i64 } { ptr @.str.5483, i64 9, i64 0 }, ptr %a75 store { ptr, i64, i64 } %t73, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.5484, i64 1, i64 0 }, ptr %a80 call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) %t81 = load { ptr, i64, i64 }, ptr %a78 %t82 = load { ptr, i64, i64 }, ptr %a63 @@ -69963,7 +74341,7 @@ then7772: call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.5227, i64 2, i64 0 }, ptr %a89 + store { ptr, i64, i64 } { ptr @.str.5485, i64 2, i64 0 }, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 %t91 = load { ptr, i64, i64 }, ptr %a67 @@ -69975,12 +74353,12 @@ then7772: store { ptr, i64, i64 } %t96, ptr %a68 %t97 = load ptr, ptr %a1 %t98 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.5228, i64 9, i64 0 }, ptr %a100 + store { ptr, i64, i64 } { ptr @.str.5486, i64 9, i64 0 }, ptr %a100 store { ptr, i64, i64 } %t98, ptr %a101 call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.5229, i64 1, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.5487, i64 1, i64 0 }, ptr %a105 call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) %t106 = load { ptr, i64, i64 }, ptr %a103 %t107 = load { ptr, i64, i64 }, ptr %a63 @@ -69989,7 +74367,7 @@ then7772: call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5230, i64 2, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.5488, i64 2, i64 0 }, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 %t116 = load { ptr, i64, i64 }, ptr %a67 @@ -69999,18 +74377,18 @@ then7772: %t120 = load { ptr, i64, i64 }, ptr %a117 %t121 = call { ptr, i64, i64 } @finch.gen.op(ptr %t97, { ptr, i64, i64 } %t120) store { ptr, i64, i64 } %t121, ptr %a69 - br label %endif7774 -else7773: + br label %endif8115 +else8114: %t122 = load ptr, ptr %a1 %t123 = load %S.ast.Type, ptr %a2 %t124 = call i1 @finch.gen.isSigned(%S.ast.Type %t123) - %t125 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5232, i64 1, i64 0 }, i1 %t124) - store { ptr, i64, i64 } { ptr @.str.5231, i64 5, i64 0 }, ptr %a127 + %t125 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, i1 %t124) + store { ptr, i64, i64 } { ptr @.str.5489, i64 5, i64 0 }, ptr %a127 store { ptr, i64, i64 } %t125, ptr %a128 call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) %t129 = load { ptr, i64, i64 }, ptr %a126 store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.5233, i64 1, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.5491, i64 1, i64 0 }, ptr %a132 call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 %t134 = load { ptr, i64, i64 }, ptr %a59 @@ -70019,7 +74397,7 @@ else7773: call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) %t138 = load { ptr, i64, i64 }, ptr %a135 store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5234, i64 1, i64 0 }, ptr %a141 + store { ptr, i64, i64 } { ptr @.str.5492, i64 1, i64 0 }, ptr %a141 call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) %t142 = load { ptr, i64, i64 }, ptr %a139 %t143 = load { ptr, i64, i64 }, ptr %a63 @@ -70028,7 +74406,7 @@ else7773: call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) %t147 = load { ptr, i64, i64 }, ptr %a144 store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.5235, i64 2, i64 0 }, ptr %a150 + store { ptr, i64, i64 } { ptr @.str.5493, i64 2, i64 0 }, ptr %a150 call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) %t151 = load { ptr, i64, i64 }, ptr %a148 %t152 = load { ptr, i64, i64 }, ptr %a67 @@ -70041,13 +74419,13 @@ else7773: %t158 = load ptr, ptr %a1 %t159 = load %S.ast.Type, ptr %a2 %t160 = call i1 @finch.gen.isSigned(%S.ast.Type %t159) - %t161 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5237, i64 1, i64 0 }, i1 %t160) - store { ptr, i64, i64 } { ptr @.str.5236, i64 5, i64 0 }, ptr %a163 + %t161 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5495, i64 1, i64 0 }, i1 %t160) + store { ptr, i64, i64 } { ptr @.str.5494, i64 5, i64 0 }, ptr %a163 store { ptr, i64, i64 } %t161, ptr %a164 call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) %t165 = load { ptr, i64, i64 }, ptr %a162 store { ptr, i64, i64 } %t165, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5238, i64 1, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.5496, i64 1, i64 0 }, ptr %a168 call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) %t169 = load { ptr, i64, i64 }, ptr %a166 %t170 = load { ptr, i64, i64 }, ptr %a59 @@ -70056,7 +74434,7 @@ else7773: call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.5239, i64 1, i64 0 }, ptr %a177 + store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a177 call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) %t178 = load { ptr, i64, i64 }, ptr %a175 %t179 = load { ptr, i64, i64 }, ptr %a63 @@ -70065,7 +74443,7 @@ else7773: call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 store { ptr, i64, i64 } %t183, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.5240, i64 2, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.5498, i64 2, i64 0 }, ptr %a186 call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) %t187 = load { ptr, i64, i64 }, ptr %a184 %t188 = load { ptr, i64, i64 }, ptr %a67 @@ -70075,36 +74453,36 @@ else7773: %t192 = load { ptr, i64, i64 }, ptr %a189 %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t192) store { ptr, i64, i64 } %t193, ptr %a69 - br label %endif7774 -endif7774: + br label %endif8115 +endif8115: %t194 = load ptr, ptr %a1 %t195 = load ptr, ptr %a1 %t196 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5242, i64 8, i64 0 }, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.5500, i64 8, i64 0 }, ptr %a198 store { ptr, i64, i64 } %t196, ptr %a199 call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) %t200 = load { ptr, i64, i64 }, ptr %a197 store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.5243, i64 7, i64 0 }, ptr %a203 + store { ptr, i64, i64 } { ptr @.str.5501, i64 7, i64 0 }, ptr %a203 call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) %t204 = load { ptr, i64, i64 }, ptr %a201 %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t195, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } { ptr @.str.5241, i64 8, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.5499, i64 8, i64 0 }, ptr %a207 store { ptr, i64, i64 } %t205, ptr %a208 call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) %t209 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.5244, i64 2, i64 0 }, ptr %a212 + store { ptr, i64, i64 } { ptr @.str.5502, i64 2, i64 0 }, ptr %a212 call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) %t213 = load { ptr, i64, i64 }, ptr %a210 %t214 = load ptr, ptr %a1 %t215 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5245, i64 8, i64 0 }, ptr %a217 + store { ptr, i64, i64 } { ptr @.str.5503, i64 8, i64 0 }, ptr %a217 store { ptr, i64, i64 } %t215, ptr %a218 call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) %t219 = load { ptr, i64, i64 }, ptr %a216 store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5246, i64 7, i64 0 }, ptr %a222 + store { ptr, i64, i64 } { ptr @.str.5504, i64 7, i64 0 }, ptr %a222 call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) %t223 = load { ptr, i64, i64 }, ptr %a220 %t224 = call { ptr, i64, i64 } @finch.gen.op(ptr %t214, { ptr, i64, i64 } %t223) @@ -70114,11 +74492,11 @@ endif7774: %t228 = load { ptr, i64, i64 }, ptr %a225 %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t194, { ptr, i64, i64 } %t228) store { ptr, i64, i64 } %t229, ptr %a35 - br label %endif7771 -endif7771: + br label %endif8112 +endif8112: %t230 = load ptr, ptr %a1 %t231 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5247, i64 8, i64 0 }, ptr %a233 + store { ptr, i64, i64 } { ptr @.str.5505, i64 8, i64 0 }, ptr %a233 store { ptr, i64, i64 } %t231, ptr %a234 call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) %t235 = load { ptr, i64, i64 }, ptr %a232 @@ -70126,12 +74504,12 @@ endif7771: %t236 = load ptr, ptr %a1 %t237 = load %S.gen.Saved, ptr %a34 %t238 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5248, i64 20, i64 0 }, ptr %a240 + store { ptr, i64, i64 } { ptr @.str.5506, i64 20, i64 0 }, ptr %a240 store { ptr, i64, i64 } %t238, ptr %a241 call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) %t242 = load { ptr, i64, i64 }, ptr %a239 store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.5249, i64 16, i64 0 }, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.5507, i64 16, i64 0 }, ptr %a245 call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) %t246 = load { ptr, i64, i64 }, ptr %a243 call void @finch.gen.endHelper(ptr %t236, %S.gen.Saved %t237, { ptr, i64, i64 } %t246) @@ -70402,22 +74780,22 @@ entry: %t13 = load ptr, ptr %a1 %t14 = load ptr, ptr %a1 %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic7775, label %ok7776 -panic7775: - call void @finch_panic(ptr @.str.5250, i64 4804, ptr @.str.5251) + br i1 %t15, label %panic8116, label %ok8117 +panic8116: + call void @finch_panic(ptr @.str.5508, i64 4968, ptr @.str.5509) unreachable -ok7776: +ok8117: %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 1 %t17 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 %t18 = load i64, ptr %t17 %t19 = load { ptr, i64, i64 }, ptr %t16 %t20 = extractvalue { ptr, i64, i64 } %t19, 1 %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range7777, label %inrange7778 -range7777: - call void @finch_panic_index(ptr @.str.5252, i64 4804, i64 %t18, i64 %t20) + br i1 %t21, label %range8118, label %inrange8119 +range8118: + call void @finch_panic_index(ptr @.str.5510, i64 4968, i64 %t18, i64 %t20) unreachable -inrange7778: +inrange8119: %t22 = extractvalue { ptr, i64, i64 } %t19, 0 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 %t24 = load { ptr, i64, i64 }, ptr %t23 @@ -70425,11 +74803,11 @@ inrange7778: store { ptr, i64, i64 } %t25, ptr %a26 %t27 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5253, i64 3, i64 0 }, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.5511, i64 3, i64 0 }, ptr %a29 %t30 = call i32 @finch_str_eq(ptr %a28, ptr %a29) %t31 = icmp ne i32 %t30, 0 - br i1 %t31, label %then7779, label %endif7781 -then7779: + br i1 %t31, label %then8120, label %endif8122 +then8120: %t32 = load ptr, ptr %a1 %t33 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t32, %S.ast.Node %t33, i64 2) @@ -70439,29 +74817,29 @@ then7779: %t37 = load { ptr, i64, i64 }, ptr %t36 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range7782, label %inrange7783 -range7782: - call void @finch_panic_index(ptr @.str.5254, i64 4807, i64 1, i64 %t38) + br i1 %t39, label %range8123, label %inrange8124 +range8123: + call void @finch_panic_index(ptr @.str.5512, i64 4971, i64 1, i64 %t38) unreachable -inrange7783: +inrange8124: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 1 %t42 = load %S.ast.Node, ptr %t41 %t43 = call %S.gen.Val @finch.gen.expr(ptr %t35, %S.ast.Node %t42) - %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5255, i64 3, i64 0 }) + %t44 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5513, i64 3, i64 0 }) %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t46 = load { ptr, i64, i64 }, ptr %t45 %t47 = extractvalue { ptr, i64, i64 } %t46, 1 %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range7784, label %inrange7785 -range7784: - call void @finch_panic_index(ptr @.str.5256, i64 4807, i64 1, i64 %t47) + br i1 %t48, label %range8125, label %inrange8126 +range8125: + call void @finch_panic_index(ptr @.str.5514, i64 4971, i64 1, i64 %t47) unreachable -inrange7785: +inrange8126: %t49 = extractvalue { ptr, i64, i64 } %t46, 0 %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 %t51 = load %S.ast.Node, ptr %t50 - %t52 = call %S.gen.Val @finch.gen.coerce(ptr %t34, %S.gen.Val %t43, %S.ast.Type %t44, %S.ast.Node %t51, { ptr, i64, i64 } { ptr @.str.5257, i64 9, i64 0 }) + %t52 = call %S.gen.Val @finch.gen.coerce(ptr %t34, %S.gen.Val %t43, %S.ast.Type %t44, %S.ast.Node %t51, { ptr, i64, i64 } { ptr @.str.5515, i64 9, i64 0 }) %t53 = extractvalue %S.gen.Val %t52, 0 store { ptr, i64, i64 } %t53, ptr %a54 call void @finch_str_copy(ptr %a55, ptr %a54) @@ -70473,29 +74851,29 @@ inrange7785: %t61 = load { ptr, i64, i64 }, ptr %t60 %t62 = extractvalue { ptr, i64, i64 } %t61, 1 %t63 = icmp uge i64 2, %t62 - br i1 %t63, label %range7786, label %inrange7787 -range7786: - call void @finch_panic_index(ptr @.str.5258, i64 4808, i64 2, i64 %t62) + br i1 %t63, label %range8127, label %inrange8128 +range8127: + call void @finch_panic_index(ptr @.str.5516, i64 4972, i64 2, i64 %t62) unreachable -inrange7787: +inrange8128: %t64 = extractvalue { ptr, i64, i64 } %t61, 0 %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 2 %t66 = load %S.ast.Node, ptr %t65 %t67 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t66) - %t68 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5259, i64 3, i64 0 }) + %t68 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5517, i64 3, i64 0 }) %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t70 = load { ptr, i64, i64 }, ptr %t69 %t71 = extractvalue { ptr, i64, i64 } %t70, 1 %t72 = icmp uge i64 2, %t71 - br i1 %t72, label %range7788, label %inrange7789 -range7788: - call void @finch_panic_index(ptr @.str.5260, i64 4808, i64 2, i64 %t71) + br i1 %t72, label %range8129, label %inrange8130 +range8129: + call void @finch_panic_index(ptr @.str.5518, i64 4972, i64 2, i64 %t71) unreachable -inrange7789: +inrange8130: %t73 = extractvalue { ptr, i64, i64 } %t70, 0 %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 2 %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t67, %S.ast.Type %t68, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.5261, i64 7, i64 0 }) + %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t58, %S.gen.Val %t67, %S.ast.Type %t68, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.5519, i64 7, i64 0 }) %t77 = extractvalue %S.gen.Val %t76, 0 store { ptr, i64, i64 } %t77, ptr %a78 call void @finch_str_copy(ptr %a79, ptr %a78) @@ -70503,12 +74881,12 @@ inrange7789: store { ptr, i64, i64 } %t80, ptr %a81 %t82 = load ptr, ptr %a1 %t83 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5262, i64 29, i64 0 }, ptr %a85 + store { ptr, i64, i64 } { ptr @.str.5520, i64 29, i64 0 }, ptr %a85 store { ptr, i64, i64 } %t83, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.5263, i64 6, i64 0 }, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.5521, i64 6, i64 0 }, ptr %a90 call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) %t91 = load { ptr, i64, i64 }, ptr %a88 %t92 = load { ptr, i64, i64 }, ptr %a3 @@ -70517,7 +74895,7 @@ inrange7789: call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) %t96 = load { ptr, i64, i64 }, ptr %a93 store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.5264, i64 6, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.5522, i64 6, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 %t101 = load { ptr, i64, i64 }, ptr %a57 @@ -70526,7 +74904,7 @@ inrange7789: call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) %t105 = load { ptr, i64, i64 }, ptr %a102 store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.5265, i64 6, i64 0 }, ptr %a108 + store { ptr, i64, i64 } { ptr @.str.5523, i64 6, i64 0 }, ptr %a108 call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) %t109 = load { ptr, i64, i64 }, ptr %a106 %t110 = load { ptr, i64, i64 }, ptr %a81 @@ -70535,7 +74913,7 @@ inrange7789: call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) %t114 = load { ptr, i64, i64 }, ptr %a111 store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5266, i64 6, i64 0 }, ptr %a117 + store { ptr, i64, i64 } { ptr @.str.5524, i64 6, i64 0 }, ptr %a117 call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) %t118 = load { ptr, i64, i64 }, ptr %a115 %t119 = load { ptr, i64, i64 }, ptr %a26 @@ -70544,7 +74922,7 @@ inrange7789: call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) %t123 = load { ptr, i64, i64 }, ptr %a120 store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.5267, i64 6, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.5525, i64 6, i64 0 }, ptr %a126 call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) %t127 = load { ptr, i64, i64 }, ptr %a124 %t128 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 @@ -70556,68 +74934,68 @@ inrange7789: call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) %t135 = load { ptr, i64, i64 }, ptr %a132 store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5268, i64 1, i64 0 }, ptr %a138 + store { ptr, i64, i64 } { ptr @.str.5526, i64 1, i64 0 }, ptr %a138 call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) %t139 = load { ptr, i64, i64 }, ptr %a136 call void @finch.gen.emit(ptr %t82, { ptr, i64, i64 } %t139) %t140 = load ptr, ptr %a1 %t141 = load { ptr, i64, i64 }, ptr %a12 - %t142 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } { ptr @.str.5269, i64 17, i64 0 }, { ptr, i64, i64 } %t141) + %t142 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } { ptr @.str.5527, i64 17, i64 0 }, { ptr, i64, i64 } %t141) %t143 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t142, 0 - %t144 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5270, i64 3, i64 0 }) + %t144 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5528, i64 3, i64 0 }) %t145 = insertvalue %S.gen.Val %t143, %S.ast.Type %t144, 1 %t146 = insertvalue %S.gen.Val %t145, i1 true, 2 ret %S.gen.Val %t146 -endif7781: +endif8122: %t147 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5271, i64 4, i64 0 }, ptr %a149 + store { ptr, i64, i64 } { ptr @.str.5529, i64 4, i64 0 }, ptr %a149 %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) %t151 = icmp ne i32 %t150, 0 - br label %logic.from7790 -logic.from7790: - br i1 %t151, label %logic.end7792, label %logic.rhs7791 -logic.rhs7791: + br label %logic.from8131 +logic.from8131: + br i1 %t151, label %logic.end8133, label %logic.rhs8132 +logic.rhs8132: %t152 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.5272, i64 8, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.5530, i64 8, i64 0 }, ptr %a154 %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) %t156 = icmp ne i32 %t155, 0 - br label %logic.rend7793 -logic.rend7793: - br label %logic.end7792 -logic.end7792: - %t157 = phi i1 [ true, %logic.from7790 ], [ %t156, %logic.rend7793 ] - br label %logic.from7794 -logic.from7794: - br i1 %t157, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: + br label %logic.rend8134 +logic.rend8134: + br label %logic.end8133 +logic.end8133: + %t157 = phi i1 [ true, %logic.from8131 ], [ %t156, %logic.rend8134 ] + br label %logic.from8135 +logic.from8135: + br i1 %t157, label %logic.end8137, label %logic.rhs8136 +logic.rhs8136: %t158 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5273, i64 11, i64 0 }, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.5531, i64 11, i64 0 }, ptr %a160 %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) %t162 = icmp ne i32 %t161, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t163 = phi i1 [ true, %logic.from7794 ], [ %t162, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t163, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: + br label %logic.rend8138 +logic.rend8138: + br label %logic.end8137 +logic.end8137: + %t163 = phi i1 [ true, %logic.from8135 ], [ %t162, %logic.rend8138 ] + br label %logic.from8139 +logic.from8139: + br i1 %t163, label %logic.end8141, label %logic.rhs8140 +logic.rhs8140: %t164 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.5274, i64 9, i64 0 }, ptr %a166 + store { ptr, i64, i64 } { ptr @.str.5532, i64 9, i64 0 }, ptr %a166 %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) %t168 = icmp ne i32 %t167, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t169 = phi i1 [ true, %logic.from7798 ], [ %t168, %logic.rend7801 ] - br i1 %t169, label %then7802, label %endif7804 -then7802: + br label %logic.rend8142 +logic.rend8142: + br label %logic.end8141 +logic.end8141: + %t169 = phi i1 [ true, %logic.from8139 ], [ %t168, %logic.rend8142 ] + br i1 %t169, label %then8143, label %endif8145 +then8143: %t170 = load ptr, ptr %a1 %t171 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t170, %S.ast.Node %t171, i64 1) @@ -70627,32 +75005,32 @@ then7802: %t175 = load { ptr, i64, i64 }, ptr %t174 %t176 = extractvalue { ptr, i64, i64 } %t175, 1 %t177 = icmp uge i64 1, %t176 - br i1 %t177, label %range7805, label %inrange7806 -range7805: - call void @finch_panic_index(ptr @.str.5275, i64 4814, i64 1, i64 %t176) + br i1 %t177, label %range8146, label %inrange8147 +range8146: + call void @finch_panic_index(ptr @.str.5533, i64 4978, i64 1, i64 %t176) unreachable -inrange7806: +inrange8147: %t178 = extractvalue { ptr, i64, i64 } %t175, 0 %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 1 %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.strArg(ptr %t173, %S.ast.Node %t180, { ptr, i64, i64 } { ptr @.str.5276, i64 20, i64 0 }) + %t181 = call %S.gen.Val @finch.gen.strArg(ptr %t173, %S.ast.Node %t180, { ptr, i64, i64 } { ptr @.str.5534, i64 20, i64 0 }) %t182 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t172, %S.gen.Val %t181) store { ptr, i64, i64 } %t182, ptr %a183 %t184 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.5277, i64 4, i64 0 }, ptr %a186 + store { ptr, i64, i64 } { ptr @.str.5535, i64 4, i64 0 }, ptr %a186 %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) %t188 = icmp ne i32 %t187, 0 - br i1 %t188, label %then7807, label %endif7809 -then7807: + br i1 %t188, label %then8148, label %endif8150 +then8148: %t189 = load ptr, ptr %a1 %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5278, i64 29, i64 0 }, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.5536, i64 29, i64 0 }, ptr %a192 store { ptr, i64, i64 } %t190, ptr %a193 call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) %t194 = load { ptr, i64, i64 }, ptr %a191 store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.5279, i64 6, i64 0 }, ptr %a197 + store { ptr, i64, i64 } { ptr @.str.5537, i64 6, i64 0 }, ptr %a197 call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) %t198 = load { ptr, i64, i64 }, ptr %a195 %t199 = load { ptr, i64, i64 }, ptr %a183 @@ -70661,30 +75039,30 @@ then7807: call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5280, i64 1, i64 0 }, ptr %a206 + store { ptr, i64, i64 } { ptr @.str.5538, i64 1, i64 0 }, ptr %a206 call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) %t207 = load { ptr, i64, i64 }, ptr %a204 %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t189, { ptr, i64, i64 } %t207) %t209 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t208, 0 - %t210 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5281, i64 3, i64 0 }) + %t210 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5539, i64 3, i64 0 }) %t211 = insertvalue %S.gen.Val %t209, %S.ast.Type %t210, 1 ret %S.gen.Val %t211 -endif7809: +endif8150: %t212 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t212, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5282, i64 8, i64 0 }, ptr %a214 + store { ptr, i64, i64 } { ptr @.str.5540, i64 8, i64 0 }, ptr %a214 %t215 = call i32 @finch_str_eq(ptr %a213, ptr %a214) %t216 = icmp ne i32 %t215, 0 - br i1 %t216, label %then7810, label %endif7812 -then7810: + br i1 %t216, label %then8151, label %endif8153 +then8151: %t217 = load ptr, ptr %a1 %t218 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5283, i64 29, i64 0 }, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.5541, i64 29, i64 0 }, ptr %a220 store { ptr, i64, i64 } %t218, ptr %a221 call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) %t222 = load { ptr, i64, i64 }, ptr %a219 store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.5542, i64 6, i64 0 }, ptr %a225 call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) %t226 = load { ptr, i64, i64 }, ptr %a223 %t227 = load { ptr, i64, i64 }, ptr %a183 @@ -70693,46 +75071,46 @@ then7810: call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) %t231 = load { ptr, i64, i64 }, ptr %a228 store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.5285, i64 1, i64 0 }, ptr %a234 + store { ptr, i64, i64 } { ptr @.str.5543, i64 1, i64 0 }, ptr %a234 call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) %t235 = load { ptr, i64, i64 }, ptr %a232 %t236 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t235) store { ptr, i64, i64 } %t236, ptr %a237 %t238 = load ptr, ptr %a1 %t239 = load { ptr, i64, i64 }, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5286, i64 13, i64 0 }, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.5544, i64 13, i64 0 }, ptr %a241 store { ptr, i64, i64 } %t239, ptr %a242 call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) %t243 = load { ptr, i64, i64 }, ptr %a240 store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5287, i64 3, i64 0 }, ptr %a246 + store { ptr, i64, i64 } { ptr @.str.5545, i64 3, i64 0 }, ptr %a246 call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) %t247 = load { ptr, i64, i64 }, ptr %a244 %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t238, { ptr, i64, i64 } %t247) %t249 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t248, 0 - %t250 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5288, i64 4, i64 0 }) + %t250 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5546, i64 4, i64 0 }) %t251 = insertvalue %S.gen.Val %t249, %S.ast.Type %t250, 1 ret %S.gen.Val %t251 -endif7812: - store { ptr, i64, i64 } { ptr @.str.5289, i64 17, i64 0 }, ptr %a252 +endif8153: + store { ptr, i64, i64 } { ptr @.str.5547, i64 17, i64 0 }, ptr %a252 %t253 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.5290, i64 9, i64 0 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.5548, i64 9, i64 0 }, ptr %a255 %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then7813, label %endif7815 -then7813: - store { ptr, i64, i64 } { ptr @.str.5291, i64 15, i64 0 }, ptr %a252 - br label %endif7815 -endif7815: + br i1 %t257, label %then8154, label %endif8156 +then8154: + store { ptr, i64, i64 } { ptr @.str.5549, i64 15, i64 0 }, ptr %a252 + br label %endif8156 +endif8156: %t258 = load ptr, ptr %a1 %t259 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.5292, i64 9, i64 0 }, ptr %a261 + store { ptr, i64, i64 } { ptr @.str.5550, i64 9, i64 0 }, ptr %a261 store { ptr, i64, i64 } %t259, ptr %a262 call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) %t263 = load { ptr, i64, i64 }, ptr %a260 store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.5293, i64 5, i64 0 }, ptr %a266 + store { ptr, i64, i64 } { ptr @.str.5551, i64 5, i64 0 }, ptr %a266 call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) %t267 = load { ptr, i64, i64 }, ptr %a264 %t268 = load { ptr, i64, i64 }, ptr %a3 @@ -70741,7 +75119,7 @@ endif7815: call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) %t272 = load { ptr, i64, i64 }, ptr %a269 store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.5294, i64 6, i64 0 }, ptr %a275 + store { ptr, i64, i64 } { ptr @.str.5552, i64 6, i64 0 }, ptr %a275 call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) %t276 = load { ptr, i64, i64 }, ptr %a273 %t277 = load { ptr, i64, i64 }, ptr %a183 @@ -70750,73 +75128,73 @@ endif7815: call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) %t281 = load { ptr, i64, i64 }, ptr %a278 store { ptr, i64, i64 } %t281, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.5295, i64 1, i64 0 }, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.5553, i64 1, i64 0 }, ptr %a284 call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) %t285 = load { ptr, i64, i64 }, ptr %a282 %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t285) store { ptr, i64, i64 } %t286, ptr %a287 %t288 = load ptr, ptr %a1 %t289 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5296, i64 12, i64 0 }, ptr %a291 + store { ptr, i64, i64 } { ptr @.str.5554, i64 12, i64 0 }, ptr %a291 store { ptr, i64, i64 } %t289, ptr %a292 call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) %t293 = load { ptr, i64, i64 }, ptr %a290 store { ptr, i64, i64 } %t293, ptr %a295 - store { ptr, i64, i64 } { ptr @.str.5297, i64 3, i64 0 }, ptr %a296 + store { ptr, i64, i64 } { ptr @.str.5555, i64 3, i64 0 }, ptr %a296 call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) %t297 = load { ptr, i64, i64 }, ptr %a294 %t298 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t297) %t299 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t298, 0 - %t300 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5298, i64 4, i64 0 }) + %t300 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5556, i64 4, i64 0 }) %t301 = insertvalue %S.gen.Val %t299, %S.ast.Type %t300, 1 ret %S.gen.Val %t301 -endif7804: +endif8145: %t302 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5299, i64 4, i64 0 }, ptr %a304 + store { ptr, i64, i64 } { ptr @.str.5557, i64 4, i64 0 }, ptr %a304 %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) %t306 = icmp ne i32 %t305, 0 - br label %logic.from7816 -logic.from7816: - br i1 %t306, label %logic.end7818, label %logic.rhs7817 -logic.rhs7817: + br label %logic.from8157 +logic.from8157: + br i1 %t306, label %logic.end8159, label %logic.rhs8158 +logic.rhs8158: %t307 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.5300, i64 5, i64 0 }, ptr %a309 + store { ptr, i64, i64 } { ptr @.str.5558, i64 5, i64 0 }, ptr %a309 %t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309) %t311 = icmp ne i32 %t310, 0 - br label %logic.rend7819 -logic.rend7819: - br label %logic.end7818 -logic.end7818: - %t312 = phi i1 [ true, %logic.from7816 ], [ %t311, %logic.rend7819 ] - br label %logic.from7820 -logic.from7820: - br i1 %t312, label %logic.end7822, label %logic.rhs7821 -logic.rhs7821: + br label %logic.rend8160 +logic.rend8160: + br label %logic.end8159 +logic.end8159: + %t312 = phi i1 [ true, %logic.from8157 ], [ %t311, %logic.rend8160 ] + br label %logic.from8161 +logic.from8161: + br i1 %t312, label %logic.end8163, label %logic.rhs8162 +logic.rhs8162: %t313 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.5301, i64 5, i64 0 }, ptr %a315 + store { ptr, i64, i64 } { ptr @.str.5559, i64 5, i64 0 }, ptr %a315 %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) %t317 = icmp ne i32 %t316, 0 - br label %logic.rend7823 -logic.rend7823: - br label %logic.end7822 -logic.end7822: - %t318 = phi i1 [ true, %logic.from7820 ], [ %t317, %logic.rend7823 ] - br i1 %t318, label %then7824, label %endif7826 -then7824: + br label %logic.rend8164 +logic.rend8164: + br label %logic.end8163 +logic.end8163: + %t318 = phi i1 [ true, %logic.from8161 ], [ %t317, %logic.rend8164 ] + br i1 %t318, label %then8165, label %endif8167 +then8165: %t319 = load ptr, ptr %a1 %t320 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t319, %S.ast.Node %t320, i64 0) %t321 = load ptr, ptr %a1 %t322 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5302, i64 21, i64 0 }, ptr %a324 + store { ptr, i64, i64 } { ptr @.str.5560, i64 21, i64 0 }, ptr %a324 store { ptr, i64, i64 } %t322, ptr %a325 call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) %t326 = load { ptr, i64, i64 }, ptr %a323 store { ptr, i64, i64 } %t326, ptr %a328 - store { ptr, i64, i64 } { ptr @.str.5303, i64 5, i64 0 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5561, i64 5, i64 0 }, ptr %a329 call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) %t330 = load { ptr, i64, i64 }, ptr %a327 %t331 = load { ptr, i64, i64 }, ptr %a12 @@ -70825,7 +75203,7 @@ then7824: call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) %t335 = load { ptr, i64, i64 }, ptr %a332 store { ptr, i64, i64 } %t335, ptr %a337 - store { ptr, i64, i64 } { ptr @.str.5304, i64 6, i64 0 }, ptr %a338 + store { ptr, i64, i64 } { ptr @.str.5562, i64 6, i64 0 }, ptr %a338 call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) %t339 = load { ptr, i64, i64 }, ptr %a336 %t340 = load { ptr, i64, i64 }, ptr %a3 @@ -70834,26 +75212,26 @@ then7824: call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) %t344 = load { ptr, i64, i64 }, ptr %a341 store { ptr, i64, i64 } %t344, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.5305, i64 1, i64 0 }, ptr %a347 + store { ptr, i64, i64 } { ptr @.str.5563, i64 1, i64 0 }, ptr %a347 call void @finch_str_concat(ptr %a345, ptr %a346, ptr %a347) %t348 = load { ptr, i64, i64 }, ptr %a345 call void @finch.gen.emit(ptr %t321, { ptr, i64, i64 } %t348) %t349 = load ptr, ptr %a1 %t350 = load { ptr, i64, i64 }, ptr %a12 - %t351 = call { ptr, i64, i64 } @finch.gen.load(ptr %t349, { ptr, i64, i64 } { ptr @.str.5306, i64 17, i64 0 }, { ptr, i64, i64 } %t350) + %t351 = call { ptr, i64, i64 } @finch.gen.load(ptr %t349, { ptr, i64, i64 } { ptr @.str.5564, i64 17, i64 0 }, { ptr, i64, i64 } %t350) %t352 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t351, 0 - %t353 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5307, i64 3, i64 0 }) + %t353 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5565, i64 3, i64 0 }) %t354 = insertvalue %S.gen.Val %t352, %S.ast.Type %t353, 1 %t355 = insertvalue %S.gen.Val %t354, i1 true, 2 ret %S.gen.Val %t355 -endif7826: +endif8167: %t356 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t356, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.5308, i64 7, i64 0 }, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.5566, i64 7, i64 0 }, ptr %a358 %t359 = call i32 @finch_str_eq(ptr %a357, ptr %a358) %t360 = icmp ne i32 %t359, 0 - br i1 %t360, label %then7827, label %endif7829 -then7827: + br i1 %t360, label %then8168, label %endif8170 +then8168: %t361 = load ptr, ptr %a1 %t362 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t361, %S.ast.Node %t362, i64 2) @@ -70863,15 +75241,15 @@ then7827: %t366 = load { ptr, i64, i64 }, ptr %t365 %t367 = extractvalue { ptr, i64, i64 } %t366, 1 %t368 = icmp uge i64 1, %t367 - br i1 %t368, label %range7830, label %inrange7831 -range7830: - call void @finch_panic_index(ptr @.str.5309, i64 4836, i64 1, i64 %t367) + br i1 %t368, label %range8171, label %inrange8172 +range8171: + call void @finch_panic_index(ptr @.str.5567, i64 5000, i64 1, i64 %t367) unreachable -inrange7831: +inrange8172: %t369 = extractvalue { ptr, i64, i64 } %t366, 0 %t370 = getelementptr inbounds %S.ast.Node, ptr %t369, i64 1 %t371 = load %S.ast.Node, ptr %t370 - %t372 = call %S.gen.Val @finch.gen.strArg(ptr %t364, %S.ast.Node %t371, { ptr, i64, i64 } { ptr @.str.5310, i64 19, i64 0 }) + %t372 = call %S.gen.Val @finch.gen.strArg(ptr %t364, %S.ast.Node %t371, { ptr, i64, i64 } { ptr @.str.5568, i64 19, i64 0 }) %t373 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t363, %S.gen.Val %t372) store { ptr, i64, i64 } %t373, ptr %a374 %t375 = load ptr, ptr %a1 @@ -70880,25 +75258,25 @@ inrange7831: %t378 = load { ptr, i64, i64 }, ptr %t377 %t379 = extractvalue { ptr, i64, i64 } %t378, 1 %t380 = icmp uge i64 2, %t379 - br i1 %t380, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.5311, i64 4837, i64 2, i64 %t379) + br i1 %t380, label %range8173, label %inrange8174 +range8173: + call void @finch_panic_index(ptr @.str.5569, i64 5001, i64 2, i64 %t379) unreachable -inrange7833: +inrange8174: %t381 = extractvalue { ptr, i64, i64 } %t378, 0 %t382 = getelementptr inbounds %S.ast.Node, ptr %t381, i64 2 %t383 = load %S.ast.Node, ptr %t382 - %t384 = call %S.gen.Val @finch.gen.strArg(ptr %t376, %S.ast.Node %t383, { ptr, i64, i64 } { ptr @.str.5312, i64 12, i64 0 }) + %t384 = call %S.gen.Val @finch.gen.strArg(ptr %t376, %S.ast.Node %t383, { ptr, i64, i64 } { ptr @.str.5570, i64 12, i64 0 }) %t385 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t375, %S.gen.Val %t384) store { ptr, i64, i64 } %t385, ptr %a386 %t387 = load ptr, ptr %a1 %t388 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5313, i64 33, i64 0 }, ptr %a390 + store { ptr, i64, i64 } { ptr @.str.5571, i64 33, i64 0 }, ptr %a390 store { ptr, i64, i64 } %t388, ptr %a391 call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) %t392 = load { ptr, i64, i64 }, ptr %a389 store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.5314, i64 6, i64 0 }, ptr %a395 + store { ptr, i64, i64 } { ptr @.str.5572, i64 6, i64 0 }, ptr %a395 call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) %t396 = load { ptr, i64, i64 }, ptr %a393 %t397 = load { ptr, i64, i64 }, ptr %a3 @@ -70907,7 +75285,7 @@ inrange7833: call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) %t401 = load { ptr, i64, i64 }, ptr %a398 store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5315, i64 6, i64 0 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.5573, i64 6, i64 0 }, ptr %a404 call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) %t405 = load { ptr, i64, i64 }, ptr %a402 %t406 = load { ptr, i64, i64 }, ptr %a374 @@ -70916,7 +75294,7 @@ inrange7833: call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) %t410 = load { ptr, i64, i64 }, ptr %a407 store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5316, i64 6, i64 0 }, ptr %a413 + store { ptr, i64, i64 } { ptr @.str.5574, i64 6, i64 0 }, ptr %a413 call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) %t414 = load { ptr, i64, i64 }, ptr %a411 %t415 = load { ptr, i64, i64 }, ptr %a386 @@ -70925,26 +75303,26 @@ inrange7833: call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) %t419 = load { ptr, i64, i64 }, ptr %a416 store { ptr, i64, i64 } %t419, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.5317, i64 1, i64 0 }, ptr %a422 + store { ptr, i64, i64 } { ptr @.str.5575, i64 1, i64 0 }, ptr %a422 call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) %t423 = load { ptr, i64, i64 }, ptr %a420 call void @finch.gen.emit(ptr %t387, { ptr, i64, i64 } %t423) %t424 = load ptr, ptr %a1 %t425 = load { ptr, i64, i64 }, ptr %a12 - %t426 = call { ptr, i64, i64 } @finch.gen.load(ptr %t424, { ptr, i64, i64 } { ptr @.str.5318, i64 17, i64 0 }, { ptr, i64, i64 } %t425) + %t426 = call { ptr, i64, i64 } @finch.gen.load(ptr %t424, { ptr, i64, i64 } { ptr @.str.5576, i64 17, i64 0 }, { ptr, i64, i64 } %t425) %t427 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t426, 0 - %t428 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5319, i64 3, i64 0 }) + %t428 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5577, i64 3, i64 0 }) %t429 = insertvalue %S.gen.Val %t427, %S.ast.Type %t428, 1 %t430 = insertvalue %S.gen.Val %t429, i1 true, 2 ret %S.gen.Val %t430 -endif7829: +endif8170: %t431 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.5320, i64 5, i64 0 }, ptr %a433 + store { ptr, i64, i64 } { ptr @.str.5578, i64 5, i64 0 }, ptr %a433 %t434 = call i32 @finch_str_eq(ptr %a432, ptr %a433) %t435 = icmp ne i32 %t434, 0 - br i1 %t435, label %then7834, label %endif7836 -then7834: + br i1 %t435, label %then8175, label %endif8177 +then8175: %t436 = load ptr, ptr %a1 %t437 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t436, %S.ast.Node %t437, i64 1) @@ -70954,15 +75332,15 @@ then7834: %t441 = load { ptr, i64, i64 }, ptr %t440 %t442 = extractvalue { ptr, i64, i64 } %t441, 1 %t443 = icmp uge i64 1, %t442 - br i1 %t443, label %range7837, label %inrange7838 -range7837: - call void @finch_panic_index(ptr @.str.5321, i64 4843, i64 1, i64 %t442) + br i1 %t443, label %range8178, label %inrange8179 +range8178: + call void @finch_panic_index(ptr @.str.5579, i64 5007, i64 1, i64 %t442) unreachable -inrange7838: +inrange8179: %t444 = extractvalue { ptr, i64, i64 } %t441, 0 %t445 = getelementptr inbounds %S.ast.Node, ptr %t444, i64 1 %t446 = load %S.ast.Node, ptr %t445 - %t447 = call %S.gen.Val @finch.gen.strArg(ptr %t439, %S.ast.Node %t446, { ptr, i64, i64 } { ptr @.str.5322, i64 13, i64 0 }) + %t447 = call %S.gen.Val @finch.gen.strArg(ptr %t439, %S.ast.Node %t446, { ptr, i64, i64 } { ptr @.str.5580, i64 13, i64 0 }) %t448 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t438, %S.gen.Val %t447) store { ptr, i64, i64 } %t448, ptr %a449 %t450 = load ptr, ptr %a1 @@ -70970,12 +75348,12 @@ inrange7838: store { ptr, i64, i64 } %t451, ptr %a452 %t453 = load ptr, ptr %a1 %t454 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } { ptr @.str.5323, i64 31, i64 0 }, ptr %a456 + store { ptr, i64, i64 } { ptr @.str.5581, i64 31, i64 0 }, ptr %a456 store { ptr, i64, i64 } %t454, ptr %a457 call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) %t458 = load { ptr, i64, i64 }, ptr %a455 store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.5324, i64 6, i64 0 }, ptr %a461 + store { ptr, i64, i64 } { ptr @.str.5582, i64 6, i64 0 }, ptr %a461 call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) %t462 = load { ptr, i64, i64 }, ptr %a459 %t463 = load { ptr, i64, i64 }, ptr %a3 @@ -70984,7 +75362,7 @@ inrange7838: call void @finch_str_concat(ptr %a464, ptr %a465, ptr %a466) %t467 = load { ptr, i64, i64 }, ptr %a464 store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.5325, i64 6, i64 0 }, ptr %a470 + store { ptr, i64, i64 } { ptr @.str.5583, i64 6, i64 0 }, ptr %a470 call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) %t471 = load { ptr, i64, i64 }, ptr %a468 %t472 = load { ptr, i64, i64 }, ptr %a449 @@ -70993,27 +75371,27 @@ inrange7838: call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) %t476 = load { ptr, i64, i64 }, ptr %a473 store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.5326, i64 1, i64 0 }, ptr %a479 + store { ptr, i64, i64 } { ptr @.str.5584, i64 1, i64 0 }, ptr %a479 call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) %t480 = load { ptr, i64, i64 }, ptr %a477 call void @finch.gen.emit(ptr %t453, { ptr, i64, i64 } %t480) %t481 = load ptr, ptr %a1 %t482 = load { ptr, i64, i64 }, ptr %a452 - %t483 = call { ptr, i64, i64 } @finch.gen.load(ptr %t481, { ptr, i64, i64 } { ptr @.str.5327, i64 17, i64 0 }, { ptr, i64, i64 } %t482) + %t483 = call { ptr, i64, i64 } @finch.gen.load(ptr %t481, { ptr, i64, i64 } { ptr @.str.5585, i64 17, i64 0 }, { ptr, i64, i64 } %t482) %t484 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t483, 0 - %t485 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5328, i64 3, i64 0 }) + %t485 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5586, i64 3, i64 0 }) %t486 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t485) %t487 = insertvalue %S.gen.Val %t484, %S.ast.Type %t486, 1 %t488 = insertvalue %S.gen.Val %t487, i1 true, 2 ret %S.gen.Val %t488 -endif7836: +endif8177: %t489 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t489, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.5329, i64 6, i64 0 }, ptr %a491 + store { ptr, i64, i64 } { ptr @.str.5587, i64 6, i64 0 }, ptr %a491 %t492 = call i32 @finch_str_eq(ptr %a490, ptr %a491) %t493 = icmp ne i32 %t492, 0 - br i1 %t493, label %then7839, label %endif7841 -then7839: + br i1 %t493, label %then8180, label %endif8182 +then8180: %t494 = load ptr, ptr %a1 %t495 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t494, %S.ast.Node %t495, i64 1) @@ -71023,29 +75401,29 @@ then7839: %t499 = load { ptr, i64, i64 }, ptr %t498 %t500 = extractvalue { ptr, i64, i64 } %t499, 1 %t501 = icmp uge i64 1, %t500 - br i1 %t501, label %range7842, label %inrange7843 -range7842: - call void @finch_panic_index(ptr @.str.5330, i64 4850, i64 1, i64 %t500) + br i1 %t501, label %range8183, label %inrange8184 +range8183: + call void @finch_panic_index(ptr @.str.5588, i64 5014, i64 1, i64 %t500) unreachable -inrange7843: +inrange8184: %t502 = extractvalue { ptr, i64, i64 } %t499, 0 %t503 = getelementptr inbounds %S.ast.Node, ptr %t502, i64 1 %t504 = load %S.ast.Node, ptr %t503 %t505 = call %S.gen.Val @finch.gen.expr(ptr %t497, %S.ast.Node %t504) - %t506 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5331, i64 3, i64 0 }) + %t506 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }) %t507 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 %t508 = load { ptr, i64, i64 }, ptr %t507 %t509 = extractvalue { ptr, i64, i64 } %t508, 1 %t510 = icmp uge i64 1, %t509 - br i1 %t510, label %range7844, label %inrange7845 -range7844: - call void @finch_panic_index(ptr @.str.5332, i64 4850, i64 1, i64 %t509) + br i1 %t510, label %range8185, label %inrange8186 +range8185: + call void @finch_panic_index(ptr @.str.5590, i64 5014, i64 1, i64 %t509) unreachable -inrange7845: +inrange8186: %t511 = extractvalue { ptr, i64, i64 } %t508, 0 %t512 = getelementptr inbounds %S.ast.Node, ptr %t511, i64 1 %t513 = load %S.ast.Node, ptr %t512 - %t514 = call %S.gen.Val @finch.gen.coerce(ptr %t496, %S.gen.Val %t505, %S.ast.Type %t506, %S.ast.Node %t513, { ptr, i64, i64 } { ptr @.str.5333, i64 9, i64 0 }) + %t514 = call %S.gen.Val @finch.gen.coerce(ptr %t496, %S.gen.Val %t505, %S.ast.Type %t506, %S.ast.Node %t513, { ptr, i64, i64 } { ptr @.str.5591, i64 9, i64 0 }) %t515 = extractvalue %S.gen.Val %t514, 0 store { ptr, i64, i64 } %t515, ptr %a516 call void @finch_str_copy(ptr %a517, ptr %a516) @@ -71053,12 +75431,12 @@ inrange7845: store { ptr, i64, i64 } %t518, ptr %a519 %t520 = load ptr, ptr %a1 %t521 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5334, i64 32, i64 0 }, ptr %a523 + store { ptr, i64, i64 } { ptr @.str.5592, i64 32, i64 0 }, ptr %a523 store { ptr, i64, i64 } %t521, ptr %a524 call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) %t525 = load { ptr, i64, i64 }, ptr %a522 store { ptr, i64, i64 } %t525, ptr %a527 - store { ptr, i64, i64 } { ptr @.str.5335, i64 6, i64 0 }, ptr %a528 + store { ptr, i64, i64 } { ptr @.str.5593, i64 6, i64 0 }, ptr %a528 call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) %t529 = load { ptr, i64, i64 }, ptr %a526 %t530 = load { ptr, i64, i64 }, ptr %a3 @@ -71067,7 +75445,7 @@ inrange7845: call void @finch_str_concat(ptr %a531, ptr %a532, ptr %a533) %t534 = load { ptr, i64, i64 }, ptr %a531 store { ptr, i64, i64 } %t534, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.5336, i64 6, i64 0 }, ptr %a537 + store { ptr, i64, i64 } { ptr @.str.5594, i64 6, i64 0 }, ptr %a537 call void @finch_str_concat(ptr %a535, ptr %a536, ptr %a537) %t538 = load { ptr, i64, i64 }, ptr %a535 %t539 = load { ptr, i64, i64 }, ptr %a519 @@ -71076,26 +75454,26 @@ inrange7845: call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) %t543 = load { ptr, i64, i64 }, ptr %a540 store { ptr, i64, i64 } %t543, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5337, i64 1, i64 0 }, ptr %a546 + store { ptr, i64, i64 } { ptr @.str.5595, i64 1, i64 0 }, ptr %a546 call void @finch_str_concat(ptr %a544, ptr %a545, ptr %a546) %t547 = load { ptr, i64, i64 }, ptr %a544 call void @finch.gen.emit(ptr %t520, { ptr, i64, i64 } %t547) %t548 = load ptr, ptr %a1 %t549 = load { ptr, i64, i64 }, ptr %a12 - %t550 = call { ptr, i64, i64 } @finch.gen.load(ptr %t548, { ptr, i64, i64 } { ptr @.str.5338, i64 17, i64 0 }, { ptr, i64, i64 } %t549) + %t550 = call { ptr, i64, i64 } @finch.gen.load(ptr %t548, { ptr, i64, i64 } { ptr @.str.5596, i64 17, i64 0 }, { ptr, i64, i64 } %t549) %t551 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t550, 0 - %t552 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5339, i64 3, i64 0 }) + %t552 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5597, i64 3, i64 0 }) %t553 = insertvalue %S.gen.Val %t551, %S.ast.Type %t552, 1 %t554 = insertvalue %S.gen.Val %t553, i1 true, 2 ret %S.gen.Val %t554 -endif7841: +endif8182: %t555 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.5340, i64 5, i64 0 }, ptr %a557 + store { ptr, i64, i64 } { ptr @.str.5598, i64 5, i64 0 }, ptr %a557 %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) %t559 = icmp ne i32 %t558, 0 - br i1 %t559, label %then7846, label %endif7848 -then7846: + br i1 %t559, label %then8187, label %endif8189 +then8187: %t560 = load ptr, ptr %a1 %t561 = load %S.ast.Node, ptr %a2 call void @finch.gen.need(ptr %t560, %S.ast.Node %t561, i64 0) @@ -71104,12 +75482,12 @@ then7846: store { ptr, i64, i64 } %t563, ptr %a564 %t565 = load ptr, ptr %a1 %t566 = load { ptr, i64, i64 }, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5341, i64 36, i64 0 }, ptr %a568 + store { ptr, i64, i64 } { ptr @.str.5599, i64 36, i64 0 }, ptr %a568 store { ptr, i64, i64 } %t566, ptr %a569 call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) %t570 = load { ptr, i64, i64 }, ptr %a567 store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.5342, i64 6, i64 0 }, ptr %a573 + store { ptr, i64, i64 } { ptr @.str.5600, i64 6, i64 0 }, ptr %a573 call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) %t574 = load { ptr, i64, i64 }, ptr %a571 %t575 = load { ptr, i64, i64 }, ptr %a3 @@ -71118,29 +75496,29 @@ then7846: call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) %t579 = load { ptr, i64, i64 }, ptr %a576 store { ptr, i64, i64 } %t579, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5343, i64 1, i64 0 }, ptr %a582 + store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a582 call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) %t583 = load { ptr, i64, i64 }, ptr %a580 call void @finch.gen.emit(ptr %t565, { ptr, i64, i64 } %t583) %t584 = load ptr, ptr %a1 %t585 = load { ptr, i64, i64 }, ptr %a564 - %t586 = call { ptr, i64, i64 } @finch.gen.load(ptr %t584, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }, { ptr, i64, i64 } %t585) + %t586 = call { ptr, i64, i64 } @finch.gen.load(ptr %t584, { ptr, i64, i64 } { ptr @.str.5602, i64 17, i64 0 }, { ptr, i64, i64 } %t585) %t587 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t586, 0 - %t588 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5345, i64 2, i64 0 }) + %t588 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5603, i64 2, i64 0 }) %t589 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t588) %t590 = insertvalue %S.gen.Val %t587, %S.ast.Type %t589, 1 %t591 = insertvalue %S.gen.Val %t590, i1 true, 2 ret %S.gen.Val %t591 -endif7848: +endif8189: %t592 = load ptr, ptr %a1 %t593 = load %S.ast.Node, ptr %a2 %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5346, i64 21, i64 0 }, ptr %a596 + store { ptr, i64, i64 } { ptr @.str.5604, i64 21, i64 0 }, ptr %a596 store { ptr, i64, i64 } %t594, ptr %a597 call void @finch_str_concat(ptr %a595, ptr %a596, ptr %a597) %t598 = load { ptr, i64, i64 }, ptr %a595 store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.5347, i64 106, i64 0 }, ptr %a601 + store { ptr, i64, i64 } { ptr @.str.5605, i64 106, i64 0 }, ptr %a601 call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) %t602 = load { ptr, i64, i64 }, ptr %a599 call void @finch.gen.fail(ptr %t592, %S.ast.Node %t593, { ptr, i64, i64 } %t602) @@ -71158,157 +75536,157 @@ entry: %t1 = mul i64 71, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t2 = call ptr @finch_alloc(i64 %t1) %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.5348, i64 54, i64 0 }, ptr %t3 + store { ptr, i64, i64 } { ptr @.str.5606, i64 54, i64 0 }, ptr %t3 %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.5349, i64 65, i64 0 }, ptr %t4 + store { ptr, i64, i64 } { ptr @.str.5607, i64 65, i64 0 }, ptr %t4 %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.5350, i64 29, i64 0 }, ptr %t5 + store { ptr, i64, i64 } { ptr @.str.5608, i64 29, i64 0 }, ptr %t5 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.5351, i64 38, i64 0 }, ptr %t6 + store { ptr, i64, i64 } { ptr @.str.5609, i64 38, i64 0 }, ptr %t6 %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.5352, i64 32, i64 0 }, ptr %t7 + store { ptr, i64, i64 } { ptr @.str.5610, i64 32, i64 0 }, ptr %t7 %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.5353, i64 45, i64 0 }, ptr %t8 + store { ptr, i64, i64 } { ptr @.str.5611, i64 45, i64 0 }, ptr %t8 %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.5354, i64 35, i64 0 }, ptr %t9 + store { ptr, i64, i64 } { ptr @.str.5612, i64 35, i64 0 }, ptr %t9 %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.5355, i64 36, i64 0 }, ptr %t10 + store { ptr, i64, i64 } { ptr @.str.5613, i64 36, i64 0 }, ptr %t10 %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.5356, i64 42, i64 0 }, ptr %t11 + store { ptr, i64, i64 } { ptr @.str.5614, i64 42, i64 0 }, ptr %t11 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.5357, i64 37, i64 0 }, ptr %t12 + store { ptr, i64, i64 } { ptr @.str.5615, i64 37, i64 0 }, ptr %t12 %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.5358, i64 38, i64 0 }, ptr %t13 + store { ptr, i64, i64 } { ptr @.str.5616, i64 38, i64 0 }, ptr %t13 %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.5359, i64 42, i64 0 }, ptr %t14 + store { ptr, i64, i64 } { ptr @.str.5617, i64 42, i64 0 }, ptr %t14 %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.5360, i64 38, i64 0 }, ptr %t15 + store { ptr, i64, i64 } { ptr @.str.5618, i64 38, i64 0 }, ptr %t15 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.5361, i64 37, i64 0 }, ptr %t16 + store { ptr, i64, i64 } { ptr @.str.5619, i64 37, i64 0 }, ptr %t16 %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.5362, i64 42, i64 0 }, ptr %t17 + store { ptr, i64, i64 } { ptr @.str.5620, i64 42, i64 0 }, ptr %t17 %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.5363, i64 42, i64 0 }, ptr %t18 + store { ptr, i64, i64 } { ptr @.str.5621, i64 42, i64 0 }, ptr %t18 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.5364, i64 34, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.5622, i64 34, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.5365, i64 42, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.5623, i64 42, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.5366, i64 43, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.5624, i64 43, i64 0 }, ptr %t21 %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.5367, i64 47, i64 0 }, ptr %t22 + store { ptr, i64, i64 } { ptr @.str.5625, i64 47, i64 0 }, ptr %t22 %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.5368, i64 50, i64 0 }, ptr %t23 + store { ptr, i64, i64 } { ptr @.str.5626, i64 50, i64 0 }, ptr %t23 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.5369, i64 43, i64 0 }, ptr %t24 + store { ptr, i64, i64 } { ptr @.str.5627, i64 43, i64 0 }, ptr %t24 %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.5370, i64 44, i64 0 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.5628, i64 44, i64 0 }, ptr %t25 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.5371, i64 49, i64 0 }, ptr %t26 + store { ptr, i64, i64 } { ptr @.str.5629, i64 49, i64 0 }, ptr %t26 %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.5372, i64 57, i64 0 }, ptr %t27 + store { ptr, i64, i64 } { ptr @.str.5630, i64 57, i64 0 }, ptr %t27 %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.5373, i64 37, i64 0 }, ptr %t28 + store { ptr, i64, i64 } { ptr @.str.5631, i64 37, i64 0 }, ptr %t28 %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.5374, i64 39, i64 0 }, ptr %t29 + store { ptr, i64, i64 } { ptr @.str.5632, i64 39, i64 0 }, ptr %t29 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.5375, i64 37, i64 0 }, ptr %t30 + store { ptr, i64, i64 } { ptr @.str.5633, i64 37, i64 0 }, ptr %t30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.5376, i64 38, i64 0 }, ptr %t31 + store { ptr, i64, i64 } { ptr @.str.5634, i64 38, i64 0 }, ptr %t31 %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.5377, i64 39, i64 0 }, ptr %t32 + store { ptr, i64, i64 } { ptr @.str.5635, i64 39, i64 0 }, ptr %t32 %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.5378, i64 39, i64 0 }, ptr %t33 + store { ptr, i64, i64 } { ptr @.str.5636, i64 39, i64 0 }, ptr %t33 %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.5379, i64 51, i64 0 }, ptr %t34 + store { ptr, i64, i64 } { ptr @.str.5637, i64 51, i64 0 }, ptr %t34 %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.5380, i64 44, i64 0 }, ptr %t35 + store { ptr, i64, i64 } { ptr @.str.5638, i64 44, i64 0 }, ptr %t35 %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.5381, i64 43, i64 0 }, ptr %t36 + store { ptr, i64, i64 } { ptr @.str.5639, i64 43, i64 0 }, ptr %t36 %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.5382, i64 45, i64 0 }, ptr %t37 + store { ptr, i64, i64 } { ptr @.str.5640, i64 45, i64 0 }, ptr %t37 %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.5383, i64 44, i64 0 }, ptr %t38 + store { ptr, i64, i64 } { ptr @.str.5641, i64 44, i64 0 }, ptr %t38 %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.5384, i64 52, i64 0 }, ptr %t39 + store { ptr, i64, i64 } { ptr @.str.5642, i64 52, i64 0 }, ptr %t39 %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.5385, i64 57, i64 0 }, ptr %t40 + store { ptr, i64, i64 } { ptr @.str.5643, i64 57, i64 0 }, ptr %t40 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.5386, i64 48, i64 0 }, ptr %t41 + store { ptr, i64, i64 } { ptr @.str.5644, i64 48, i64 0 }, ptr %t41 %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.5387, i64 34, i64 0 }, ptr %t42 + store { ptr, i64, i64 } { ptr @.str.5645, i64 34, i64 0 }, ptr %t42 %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.5388, i64 48, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.5646, i64 48, i64 0 }, ptr %t43 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.5389, i64 60, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.5647, i64 60, i64 0 }, ptr %t44 %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.5390, i64 55, i64 0 }, ptr %t45 + store { ptr, i64, i64 } { ptr @.str.5648, i64 55, i64 0 }, ptr %t45 %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.5391, i64 46, i64 0 }, ptr %t46 + store { ptr, i64, i64 } { ptr @.str.5649, i64 46, i64 0 }, ptr %t46 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.5392, i64 48, i64 0 }, ptr %t47 + store { ptr, i64, i64 } { ptr @.str.5650, i64 48, i64 0 }, ptr %t47 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.5393, i64 43, i64 0 }, ptr %t48 + store { ptr, i64, i64 } { ptr @.str.5651, i64 43, i64 0 }, ptr %t48 %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.5394, i64 45, i64 0 }, ptr %t49 + store { ptr, i64, i64 } { ptr @.str.5652, i64 45, i64 0 }, ptr %t49 %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.5395, i64 59, i64 0 }, ptr %t50 + store { ptr, i64, i64 } { ptr @.str.5653, i64 59, i64 0 }, ptr %t50 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.5396, i64 49, i64 0 }, ptr %t51 + store { ptr, i64, i64 } { ptr @.str.5654, i64 49, i64 0 }, ptr %t51 %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.5397, i64 39, i64 0 }, ptr %t52 + store { ptr, i64, i64 } { ptr @.str.5655, i64 39, i64 0 }, ptr %t52 %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.5398, i64 39, i64 0 }, ptr %t53 + store { ptr, i64, i64 } { ptr @.str.5656, i64 39, i64 0 }, ptr %t53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.5399, i64 35, i64 0 }, ptr %t54 + store { ptr, i64, i64 } { ptr @.str.5657, i64 35, i64 0 }, ptr %t54 %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.5400, i64 35, i64 0 }, ptr %t55 + store { ptr, i64, i64 } { ptr @.str.5658, i64 35, i64 0 }, ptr %t55 %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.5401, i64 45, i64 0 }, ptr %t56 + store { ptr, i64, i64 } { ptr @.str.5659, i64 45, i64 0 }, ptr %t56 %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.5402, i64 47, i64 0 }, ptr %t57 + store { ptr, i64, i64 } { ptr @.str.5660, i64 47, i64 0 }, ptr %t57 %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.5403, i64 47, i64 0 }, ptr %t58 + store { ptr, i64, i64 } { ptr @.str.5661, i64 47, i64 0 }, ptr %t58 %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.5404, i64 48, i64 0 }, ptr %t59 + store { ptr, i64, i64 } { ptr @.str.5662, i64 48, i64 0 }, ptr %t59 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.5405, i64 44, i64 0 }, ptr %t60 + store { ptr, i64, i64 } { ptr @.str.5663, i64 44, i64 0 }, ptr %t60 %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.5406, i64 37, i64 0 }, ptr %t61 + store { ptr, i64, i64 } { ptr @.str.5664, i64 37, i64 0 }, ptr %t61 %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.5407, i64 49, i64 0 }, ptr %t62 + store { ptr, i64, i64 } { ptr @.str.5665, i64 49, i64 0 }, ptr %t62 %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.5408, i64 39, i64 0 }, ptr %t63 + store { ptr, i64, i64 } { ptr @.str.5666, i64 39, i64 0 }, ptr %t63 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.5409, i64 29, i64 0 }, ptr %t64 + store { ptr, i64, i64 } { ptr @.str.5667, i64 29, i64 0 }, ptr %t64 %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.5410, i64 35, i64 0 }, ptr %t65 + store { ptr, i64, i64 } { ptr @.str.5668, i64 35, i64 0 }, ptr %t65 %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.5411, i64 29, i64 0 }, ptr %t66 + store { ptr, i64, i64 } { ptr @.str.5669, i64 29, i64 0 }, ptr %t66 %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.5412, i64 24, i64 0 }, ptr %t67 + store { ptr, i64, i64 } { ptr @.str.5670, i64 24, i64 0 }, ptr %t67 %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.5413, i64 40, i64 0 }, ptr %t68 + store { ptr, i64, i64 } { ptr @.str.5671, i64 40, i64 0 }, ptr %t68 %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.5414, i64 33, i64 0 }, ptr %t69 + store { ptr, i64, i64 } { ptr @.str.5672, i64 33, i64 0 }, ptr %t69 %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.5415, i64 34, i64 0 }, ptr %t70 + store { ptr, i64, i64 } { ptr @.str.5673, i64 34, i64 0 }, ptr %t70 %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.5416, i64 44, i64 0 }, ptr %t71 + store { ptr, i64, i64 } { ptr @.str.5674, i64 44, i64 0 }, ptr %t71 %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.5417, i64 32, i64 0 }, ptr %t72 + store { ptr, i64, i64 } { ptr @.str.5675, i64 32, i64 0 }, ptr %t72 %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.5418, i64 23, i64 0 }, ptr %t73 + store { ptr, i64, i64 } { ptr @.str.5676, i64 23, i64 0 }, ptr %t73 %t74 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 %t75 = insertvalue { ptr, i64, i64 } %t74, i64 71, 1 %t76 = insertvalue { ptr, i64, i64 } %t75, i64 71, 2 store { ptr, i64, i64 } %t76, ptr %a77 %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a77, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5419, i64 1, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.5677, i64 1, i64 0 }, ptr %a79 call void @finch_str_join(ptr %a80, ptr %a77, ptr %a79) %t81 = load { ptr, i64, i64 }, ptr %a80 store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5420, i64 1, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.5678, i64 1, i64 0 }, ptr %a84 call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) %t85 = load { ptr, i64, i64 }, ptr %a82 ret { ptr, i64, i64 } %t85 @@ -71358,32 +75736,32 @@ entry: %a88 = alloca { ptr, i64, i64 }, align 16 %a89 = alloca { ptr, i64, i64 }, align 16 store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5421, i64 52, i64 0 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.5679, i64 52, i64 0 }, ptr %a2 %t3 = load ptr, ptr %a1 %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic7849, label %ok7850 -panic7849: - call void @finch_panic(ptr @.str.5422, i64 4945, ptr @.str.5423) + br i1 %t4, label %panic8190, label %ok8191 +panic8190: + call void @finch_panic(ptr @.str.5680, i64 5109, ptr @.str.5681) unreachable -ok7850: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 27 +ok8191: + %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 29 %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 %t7 = load i1, ptr %t6 - br i1 %t7, label %then7851, label %endif7853 -then7851: + br i1 %t7, label %then8192, label %endif8194 +then8192: %t8 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t8, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5424, i64 17, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.5682, i64 17, i64 0 }, ptr %a11 call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) %t12 = load { ptr, i64, i64 }, ptr %a9 %t13 = load ptr, ptr %a1 %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic7854, label %ok7855 -panic7854: - call void @finch_panic(ptr @.str.5425, i64 4946, ptr @.str.5426) + br i1 %t14, label %panic8195, label %ok8196 +panic8195: + call void @finch_panic(ptr @.str.5683, i64 5110, ptr @.str.5684) unreachable -ok7855: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 27 +ok8196: + %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 29 %t16 = getelementptr inbounds %S.platform.Target, ptr %t15, i32 0, i32 0 %t17 = load { ptr, i64, i64 }, ptr %t16 store { ptr, i64, i64 } %t12, ptr %a19 @@ -71391,23 +75769,23 @@ ok7855: call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) %t21 = load { ptr, i64, i64 }, ptr %a18 store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5427, i64 3, i64 0 }, ptr %a24 + store { ptr, i64, i64 } { ptr @.str.5685, i64 3, i64 0 }, ptr %a24 call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) %t25 = load { ptr, i64, i64 }, ptr %a22 store { ptr, i64, i64 } %t25, ptr %a2 - br label %endif7853 -endif7853: + br label %endif8194 +endif8194: %t26 = load { ptr, i64, i64 }, ptr %a2 %t27 = load ptr, ptr %a1 %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic7856, label %ok7857 -panic7856: - call void @finch_panic(ptr @.str.5428, i64 4948, ptr @.str.5429) + br i1 %t28, label %panic8197, label %ok8198 +panic8197: + call void @finch_panic(ptr @.str.5686, i64 5112, ptr @.str.5687) unreachable -ok7857: +ok8198: %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 2 %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5430, i64 1, i64 0 }, ptr %a31 + store { ptr, i64, i64 } { ptr @.str.5688, i64 1, i64 0 }, ptr %a31 call void @finch_str_join(ptr %a32, ptr %t29, ptr %a31) %t33 = load { ptr, i64, i64 }, ptr %a32 store { ptr, i64, i64 } %t26, ptr %a35 @@ -71415,7 +75793,7 @@ ok7857: call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) %t37 = load { ptr, i64, i64 }, ptr %a34 store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5431, i64 2, i64 0 }, ptr %a40 + store { ptr, i64, i64 } { ptr @.str.5689, i64 2, i64 0 }, ptr %a40 call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 %t42 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() @@ -71424,40 +75802,40 @@ ok7857: call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) %t46 = load { ptr, i64, i64 }, ptr %a43 store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.5432, i64 1, i64 0 }, ptr %a49 + store { ptr, i64, i64 } { ptr @.str.5690, i64 1, i64 0 }, ptr %a49 call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) %t50 = load { ptr, i64, i64 }, ptr %a47 store { ptr, i64, i64 } %t50, ptr %a2 %t51 = load ptr, ptr %a1 %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic7858, label %ok7859 -panic7858: - call void @finch_panic(ptr @.str.5433, i64 4949, ptr @.str.5434) + br i1 %t52, label %panic8199, label %ok8200 +panic8199: + call void @finch_panic(ptr @.str.5691, i64 5113, ptr @.str.5692) unreachable -ok7859: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 26 +ok8200: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 28 %t54 = load i1, ptr %t53 - br i1 %t54, label %then7860, label %endif7862 -then7860: + br i1 %t54, label %then8201, label %endif8203 +then8201: %t55 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.5435, i64 62, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.5693, i64 62, i64 0 }, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 store { ptr, i64, i64 } %t59, ptr %a2 - br label %endif7862 -endif7862: + br label %endif8203 +endif8203: %t60 = load { ptr, i64, i64 }, ptr %a2 %t61 = load ptr, ptr %a1 %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic7863, label %ok7864 -panic7863: - call void @finch_panic(ptr @.str.5436, i64 4952, ptr @.str.5437) + br i1 %t62, label %panic8204, label %ok8205 +panic8204: + call void @finch_panic(ptr @.str.5694, i64 5116, ptr @.str.5695) unreachable -ok7864: +ok8205: %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 3 %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5438, i64 1, i64 0 }, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.5696, i64 1, i64 0 }, ptr %a65 call void @finch_str_join(ptr %a66, ptr %t63, ptr %a65) %t67 = load { ptr, i64, i64 }, ptr %a66 store { ptr, i64, i64 } %t60, ptr %a69 @@ -71467,18 +75845,18 @@ ok7864: store { ptr, i64, i64 } %t71, ptr %a2 %t72 = load ptr, ptr %a1 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.5439, i64 4953, ptr @.str.5440) + br i1 %t73, label %panic8206, label %ok8207 +panic8206: + call void @finch_panic(ptr @.str.5697, i64 5117, ptr @.str.5698) unreachable -ok7866: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 26 +ok8207: + %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 28 %t75 = load i1, ptr %t74 - br i1 %t75, label %then7867, label %endif7869 -then7867: + br i1 %t75, label %then8208, label %endif8210 +then8208: %t76 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5441, i64 1, i64 0 }, ptr %a79 + store { ptr, i64, i64 } { ptr @.str.5699, i64 1, i64 0 }, ptr %a79 call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) %t80 = load { ptr, i64, i64 }, ptr %a77 %t81 = load ptr, ptr %a1 @@ -71488,8 +75866,8 @@ then7867: call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) %t86 = load { ptr, i64, i64 }, ptr %a83 store { ptr, i64, i64 } %t86, ptr %a2 - br label %endif7869 -endif7869: + br label %endif8210 +endif8210: %t87 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t87, ptr %a88 call void @finch_str_copy(ptr %a89, ptr %a88) @@ -71506,20 +75884,20 @@ entry: %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 %t4 = load i64, ptr %t3 store i64 0, ptr %a5 - br label %n.cond7870 -n.cond7870: + br label %n.cond8211 +n.cond8211: %t6 = load i64, ptr %a5 %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body7871, label %n.end7872 -n.body7871: + br i1 %t7, label %n.body8212, label %n.end8213 +n.body8212: %t8 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t6 %t9 = getelementptr inbounds %S.ast.Program, ptr %t2, i64 %t6 call void @finch.copy.S_ast_Program(ptr %t8, ptr %t9) %t10 = load i64, ptr %a5 %t11 = add i64 %t10, 1 store i64 %t11, ptr %a5 - br label %n.cond7870 -n.end7872: + br label %n.cond8211 +n.end8213: ret void } @@ -71553,12 +75931,12 @@ entry: %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 2 %t2 = load i64, ptr %t1 store i64 0, ptr %a3 - br label %n.cond7873 -n.cond7873: + br label %n.cond8214 +n.cond8214: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body7874, label %n.end7875 -n.body7874: + br i1 %t5, label %n.body8215, label %n.end8216 +n.body8215: %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 %t7 = load ptr, ptr %t6 %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 @@ -71568,21 +75946,21 @@ n.body7874: %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 %t13 = load i64, ptr %t12 %t14 = icmp ne i64 %t13, 0 - br i1 %t14, label %entry.live7876, label %entry.next7877 -entry.live7876: + br i1 %t14, label %entry.live8217, label %entry.next8218 +entry.live8217: %t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t11, i32 0, i32 1 %t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 call void @finch_str_copy(ptr %t15, ptr %t16) %t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t11, i32 0, i32 2 %t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 call void @finch.copy.S_cimport_CFunc(ptr %t17, ptr %t18) - br label %entry.next7877 -entry.next7877: + br label %entry.next8218 +entry.next8218: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond7873 -n.end7875: + br label %n.cond8214 +n.end8216: ret void } @@ -71593,12 +75971,12 @@ entry: %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 2 %t2 = load i64, ptr %t1 store i64 0, ptr %a3 - br label %n.cond7878 -n.cond7878: + br label %n.cond8219 +n.cond8219: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body7879, label %n.end7880 -n.body7879: + br i1 %t5, label %n.body8220, label %n.end8221 +n.body8220: %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 %t7 = load ptr, ptr %t6 %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 @@ -71608,21 +75986,21 @@ n.body7879: %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 %t13 = load i64, ptr %t12 %t14 = icmp ne i64 %t13, 0 - br i1 %t14, label %entry.live7881, label %entry.next7882 -entry.live7881: + br i1 %t14, label %entry.live8222, label %entry.next8223 +entry.live8222: %t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t11, i32 0, i32 1 %t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 call void @finch_str_copy(ptr %t15, ptr %t16) %t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t11, i32 0, i32 2 %t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 call void @finch.copy.S_cimport_CConst(ptr %t17, ptr %t18) - br label %entry.next7882 -entry.next7882: + br label %entry.next8223 +entry.next8223: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond7878 -n.end7880: + br label %n.cond8219 +n.end8221: ret void } @@ -71633,12 +76011,12 @@ entry: %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 2 %t2 = load i64, ptr %t1 store i64 0, ptr %a3 - br label %n.cond7883 -n.cond7883: + br label %n.cond8224 +n.cond8224: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body7884, label %n.end7885 -n.body7884: + br i1 %t5, label %n.body8225, label %n.end8226 +n.body8225: %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 %t7 = load ptr, ptr %t6 %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 @@ -71648,21 +76026,21 @@ n.body7884: %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 %t13 = load i64, ptr %t12 %t14 = icmp ne i64 %t13, 0 - br i1 %t14, label %entry.live7886, label %entry.next7887 -entry.live7886: + br i1 %t14, label %entry.live8227, label %entry.next8228 +entry.live8227: %t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t11, i32 0, i32 1 %t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 call void @finch_str_copy(ptr %t15, ptr %t16) %t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t11, i32 0, i32 2 %t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 call void @finch.copy.S_ast_Type(ptr %t17, ptr %t18) - br label %entry.next7887 -entry.next7887: + br label %entry.next8228 +entry.next8228: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond7883 -n.end7885: + br label %n.cond8224 +n.end8226: ret void } @@ -71673,12 +76051,12 @@ entry: %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 2 %t2 = load i64, ptr %t1 store i64 0, ptr %a3 - br label %n.cond7888 -n.cond7888: + br label %n.cond8229 +n.cond8229: %t4 = load i64, ptr %a3 %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body7889, label %n.end7890 -n.body7889: + br i1 %t5, label %n.body8230, label %n.end8231 +n.body8230: %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %src, i32 0, i32 0 %t7 = load ptr, ptr %t6 %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 @@ -71688,21 +76066,21 @@ n.body7889: %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 %t13 = load i64, ptr %t12 %t14 = icmp ne i64 %t13, 0 - br i1 %t14, label %entry.live7891, label %entry.next7892 -entry.live7891: + br i1 %t14, label %entry.live8232, label %entry.next8233 +entry.live8232: %t15 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t11, i32 0, i32 1 %t16 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 call void @finch_str_copy(ptr %t15, ptr %t16) %t17 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t11, i32 0, i32 2 %t18 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 call void @finch.copy.S_cimport_CStruct(ptr %t17, ptr %t18) - br label %entry.next7892 -entry.next7892: + br label %entry.next8233 +entry.next8233: %t19 = load i64, ptr %a3 %t20 = add i64 %t19, 1 store i64 %t20, ptr %a3 - br label %n.cond7888 -n.end7890: + br label %n.cond8229 +n.end8231: ret void } @@ -71742,136 +76120,141 @@ entry: %a15 = alloca { ptr, i64, i64 }, align 16 %a19 = alloca %S.cimport.CImports, align 16 %a20 = alloca %S.cimport.CImports, align 16 - %a31 = alloca %S.platform.Target, align 16 - %a32 = alloca %S.platform.Target, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca %S.gen.Gen, align 16 - %a43 = alloca ptr, align 16 - %a72 = alloca i64, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca %S.platform.Target, align 16 + %a35 = alloca %S.platform.Target, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca %S.gen.Gen, align 16 + %a46 = alloca ptr, align 16 + %a75 = alloca i64, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 %a91 = alloca { ptr, i64, i64 }, align 16 %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a95 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 %a103 = alloca { ptr, i64, i64 }, align 16 %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 %a129 = alloca { ptr, i64, i64 }, align 16 %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a222 = alloca i64, align 16 - %a230 = alloca %S.gen.FnSig, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca i64, align 16 + %a197 = alloca { ptr, i64, i64 }, align 16 + %a198 = alloca { ptr, i64, i64 }, align 16 + %a199 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca i64, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a237 = alloca { ptr, i64, i64 }, align 16 %a239 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca %S.gen.FnSig, align 16 - %a275 = alloca %S.gen.FnSig, align 16 - %a277 = alloca %S.gen.FnSig, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a247 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca i64, align 16 + %a260 = alloca %S.gen.FnSig, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a280 = alloca { ptr, i64, i64 }, align 16 %a281 = alloca { ptr, i64, i64 }, align 16 %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 + %a284 = alloca { ptr, i64, i64 }, align 16 %a285 = alloca { ptr, i64, i64 }, align 16 %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 + %a304 = alloca %S.gen.FnSig, align 16 + %a305 = alloca %S.gen.FnSig, align 16 + %a307 = alloca %S.gen.FnSig, align 16 %a311 = alloca { ptr, i64, i64 }, align 16 %a312 = alloca { ptr, i64, i64 }, align 16 %a313 = alloca { ptr, i64, i64 }, align 16 %a315 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 + %a316 = alloca { ptr, i64, i64 }, align 16 + %a317 = alloca { ptr, i64, i64 }, align 16 %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 + %a322 = alloca { ptr, i64, i64 }, align 16 + %a323 = alloca { ptr, i64, i64 }, align 16 %a325 = alloca { ptr, i64, i64 }, align 16 %a326 = alloca { ptr, i64, i64 }, align 16 + %a327 = alloca { ptr, i64, i64 }, align 16 %a329 = alloca { ptr, i64, i64 }, align 16 %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 + %a336 = alloca { ptr, i64, i64 }, align 16 + %a337 = alloca { ptr, i64, i64 }, align 16 + %a338 = alloca { ptr, i64, i64 }, align 16 + %a341 = alloca { ptr, i64, i64 }, align 16 %a342 = alloca { ptr, i64, i64 }, align 16 %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 %a349 = alloca { ptr, i64, i64 }, align 16 + %a350 = alloca { ptr, i64, i64 }, align 16 %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 + %a354 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 + %a359 = alloca { ptr, i64, i64 }, align 16 + %a360 = alloca { ptr, i64, i64 }, align 16 %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 %a363 = alloca { ptr, i64, i64 }, align 16 + %a364 = alloca { ptr, i64, i64 }, align 16 %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 %a372 = alloca { ptr, i64, i64 }, align 16 + %a373 = alloca { ptr, i64, i64 }, align 16 + %a374 = alloca { ptr, i64, i64 }, align 16 %a377 = alloca { ptr, i64, i64 }, align 16 %a378 = alloca { ptr, i64, i64 }, align 16 + %a379 = alloca { ptr, i64, i64 }, align 16 + %a381 = alloca { ptr, i64, i64 }, align 16 %a382 = alloca { ptr, i64, i64 }, align 16 %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 %a386 = alloca { ptr, i64, i64 }, align 16 %a387 = alloca { ptr, i64, i64 }, align 16 %a388 = alloca { ptr, i64, i64 }, align 16 + %a391 = alloca { ptr, i64, i64 }, align 16 + %a392 = alloca { ptr, i64, i64 }, align 16 %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 + %a395 = alloca { ptr, i64, i64 }, align 16 + %a396 = alloca { ptr, i64, i64 }, align 16 + %a397 = alloca { ptr, i64, i64 }, align 16 %a400 = alloca { ptr, i64, i64 }, align 16 + %a401 = alloca { ptr, i64, i64 }, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 %a407 = alloca { ptr, i64, i64 }, align 16 %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 %a412 = alloca { ptr, i64, i64 }, align 16 %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 %a416 = alloca { ptr, i64, i64 }, align 16 %a417 = alloca { ptr, i64, i64 }, align 16 %a418 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 + %a423 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a428 = alloca { ptr, i64, i64 }, align 16 %a429 = alloca { ptr, i64, i64 }, align 16 %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 + %a437 = alloca { ptr, i64, i64 }, align 16 + %a438 = alloca { ptr, i64, i64 }, align 16 + %a439 = alloca { ptr, i64, i64 }, align 16 + %a441 = alloca { ptr, i64, i64 }, align 16 + %a442 = alloca { ptr, i64, i64 }, align 16 + %a443 = alloca { ptr, i64, i64 }, align 16 + %a446 = alloca { ptr, i64, i64 }, align 16 + %a447 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a452 = alloca { ptr, i64, i64 }, align 16 + %a455 = alloca { ptr, i64, i64 }, align 16 + %a456 = alloca { ptr, i64, i64 }, align 16 + %a457 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a460 = alloca { ptr, i64, i64 }, align 16 + %a461 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } %p1, ptr %a2 store %S.cimport.CImports %p2, ptr %a3 @@ -71900,651 +76283,1118 @@ entry: %t26 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 1 %t27 = load i1, ptr %t26 %t28 = insertvalue %S.gen.Gen %t25, i1 %t27, 26 - %t29 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 3 - %t30 = load %S.platform.Target, ptr %t29 - store %S.platform.Target %t30, ptr %a31 - call void @finch.copy.S_platform_Target(ptr %a32, ptr %a31) - %t33 = load %S.platform.Target, ptr %a32 - %t34 = insertvalue %S.gen.Gen %t28, %S.platform.Target %t33, 27 - %t35 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 2 - %t36 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_copy(ptr %a38, ptr %a37) - %t39 = load { ptr, i64, i64 }, ptr %a38 - %t40 = insertvalue %S.gen.Gen %t34, { ptr, i64, i64 } %t39, 28 - %t41 = insertvalue %S.gen.Gen %t40, i64 -1, 32 - store %S.gen.Gen %t41, ptr %a42 - store ptr %a42, ptr %a43 - %t44 = load ptr, ptr %a43 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic7893, label %ok7894 -panic7893: - call void @finch_panic(ptr @.str.5442, i64 4963, ptr @.str.5443) + %t29 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 2 + %t30 = load i1, ptr %t29 + %t31 = insertvalue %S.gen.Gen %t28, i1 %t30, 28 + %t32 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 4 + %t33 = load %S.platform.Target, ptr %t32 + store %S.platform.Target %t33, ptr %a34 + call void @finch.copy.S_platform_Target(ptr %a35, ptr %a34) + %t36 = load %S.platform.Target, ptr %a35 + %t37 = insertvalue %S.gen.Gen %t31, %S.platform.Target %t36, 29 + %t38 = getelementptr inbounds %S.gen.Options, ptr %a4, i32 0, i32 3 + %t39 = load { ptr, i64, i64 }, ptr %t38 + store { ptr, i64, i64 } %t39, ptr %a40 + call void @finch_str_copy(ptr %a41, ptr %a40) + %t42 = load { ptr, i64, i64 }, ptr %a41 + %t43 = insertvalue %S.gen.Gen %t37, { ptr, i64, i64 } %t42, 30 + %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 34 + store %S.gen.Gen %t44, ptr %a45 + store ptr %a45, ptr %a46 + %t47 = load ptr, ptr %a46 + %t48 = icmp eq ptr %t47, null + br i1 %t48, label %panic8234, label %ok8235 +panic8234: + call void @finch_panic(ptr @.str.5700, i64 5127, ptr @.str.5701) unreachable -ok7894: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 26 - %t47 = load i1, ptr %t46 - br i1 %t47, label %then7895, label %endif7897 -then7895: - %t48 = load ptr, ptr %a43 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic7898, label %ok7899 -panic7898: - call void @finch_panic(ptr @.str.5444, i64 4965, ptr @.str.5445) +ok8235: + %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 28 + %t50 = load i1, ptr %t49 + br i1 %t50, label %then8236, label %endif8238 +then8236: + %t51 = load ptr, ptr %a46 + %t52 = icmp eq ptr %t51, null + br i1 %t52, label %panic8239, label %ok8240 +panic8239: + call void @finch_panic(ptr @.str.5702, i64 5129, ptr @.str.5703) unreachable -ok7899: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 29 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t50, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t50 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } { ptr @.str.5446, i64 0, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - %t56 = load ptr, ptr %a43 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic7900, label %ok7901 -panic7900: - call void @finch_panic(ptr @.str.5447, i64 4966, ptr @.str.5448) +ok8240: + %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 31 + %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = add i64 %t55, 1 + call void @finch_arr_reserve(ptr %t53, i64 %t56, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t57 = load ptr, ptr %t53 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i64 %t55 + store { ptr, i64, i64 } { ptr @.str.5704, i64 0, i64 0 }, ptr %t58 + store i64 %t56, ptr %t54 + %t59 = load ptr, ptr %a46 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic8241, label %ok8242 +panic8241: + call void @finch_panic(ptr @.str.5705, i64 5130, ptr @.str.5706) unreachable -ok7901: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 29 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = add i64 %t60, 1 - call void @finch_arr_reserve(ptr %t58, i64 %t61, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t62 = load ptr, ptr %t58 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 %t60 - store { ptr, i64, i64 } { ptr @.str.5449, i64 33, i64 0 }, ptr %t63 - store i64 %t61, ptr %t59 - %t64 = load ptr, ptr %a43 - %t65 = icmp eq ptr %t64, null - br i1 %t65, label %panic7902, label %ok7903 -panic7902: - call void @finch_panic(ptr @.str.5450, i64 4967, ptr @.str.5451) +ok8242: + %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 31 + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i32 0, i32 1 + %t63 = load i64, ptr %t62 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %t61, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %t61 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } { ptr @.str.5707, i64 33, i64 0 }, ptr %t66 + store i64 %t64, ptr %t62 + %t67 = load ptr, ptr %a46 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic8243, label %ok8244 +panic8243: + call void @finch_panic(ptr @.str.5708, i64 5131, ptr @.str.5709) unreachable -ok7903: - %t66 = getelementptr inbounds %S.gen.Gen, ptr %t64, i32 0, i32 29 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load i64, ptr %t67 - %t69 = add i64 %t68, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t69, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t70 = load ptr, ptr %t66 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t68 - store { ptr, i64, i64 } { ptr @.str.5452, i64 38, i64 0 }, ptr %t71 - store i64 %t69, ptr %t67 - store i64 0, ptr %a72 - br label %each.cond7904 -each.cond7904: - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t74 = load i64, ptr %t73 - %t75 = load i64, ptr %a72 - %t76 = icmp slt i64 %t75, %t74 - br i1 %t76, label %each.body7905, label %each.end7907 -each.body7905: - %t77 = load ptr, ptr %a2 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i64 %t75 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a43 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic7908, label %ok7909 -panic7908: - call void @finch_panic(ptr @.str.5453, i64 4969, ptr @.str.5454) +ok8244: + %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 31 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 + %t71 = load i64, ptr %t70 + %t72 = add i64 %t71, 1 + call void @finch_arr_reserve(ptr %t69, i64 %t72, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t73 = load ptr, ptr %t69 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i64 %t71 + store { ptr, i64, i64 } { ptr @.str.5710, i64 38, i64 0 }, ptr %t74 + store i64 %t72, ptr %t70 + store i64 0, ptr %a75 + br label %each.cond8245 +each.cond8245: + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t77 = load i64, ptr %t76 + %t78 = load i64, ptr %a75 + %t79 = icmp slt i64 %t78, %t77 + br i1 %t79, label %each.body8246, label %each.end8248 +each.body8246: + %t80 = load ptr, ptr %a2 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i64 %t78 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = load ptr, ptr %a46 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic8249, label %ok8250 +panic8249: + call void @finch_panic(ptr @.str.5711, i64 5133, ptr @.str.5712) unreachable -ok7909: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 31 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load ptr, ptr %a43 - %t86 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.5455, i64 19, i64 0 }, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5456, i64 15, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - %t95 = load ptr, ptr %a43 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7910, label %ok7911 -panic7910: - call void @finch_panic(ptr @.str.5457, i64 4969, ptr @.str.5458) +ok8250: + %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 33 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 + %t88 = load ptr, ptr %a46 + %t89 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.5713, i64 19, i64 0 }, ptr %a91 + store { ptr, i64, i64 } %t89, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a90 + store { ptr, i64, i64 } %t93, ptr %a95 + store { ptr, i64, i64 } { ptr @.str.5714, i64 15, i64 0 }, ptr %a96 + call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) + %t97 = load { ptr, i64, i64 }, ptr %a94 + %t98 = load ptr, ptr %a46 + %t99 = icmp eq ptr %t98, null + br i1 %t99, label %panic8251, label %ok8252 +panic8251: + call void @finch_panic(ptr @.str.5715, i64 5133, ptr @.str.5716) unreachable -ok7911: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 28 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.5459, i64 2, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - %t107 = call i64 @finch.gen.md(ptr %t85, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %t84 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t83, i64 %t109, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t83 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t108 - store i64 %t107, ptr %t111 - store i64 %t109, ptr %t84 - br label %each.step7906 -each.step7906: - %t112 = load i64, ptr %a72 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a72 - br label %each.cond7904 -each.end7907: - %t114 = load ptr, ptr %a43 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic7912, label %ok7913 -panic7912: - call void @finch_panic(ptr @.str.5461, i64 4971, ptr @.str.5462) +ok8252: + %t100 = getelementptr inbounds %S.gen.Gen, ptr %t98, i32 0, i32 30 + %t101 = load { ptr, i64, i64 }, ptr %t100 + store { ptr, i64, i64 } %t97, ptr %a103 + store { ptr, i64, i64 } %t101, ptr %a104 + call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) + %t105 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t105, ptr %a107 + store { ptr, i64, i64 } { ptr @.str.5717, i64 2, i64 0 }, ptr %a108 + call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) + %t109 = load { ptr, i64, i64 }, ptr %a106 + %t110 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t109) + %t111 = load i64, ptr %t87 + %t112 = add i64 %t111, 1 + call void @finch_arr_reserve(ptr %t86, i64 %t112, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) + %t113 = load ptr, ptr %t86 + %t114 = getelementptr inbounds i64, ptr %t113, i64 %t111 + store i64 %t110, ptr %t114 + store i64 %t112, ptr %t87 + br label %each.step8247 +each.step8247: + %t115 = load i64, ptr %a75 + %t116 = add i64 %t115, 1 + store i64 %t116, ptr %a75 + br label %each.cond8245 +each.end8248: + %t117 = load ptr, ptr %a46 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic8253, label %ok8254 +panic8253: + call void @finch_panic(ptr @.str.5719, i64 5135, ptr @.str.5720) unreachable -ok7913: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 31 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range7914, label %inrange7915 -range7914: - call void @finch_panic_index(ptr @.str.5463, i64 4971, i64 0, i64 %t118) +ok8254: + %t119 = getelementptr inbounds %S.gen.Gen, ptr %t117, i32 0, i32 33 + %t120 = load { ptr, i64, i64 }, ptr %t119 + %t121 = extractvalue { ptr, i64, i64 } %t120, 1 + %t122 = icmp uge i64 0, %t121 + br i1 %t122, label %range8255, label %inrange8256 +range8255: + call void @finch_panic_index(ptr @.str.5721, i64 5135, i64 0, i64 %t121) unreachable -inrange7915: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds i64, ptr %t120, i64 0 - %t122 = load i64, ptr %t121 - call void @finch_str_from_int(ptr %a123, i64 %t122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5460, i64 52, i64 0 }, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5464, i64 84, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = load ptr, ptr %a43 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic7916, label %ok7917 -panic7916: - call void @finch_panic(ptr @.str.5465, i64 4971, ptr @.str.5466) +inrange8256: + %t123 = extractvalue { ptr, i64, i64 } %t120, 0 + %t124 = getelementptr inbounds i64, ptr %t123, i64 0 + %t125 = load i64, ptr %t124 + call void @finch_str_from_int(ptr %a126, i64 %t125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.5718, i64 52, i64 0 }, ptr %a129 + store { ptr, i64, i64 } %t127, ptr %a130 + call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) + %t131 = load { ptr, i64, i64 }, ptr %a128 + store { ptr, i64, i64 } %t131, ptr %a133 + store { ptr, i64, i64 } { ptr @.str.5722, i64 84, i64 0 }, ptr %a134 + call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) + %t135 = load { ptr, i64, i64 }, ptr %a132 + %t136 = load ptr, ptr %a46 + %t137 = icmp eq ptr %t136, null + br i1 %t137, label %panic8257, label %ok8258 +panic8257: + call void @finch_panic(ptr @.str.5723, i64 5135, ptr @.str.5724) unreachable -ok7917: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 29 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range7918, label %inrange7919 -range7918: - call void @finch_panic_index(ptr @.str.5467, i64 4971, i64 0, i64 %t137) +ok8258: + %t138 = getelementptr inbounds %S.gen.Gen, ptr %t136, i32 0, i32 31 + %t139 = load { ptr, i64, i64 }, ptr %t138 + %t140 = extractvalue { ptr, i64, i64 } %t139, 1 + %t141 = icmp uge i64 0, %t140 + br i1 %t141, label %range8259, label %inrange8260 +range8259: + call void @finch_panic_index(ptr @.str.5725, i64 5135, i64 0, i64 %t140) unreachable -inrange7919: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i64 0 - store { ptr, i64, i64 } %t132, ptr %t140 - br label %endif7897 -endif7897: - %t141 = load ptr, ptr %a43 - call void @finch.gen.declare(ptr %t141) - %t142 = load ptr, ptr %a43 - %t143 = call i64 @finch.gen.findFn(ptr %t142, { ptr, i64, i64 } { ptr @.str.5468, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5469, i64 4, i64 0 }) - store i64 %t143, ptr %a144 - %t145 = load i1, ptr %a7 - br i1 %t145, label %then7920, label %else7921 -then7920: - %t146 = load i64, ptr %a144 - %t147 = icmp sge i64 %t146, 0 - br i1 %t147, label %then7923, label %endif7925 -then7923: - %t148 = load ptr, ptr %a43 - %t149 = load ptr, ptr %a43 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic7926, label %ok7927 -panic7926: - call void @finch_panic(ptr @.str.5470, i64 4977, ptr @.str.5471) - unreachable -ok7927: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 0 - %t152 = load ptr, ptr %a43 +inrange8260: + %t142 = extractvalue { ptr, i64, i64 } %t139, 0 + %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i64 0 + store { ptr, i64, i64 } %t135, ptr %t143 + br label %endif8238 +endif8238: + %t144 = load ptr, ptr %a46 + call void @finch.gen.declare(ptr %t144) + %t145 = load ptr, ptr %a46 + %t146 = call i64 @finch.gen.findFn(ptr %t145, { ptr, i64, i64 } { ptr @.str.5726, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5727, i64 4, i64 0 }) + store i64 %t146, ptr %a147 + %t148 = load i1, ptr %a7 + br i1 %t148, label %then8261, label %else8262 +then8261: + %t149 = load i64, ptr %a147 + %t150 = icmp sge i64 %t149, 0 + br i1 %t150, label %then8264, label %endif8266 +then8264: + %t151 = load ptr, ptr %a46 + %t152 = load ptr, ptr %a46 %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic7928, label %ok7929 -panic7928: - call void @finch_panic(ptr @.str.5472, i64 4977, ptr @.str.5473) + br i1 %t153, label %panic8267, label %ok8268 +panic8267: + call void @finch_panic(ptr @.str.5728, i64 5141, ptr @.str.5729) unreachable -ok7929: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 14 - %t155 = load i64, ptr %a144 - %t156 = load { ptr, i64, i64 }, ptr %t154 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 %t155, %t157 - br i1 %t158, label %range7930, label %inrange7931 -range7930: - call void @finch_panic_index(ptr @.str.5474, i64 4977, i64 %t155, i64 %t157) +ok8268: + %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 0 + %t155 = load ptr, ptr %a46 + %t156 = icmp eq ptr %t155, null + br i1 %t156, label %panic8269, label %ok8270 +panic8269: + call void @finch_panic(ptr @.str.5730, i64 5141, ptr @.str.5731) unreachable -inrange7931: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.gen.FnSig, ptr %t159, i64 %t155 - %t161 = getelementptr inbounds %S.gen.FnSig, ptr %t160, i32 0, i32 16 - %t162 = load i64, ptr %t161 - %t163 = load { ptr, i64, i64 }, ptr %t151 - %t164 = extractvalue { ptr, i64, i64 } %t163, 1 - %t165 = icmp uge i64 %t162, %t164 - br i1 %t165, label %range7932, label %inrange7933 -range7932: - call void @finch_panic_index(ptr @.str.5475, i64 4977, i64 %t162, i64 %t164) +ok8270: + %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 14 + %t158 = load i64, ptr %a147 + %t159 = load { ptr, i64, i64 }, ptr %t157 + %t160 = extractvalue { ptr, i64, i64 } %t159, 1 + %t161 = icmp uge i64 %t158, %t160 + br i1 %t161, label %range8271, label %inrange8272 +range8271: + call void @finch_panic_index(ptr @.str.5732, i64 5141, i64 %t158, i64 %t160) unreachable -inrange7933: - %t166 = extractvalue { ptr, i64, i64 } %t163, 0 - %t167 = getelementptr inbounds %S.ast.Program, ptr %t166, i64 %t162 - %t168 = getelementptr inbounds %S.ast.Program, ptr %t167, i32 0, i32 8 - %t169 = load ptr, ptr %a43 - %t170 = icmp eq ptr %t169, null - br i1 %t170, label %panic7934, label %ok7935 -panic7934: - call void @finch_panic(ptr @.str.5476, i64 4977, ptr @.str.5477) +inrange8272: + %t162 = extractvalue { ptr, i64, i64 } %t159, 0 + %t163 = getelementptr inbounds %S.gen.FnSig, ptr %t162, i64 %t158 + %t164 = getelementptr inbounds %S.gen.FnSig, ptr %t163, i32 0, i32 16 + %t165 = load i64, ptr %t164 + %t166 = load { ptr, i64, i64 }, ptr %t154 + %t167 = extractvalue { ptr, i64, i64 } %t166, 1 + %t168 = icmp uge i64 %t165, %t167 + br i1 %t168, label %range8273, label %inrange8274 +range8273: + call void @finch_panic_index(ptr @.str.5733, i64 5141, i64 %t165, i64 %t167) unreachable -ok7935: - %t171 = getelementptr inbounds %S.gen.Gen, ptr %t169, i32 0, i32 14 - %t172 = load i64, ptr %a144 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range7936, label %inrange7937 -range7936: - call void @finch_panic_index(ptr @.str.5478, i64 4977, i64 %t172, i64 %t174) +inrange8274: + %t169 = extractvalue { ptr, i64, i64 } %t166, 0 + %t170 = getelementptr inbounds %S.ast.Program, ptr %t169, i64 %t165 + %t171 = getelementptr inbounds %S.ast.Program, ptr %t170, i32 0, i32 8 + %t172 = load ptr, ptr %a46 + %t173 = icmp eq ptr %t172, null + br i1 %t173, label %panic8275, label %ok8276 +panic8275: + call void @finch_panic(ptr @.str.5734, i64 5141, ptr @.str.5735) unreachable -inrange7937: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.gen.FnSig, ptr %t176, i64 %t172 - %t178 = getelementptr inbounds %S.gen.FnSig, ptr %t177, i32 0, i32 17 - %t179 = load i64, ptr %t178 - %t180 = load { ptr, i64, i64 }, ptr %t168 - %t181 = extractvalue { ptr, i64, i64 } %t180, 1 - %t182 = icmp uge i64 %t179, %t181 - br i1 %t182, label %range7938, label %inrange7939 -range7938: - call void @finch_panic_index(ptr @.str.5479, i64 4977, i64 %t179, i64 %t181) +ok8276: + %t174 = getelementptr inbounds %S.gen.Gen, ptr %t172, i32 0, i32 14 + %t175 = load i64, ptr %a147 + %t176 = load { ptr, i64, i64 }, ptr %t174 + %t177 = extractvalue { ptr, i64, i64 } %t176, 1 + %t178 = icmp uge i64 %t175, %t177 + br i1 %t178, label %range8277, label %inrange8278 +range8277: + call void @finch_panic_index(ptr @.str.5736, i64 5141, i64 %t175, i64 %t177) unreachable -inrange7939: - %t183 = extractvalue { ptr, i64, i64 } %t180, 0 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t179 - %t185 = load %S.ast.Node, ptr %t184 - call void @finch.gen.fail(ptr %t148, %S.ast.Node %t185, { ptr, i64, i64 } { ptr @.str.5480, i64 82, i64 0 }) - br label %endif7925 -endif7925: - br label %endif7922 -else7921: - %t186 = load i64, ptr %a144 - %t187 = icmp slt i64 %t186, 0 - br i1 %t187, label %then7940, label %endif7942 -then7940: - %t188 = load { ptr, i64, i64 }, ptr %a2 - %t189 = extractvalue { ptr, i64, i64 } %t188, 1 - %t190 = icmp uge i64 0, %t189 - br i1 %t190, label %range7943, label %inrange7944 -range7943: - call void @finch_panic_index(ptr @.str.5481, i64 4980, i64 0, i64 %t189) +inrange8278: + %t179 = extractvalue { ptr, i64, i64 } %t176, 0 + %t180 = getelementptr inbounds %S.gen.FnSig, ptr %t179, i64 %t175 + %t181 = getelementptr inbounds %S.gen.FnSig, ptr %t180, i32 0, i32 17 + %t182 = load i64, ptr %t181 + %t183 = load { ptr, i64, i64 }, ptr %t171 + %t184 = extractvalue { ptr, i64, i64 } %t183, 1 + %t185 = icmp uge i64 %t182, %t184 + br i1 %t185, label %range8279, label %inrange8280 +range8279: + call void @finch_panic_index(ptr @.str.5737, i64 5141, i64 %t182, i64 %t184) unreachable -inrange7944: - %t191 = extractvalue { ptr, i64, i64 } %t188, 0 - %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.5482, i64 64, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a194 - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.5483, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.5484, i32 %t199, ptr %t202) - %t204 = call i32 (ptr, ...) @printf(ptr @.str.5485) - %t205 = trunc i64 1 to i32 - %t206 = call i32 @fflush(ptr null) - call void @exit(i32 %t205) - br label %endif7942 -endif7942: - br label %endif7922 -endif7922: - store i64 0, ptr %a207 - br label %while.cond7945 -while.cond7945: - %t208 = load i64, ptr %a207 - %t209 = load ptr, ptr %a43 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic7948, label %ok7949 -panic7948: - call void @finch_panic(ptr @.str.5486, i64 4985, ptr @.str.5487) +inrange8280: + %t186 = extractvalue { ptr, i64, i64 } %t183, 0 + %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 %t182 + %t188 = load %S.ast.Node, ptr %t187 + call void @finch.gen.fail(ptr %t151, %S.ast.Node %t188, { ptr, i64, i64 } { ptr @.str.5738, i64 82, i64 0 }) + br label %endif8266 +endif8266: + br label %endif8263 +else8262: + %t189 = load i64, ptr %a147 + %t190 = icmp slt i64 %t189, 0 + br i1 %t190, label %then8281, label %endif8283 +then8281: + %t191 = load { ptr, i64, i64 }, ptr %a2 + %t192 = extractvalue { ptr, i64, i64 } %t191, 1 + %t193 = icmp uge i64 0, %t192 + br i1 %t193, label %range8284, label %inrange8285 +range8284: + call void @finch_panic_index(ptr @.str.5739, i64 5144, i64 0, i64 %t192) unreachable -ok7949: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 14 - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t211, i32 0, i32 1 - %t213 = load i64, ptr %t212 - %t214 = icmp slt i64 %t208, %t213 - br i1 %t214, label %while.body7946, label %while.end7947 -while.body7946: - %t215 = load ptr, ptr %a43 - %t216 = load i64, ptr %a207 - call void @finch.gen.define(ptr %t215, i64 %t216) - %t217 = load i64, ptr %a207 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a207 - br label %while.cond7945 -while.end7947: - %t219 = load ptr, ptr %a43 - %t220 = icmp eq ptr %t219, null - br i1 %t220, label %panic7950, label %ok7951 -panic7950: - call void @finch_panic(ptr @.str.5488, i64 4989, ptr @.str.5489) +inrange8285: + %t194 = extractvalue { ptr, i64, i64 } %t191, 0 + %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i64 0 + %t196 = load { ptr, i64, i64 }, ptr %t195 + store { ptr, i64, i64 } %t196, ptr %a198 + store { ptr, i64, i64 } { ptr @.str.5740, i64 64, i64 0 }, ptr %a199 + call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) + %t200 = load { ptr, i64, i64 }, ptr %a197 + %t201 = extractvalue { ptr, i64, i64 } %t200, 1 + %t202 = trunc i64 %t201 to i32 + %t203 = extractvalue { ptr, i64, i64 } %t200, 0 + %t204 = icmp eq ptr %t203, null + %t205 = select i1 %t204, ptr @.str.5741, ptr %t203 + %t206 = call i32 (ptr, ...) @printf(ptr @.str.5742, i32 %t202, ptr %t205) + %t207 = call i32 (ptr, ...) @printf(ptr @.str.5743) + %t208 = trunc i64 1 to i32 + %t209 = call i32 @fflush(ptr null) + call void @exit(i32 %t208) + br label %endif8283 +endif8283: + br label %endif8263 +endif8263: + store i64 0, ptr %a210 + br label %while.cond8286 +while.cond8286: + %t211 = load i64, ptr %a210 + %t212 = load ptr, ptr %a46 + %t213 = icmp eq ptr %t212, null + br i1 %t213, label %panic8289, label %ok8290 +panic8289: + call void @finch_panic(ptr @.str.5744, i64 5149, ptr @.str.5745) unreachable -ok7951: - %t221 = getelementptr inbounds %S.gen.Gen, ptr %t219, i32 0, i32 14 - store i64 0, ptr %a222 - br label %each.cond7952 -each.cond7952: - %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t221, i32 0, i32 1 - %t224 = load i64, ptr %t223 - %t225 = load i64, ptr %a222 - %t226 = icmp slt i64 %t225, %t224 - br i1 %t226, label %each.body7953, label %each.end7955 -each.body7953: - %t227 = load ptr, ptr %t221 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i64 %t225 - %t229 = load %S.gen.FnSig, ptr %t228 - store %S.gen.FnSig %t229, ptr %a230 - %t231 = getelementptr inbounds %S.gen.FnSig, ptr %a230, i32 0, i32 5 - %t232 = load i1, ptr %t231 - br i1 %t232, label %then7956, label %endif7958 -then7956: - %t233 = load ptr, ptr %a43 - %t234 = load %S.gen.FnSig, ptr %a230 - %t235 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t233, %S.gen.FnSig %t234) - br label %endif7958 -endif7958: - br label %each.step7954 -each.step7954: - %t236 = load i64, ptr %a222 - %t237 = add i64 %t236, 1 - store i64 %t237, ptr %a222 - br label %each.cond7952 -each.end7955: - %t238 = load i1, ptr %a7 - br i1 %t238, label %then7959, label %endif7961 -then7959: - store { ptr, i64, i64 } { ptr @.str.5490, i64 0, i64 0 }, ptr %a239 - %t240 = load ptr, ptr %a43 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7962, label %ok7963 -panic7962: - call void @finch_panic(ptr @.str.5491, i64 4997, ptr @.str.5492) +ok8290: + %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 14 + %t215 = getelementptr inbounds { ptr, i64, i64 }, ptr %t214, i32 0, i32 1 + %t216 = load i64, ptr %t215 + %t217 = icmp slt i64 %t211, %t216 + br i1 %t217, label %while.body8287, label %while.end8288 +while.body8287: + %t218 = load ptr, ptr %a46 + %t219 = load i64, ptr %a210 + call void @finch.gen.define(ptr %t218, i64 %t219) + %t220 = load i64, ptr %a210 + %t221 = add i64 %t220, 1 + store i64 %t221, ptr %a210 + br label %while.cond8286 +while.end8288: + %t222 = load ptr, ptr %a46 + %t223 = icmp eq ptr %t222, null + br i1 %t223, label %panic8291, label %ok8292 +panic8291: + call void @finch_panic(ptr @.str.5746, i64 5153, ptr @.str.5747) unreachable -ok7963: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 27 - %t243 = getelementptr inbounds %S.platform.Target, ptr %t242, i32 0, i32 1 - %t244 = load i1, ptr %t243 - br i1 %t244, label %then7964, label %endif7966 -then7964: - store { ptr, i64, i64 } { ptr @.str.5493, i64 10, i64 0 }, ptr %a239 - br label %endif7966 -endif7966: - %t245 = load ptr, ptr %a43 - %t246 = icmp eq ptr %t245, null - br i1 %t246, label %panic7967, label %ok7968 -panic7967: - call void @finch_panic(ptr @.str.5494, i64 5000, ptr @.str.5495) +ok8292: + %t224 = getelementptr inbounds %S.gen.Gen, ptr %t222, i32 0, i32 26 + %t225 = load i1, ptr %t224 + br i1 %t225, label %then8293, label %endif8295 +then8293: + %t226 = load ptr, ptr %a46 + %t227 = icmp eq ptr %t226, null + br i1 %t227, label %panic8296, label %ok8297 +panic8296: + call void @finch_panic(ptr @.str.5748, i64 5154, ptr @.str.5749) unreachable -ok7968: - %t247 = getelementptr inbounds %S.gen.Gen, ptr %t245, i32 0, i32 3 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i32 0, i32 1 - %t249 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } { ptr @.str.5496, i64 6, i64 0 }, ptr %a251 - store { ptr, i64, i64 } %t249, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a250 - store { ptr, i64, i64 } %t253, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.5497, i64 107, i64 0 }, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - %t258 = load i64, ptr %t248 - %t259 = add i64 %t258, 1 - call void @finch_arr_reserve(ptr %t247, i64 %t259, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t260 = load ptr, ptr %t247 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i64 %t258 - store { ptr, i64, i64 } %t257, ptr %t261 - store i64 %t259, ptr %t248 - %t262 = load ptr, ptr %a43 - %t263 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t262) - ret { ptr, i64, i64 } %t263 -endif7961: - %t264 = load ptr, ptr %a43 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic7969, label %ok7970 -panic7969: - call void @finch_panic(ptr @.str.5498, i64 5004, ptr @.str.5499) +ok8297: + %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 0 + %t229 = load { ptr, i64, i64 }, ptr %t228 + %t230 = extractvalue { ptr, i64, i64 } %t229, 1 + %t231 = icmp uge i64 0, %t230 + br i1 %t231, label %range8298, label %inrange8299 +range8298: + call void @finch_panic_index(ptr @.str.5750, i64 5154, i64 0, i64 %t230) unreachable -ok7970: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 14 - %t267 = load i64, ptr %a144 - %t268 = load { ptr, i64, i64 }, ptr %t266 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range7971, label %inrange7972 -range7971: - call void @finch_panic_index(ptr @.str.5500, i64 5004, i64 %t267, i64 %t269) +inrange8299: + %t232 = extractvalue { ptr, i64, i64 } %t229, 0 + %t233 = getelementptr inbounds %S.ast.Program, ptr %t232, i64 0 + %t234 = getelementptr inbounds %S.ast.Program, ptr %t233, i32 0, i32 2 + %t235 = load { ptr, i64, i64 }, ptr %t234 + store { ptr, i64, i64 } %t235, ptr %a236 + call void @finch.copy.arr_str(ptr %a237, ptr %a236) + %t238 = load { ptr, i64, i64 }, ptr %a237 + store { ptr, i64, i64 } %t238, ptr %a239 + %t240 = load ptr, ptr %a46 + %t241 = load { ptr, i64, i64 }, ptr %a239 + call void @finch.gen.indexAll(ptr %t240, { ptr, i64, i64 } %t241) + %t242 = load ptr, ptr %a46 + %t243 = icmp eq ptr %t242, null + br i1 %t243, label %panic8300, label %ok8301 +panic8300: + call void @finch_panic(ptr @.str.5751, i64 5156, ptr @.str.5752) unreachable -inrange7972: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.gen.FnSig, ptr %t271, i64 %t267 - %t273 = load %S.gen.FnSig, ptr %t272 - store %S.gen.FnSig %t273, ptr %a274 - call void @finch.copy.S_gen_FnSig(ptr %a275, ptr %a274) - %t276 = load %S.gen.FnSig, ptr %a275 - store %S.gen.FnSig %t276, ptr %a277 - %t278 = load ptr, ptr %a43 - %t279 = load %S.gen.FnSig, ptr %a277 - %t280 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t278, %S.gen.FnSig %t279) - store { ptr, i64, i64 } { ptr @.str.5501, i64 5, i64 0 }, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t284, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5502, i64 1, i64 0 }, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a285 - %t289 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 11 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t288, ptr %a292 - store { ptr, i64, i64 } %t290, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5504, i64 0, i64 0 }, ptr %a300 - %t301 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 13 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i32 0, i32 1 - %t303 = load i64, ptr %t302 - %t304 = icmp eq i64 %t303, 1 - br i1 %t304, label %then7973, label %endif7975 -then7973: - store { ptr, i64, i64 } { ptr @.str.5505, i64 133, i64 0 }, ptr %a300 - %t305 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.5506, i64 20, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - %t309 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t309, ptr %a299 - br label %endif7975 -endif7975: - %t310 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5507, i64 1, i64 0 }, ptr %a313 +ok8301: + %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 27 + %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.5753, i64 1, i64 0 }, ptr %a246 + call void @finch_str_join(ptr %a247, ptr %t244, ptr %a246) + %t248 = load { ptr, i64, i64 }, ptr %a247 + ret { ptr, i64, i64 } %t248 +endif8295: + %t249 = load ptr, ptr %a46 + %t250 = icmp eq ptr %t249, null + br i1 %t250, label %panic8302, label %ok8303 +panic8302: + call void @finch_panic(ptr @.str.5754, i64 5158, ptr @.str.5755) + unreachable +ok8303: + %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 14 + store i64 0, ptr %a252 + br label %each.cond8304 +each.cond8304: + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t251, i32 0, i32 1 + %t254 = load i64, ptr %t253 + %t255 = load i64, ptr %a252 + %t256 = icmp slt i64 %t255, %t254 + br i1 %t256, label %each.body8305, label %each.end8307 +each.body8305: + %t257 = load ptr, ptr %t251 + %t258 = getelementptr inbounds %S.gen.FnSig, ptr %t257, i64 %t255 + %t259 = load %S.gen.FnSig, ptr %t258 + store %S.gen.FnSig %t259, ptr %a260 + %t261 = getelementptr inbounds %S.gen.FnSig, ptr %a260, i32 0, i32 5 + %t262 = load i1, ptr %t261 + br i1 %t262, label %then8308, label %endif8310 +then8308: + %t263 = load ptr, ptr %a46 + %t264 = load %S.gen.FnSig, ptr %a260 + %t265 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t263, %S.gen.FnSig %t264) + br label %endif8310 +endif8310: + br label %each.step8306 +each.step8306: + %t266 = load i64, ptr %a252 + %t267 = add i64 %t266, 1 + store i64 %t267, ptr %a252 + br label %each.cond8304 +each.end8307: + %t268 = load i1, ptr %a7 + br i1 %t268, label %then8311, label %endif8313 +then8311: + store { ptr, i64, i64 } { ptr @.str.5756, i64 0, i64 0 }, ptr %a269 + %t270 = load ptr, ptr %a46 + %t271 = icmp eq ptr %t270, null + br i1 %t271, label %panic8314, label %ok8315 +panic8314: + call void @finch_panic(ptr @.str.5757, i64 5166, ptr @.str.5758) + unreachable +ok8315: + %t272 = getelementptr inbounds %S.gen.Gen, ptr %t270, i32 0, i32 29 + %t273 = getelementptr inbounds %S.platform.Target, ptr %t272, i32 0, i32 1 + %t274 = load i1, ptr %t273 + br i1 %t274, label %then8316, label %endif8318 +then8316: + store { ptr, i64, i64 } { ptr @.str.5759, i64 10, i64 0 }, ptr %a269 + br label %endif8318 +endif8318: + %t275 = load ptr, ptr %a46 + %t276 = icmp eq ptr %t275, null + br i1 %t276, label %panic8319, label %ok8320 +panic8319: + call void @finch_panic(ptr @.str.5760, i64 5169, ptr @.str.5761) + unreachable +ok8320: + %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 3 + %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %t277, i32 0, i32 1 + %t279 = load { ptr, i64, i64 }, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.5762, i64 6, i64 0 }, ptr %a281 + store { ptr, i64, i64 } %t279, ptr %a282 + call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) + %t283 = load { ptr, i64, i64 }, ptr %a280 + store { ptr, i64, i64 } %t283, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.5763, i64 107, i64 0 }, ptr %a286 + call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) + %t287 = load { ptr, i64, i64 }, ptr %a284 + %t288 = load i64, ptr %t278 + %t289 = add i64 %t288, 1 + call void @finch_arr_reserve(ptr %t277, i64 %t289, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t290 = load ptr, ptr %t277 + %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t290, i64 %t288 + store { ptr, i64, i64 } %t287, ptr %t291 + store i64 %t289, ptr %t278 + %t292 = load ptr, ptr %a46 + %t293 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t292) + ret { ptr, i64, i64 } %t293 +endif8313: + %t294 = load ptr, ptr %a46 + %t295 = icmp eq ptr %t294, null + br i1 %t295, label %panic8321, label %ok8322 +panic8321: + call void @finch_panic(ptr @.str.5764, i64 5173, ptr @.str.5765) + unreachable +ok8322: + %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 14 + %t297 = load i64, ptr %a147 + %t298 = load { ptr, i64, i64 }, ptr %t296 + %t299 = extractvalue { ptr, i64, i64 } %t298, 1 + %t300 = icmp uge i64 %t297, %t299 + br i1 %t300, label %range8323, label %inrange8324 +range8323: + call void @finch_panic_index(ptr @.str.5766, i64 5173, i64 %t297, i64 %t299) + unreachable +inrange8324: + %t301 = extractvalue { ptr, i64, i64 } %t298, 0 + %t302 = getelementptr inbounds %S.gen.FnSig, ptr %t301, i64 %t297 + %t303 = load %S.gen.FnSig, ptr %t302 + store %S.gen.FnSig %t303, ptr %a304 + call void @finch.copy.S_gen_FnSig(ptr %a305, ptr %a304) + %t306 = load %S.gen.FnSig, ptr %a305 + store %S.gen.FnSig %t306, ptr %a307 + %t308 = load ptr, ptr %a46 + %t309 = load %S.gen.FnSig, ptr %a307 + %t310 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t308, %S.gen.FnSig %t309) + store { ptr, i64, i64 } { ptr @.str.5767, i64 5, i64 0 }, ptr %a312 + store { ptr, i64, i64 } %t310, ptr %a313 call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) %t314 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t314, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5508, i64 12, i64 0 }, ptr %a315 - %t316 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 9 - %t317 = load i1, ptr %t316 - br i1 %t317, label %then7976, label %else7977 -then7976: - %t318 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5509, i64 5, i64 0 }, ptr %a320 - store { ptr, i64, i64 } %t318, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a319 - store { ptr, i64, i64 } %t322, ptr %a299 - %t323 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t323, ptr %a325 - store { ptr, i64, i64 } { ptr @.str.5510, i64 2, i64 0 }, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a324 - %t328 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t327, ptr %a330 - store { ptr, i64, i64 } %t328, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5511, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.5512, i64 0, i64 0 }, ptr %a299 - %t337 = load ptr, ptr %a43 - %t338 = load %S.gen.FnSig, ptr %a277 - %t339 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t337, %S.gen.FnSig %t338) - store { ptr, i64, i64 } %t339, ptr %a340 - %t341 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t341, ptr %a343 - store { ptr, i64, i64 } { ptr @.str.5513, i64 21, i64 0 }, ptr %a344 - call void @finch_str_concat(ptr %a342, ptr %a343, ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a342 - %t346 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t345, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.5514, i64 62, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a351 - store { ptr, i64, i64 } %t354, ptr %a300 - %t355 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.5515, i64 20, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a356 - %t360 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } %t359, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.5516, i64 78, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t368, ptr %a300 - %t369 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.5517, i64 62, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t373, ptr %a300 - %t374 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 12 - %t375 = getelementptr inbounds %S.ast.Type, ptr %t374, i32 0, i32 0 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t376, ptr %a377 - store { ptr, i64, i64 } { ptr @.str.5518, i64 3, i64 0 }, ptr %a378 - %t379 = call i32 @finch_str_eq(ptr %a377, ptr %a378) - %t380 = icmp ne i32 %t379, 0 - br i1 %t380, label %then7979, label %endif7981 -then7979: - %t381 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5519, i64 20, i64 0 }, ptr %a383 - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a382 + store { ptr, i64, i64 } %t314, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.5768, i64 1, i64 0 }, ptr %a317 + call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) + %t318 = load { ptr, i64, i64 }, ptr %a315 + %t319 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 11 + %t320 = load { ptr, i64, i64 }, ptr %t319 + store { ptr, i64, i64 } %t318, ptr %a322 + store { ptr, i64, i64 } %t320, ptr %a323 + call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) + %t324 = load { ptr, i64, i64 }, ptr %a321 + store { ptr, i64, i64 } %t324, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.5769, i64 1, i64 0 }, ptr %a327 + call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) + %t328 = load { ptr, i64, i64 }, ptr %a325 + store { ptr, i64, i64 } %t328, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5770, i64 0, i64 0 }, ptr %a330 + %t331 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 13 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 + %t333 = load i64, ptr %t332 + %t334 = icmp eq i64 %t333, 1 + br i1 %t334, label %then8325, label %endif8327 +then8325: + store { ptr, i64, i64 } { ptr @.str.5771, i64 133, i64 0 }, ptr %a330 + %t335 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t335, ptr %a337 + store { ptr, i64, i64 } { ptr @.str.5772, i64 20, i64 0 }, ptr %a338 + call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) + %t339 = load { ptr, i64, i64 }, ptr %a336 + store { ptr, i64, i64 } %t339, ptr %a329 + br label %endif8327 +endif8327: + %t340 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t340, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.5773, i64 1, i64 0 }, ptr %a343 + call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) + %t344 = load { ptr, i64, i64 }, ptr %a341 + store { ptr, i64, i64 } %t344, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5774, i64 12, i64 0 }, ptr %a345 + %t346 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 9 + %t347 = load i1, ptr %t346 + br i1 %t347, label %then8328, label %else8329 +then8328: + %t348 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5775, i64 5, i64 0 }, ptr %a350 + store { ptr, i64, i64 } %t348, ptr %a351 + call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) + %t352 = load { ptr, i64, i64 }, ptr %a349 + store { ptr, i64, i64 } %t352, ptr %a329 + %t353 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t353, ptr %a355 + store { ptr, i64, i64 } { ptr @.str.5776, i64 2, i64 0 }, ptr %a356 + call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) + %t357 = load { ptr, i64, i64 }, ptr %a354 + %t358 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t357, ptr %a360 + store { ptr, i64, i64 } %t358, ptr %a361 + call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) + %t362 = load { ptr, i64, i64 }, ptr %a359 + store { ptr, i64, i64 } %t362, ptr %a364 + store { ptr, i64, i64 } { ptr @.str.5777, i64 1, i64 0 }, ptr %a365 + call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) + %t366 = load { ptr, i64, i64 }, ptr %a363 + store { ptr, i64, i64 } %t366, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5778, i64 0, i64 0 }, ptr %a329 + %t367 = load ptr, ptr %a46 + %t368 = load %S.gen.FnSig, ptr %a307 + %t369 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t367, %S.gen.FnSig %t368) + store { ptr, i64, i64 } %t369, ptr %a370 + %t371 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t371, ptr %a373 + store { ptr, i64, i64 } { ptr @.str.5779, i64 21, i64 0 }, ptr %a374 + call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) + %t375 = load { ptr, i64, i64 }, ptr %a372 + %t376 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } %t375, ptr %a378 + store { ptr, i64, i64 } %t376, ptr %a379 + call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) + %t380 = load { ptr, i64, i64 }, ptr %a377 + store { ptr, i64, i64 } %t380, ptr %a382 + store { ptr, i64, i64 } { ptr @.str.5780, i64 62, i64 0 }, ptr %a383 + call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) + %t384 = load { ptr, i64, i64 }, ptr %a381 + store { ptr, i64, i64 } %t384, ptr %a330 + %t385 = load { ptr, i64, i64 }, ptr %a330 store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.5520, i64 53, i64 0 }, ptr %a388 + store { ptr, i64, i64 } { ptr @.str.5781, i64 20, i64 0 }, ptr %a388 call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) %t389 = load { ptr, i64, i64 }, ptr %a386 - store { ptr, i64, i64 } %t389, ptr %a315 - br label %endif7981 -endif7981: - br label %endif7978 -else7977: - %t390 = getelementptr inbounds %S.gen.FnSig, ptr %a277, i32 0, i32 12 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i32 0, i32 0 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } %t392, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5521, i64 3, i64 0 }, ptr %a394 - %t395 = call i32 @finch_str_eq(ptr %a393, ptr %a394) - %t396 = icmp ne i32 %t395, 0 - br i1 %t396, label %then7982, label %endif7984 -then7982: - %t397 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5522, i64 5, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t401, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5523, i64 46, i64 0 }, ptr %a315 - br label %endif7984 -endif7984: - br label %endif7978 -endif7978: - %t402 = load ptr, ptr %a43 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic7985, label %ok7986 -panic7985: - call void @finch_panic(ptr @.str.5524, i64 5029, ptr @.str.5525) - unreachable -ok7986: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 3 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i32 0, i32 1 - %t406 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.5526, i64 48, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5527, i64 2, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a411 - %t415 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t414, ptr %a417 - store { ptr, i64, i64 } %t415, ptr %a418 + %t390 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } %t389, ptr %a392 + store { ptr, i64, i64 } %t390, ptr %a393 + call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) + %t394 = load { ptr, i64, i64 }, ptr %a391 + store { ptr, i64, i64 } %t394, ptr %a396 + store { ptr, i64, i64 } { ptr @.str.5782, i64 78, i64 0 }, ptr %a397 + call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) + %t398 = load { ptr, i64, i64 }, ptr %a395 + store { ptr, i64, i64 } %t398, ptr %a330 + %t399 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } %t399, ptr %a401 + store { ptr, i64, i64 } { ptr @.str.5783, i64 62, i64 0 }, ptr %a402 + call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) + %t403 = load { ptr, i64, i64 }, ptr %a400 + store { ptr, i64, i64 } %t403, ptr %a330 + %t404 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 12 + %t405 = getelementptr inbounds %S.ast.Type, ptr %t404, i32 0, i32 0 + %t406 = load { ptr, i64, i64 }, ptr %t405 + store { ptr, i64, i64 } %t406, ptr %a407 + store { ptr, i64, i64 } { ptr @.str.5784, i64 3, i64 0 }, ptr %a408 + %t409 = call i32 @finch_str_eq(ptr %a407, ptr %a408) + %t410 = icmp ne i32 %t409, 0 + br i1 %t410, label %then8331, label %endif8333 +then8331: + %t411 = load { ptr, i64, i64 }, ptr %a370 + store { ptr, i64, i64 } { ptr @.str.5785, i64 20, i64 0 }, ptr %a413 + store { ptr, i64, i64 } %t411, ptr %a414 + call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) + %t415 = load { ptr, i64, i64 }, ptr %a412 + store { ptr, i64, i64 } %t415, ptr %a417 + store { ptr, i64, i64 } { ptr @.str.5786, i64 53, i64 0 }, ptr %a418 call void @finch_str_concat(ptr %a416, ptr %a417, ptr %a418) %t419 = load { ptr, i64, i64 }, ptr %a416 - store { ptr, i64, i64 } %t419, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.5528, i64 1, i64 0 }, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - %t423 = load { ptr, i64, i64 }, ptr %a420 - %t424 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t423, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t428, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5529, i64 2, i64 0 }, ptr %a431 - call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a429 - %t433 = load i64, ptr %t405 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %t404, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %t404 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t405 - %t437 = load ptr, ptr %a43 - %t438 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t437) - ret { ptr, i64, i64 } %t438 + store { ptr, i64, i64 } %t419, ptr %a345 + br label %endif8333 +endif8333: + br label %endif8330 +else8329: + %t420 = getelementptr inbounds %S.gen.FnSig, ptr %a307, i32 0, i32 12 + %t421 = getelementptr inbounds %S.ast.Type, ptr %t420, i32 0, i32 0 + %t422 = load { ptr, i64, i64 }, ptr %t421 + store { ptr, i64, i64 } %t422, ptr %a423 + store { ptr, i64, i64 } { ptr @.str.5787, i64 3, i64 0 }, ptr %a424 + %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) + %t426 = icmp ne i32 %t425, 0 + br i1 %t426, label %then8334, label %endif8336 +then8334: + %t427 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5788, i64 5, i64 0 }, ptr %a429 + store { ptr, i64, i64 } %t427, ptr %a430 + call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) + %t431 = load { ptr, i64, i64 }, ptr %a428 + store { ptr, i64, i64 } %t431, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.5789, i64 46, i64 0 }, ptr %a345 + br label %endif8336 +endif8336: + br label %endif8330 +endif8330: + %t432 = load ptr, ptr %a46 + %t433 = icmp eq ptr %t432, null + br i1 %t433, label %panic8337, label %ok8338 +panic8337: + call void @finch_panic(ptr @.str.5790, i64 5198, ptr @.str.5791) + unreachable +ok8338: + %t434 = getelementptr inbounds %S.gen.Gen, ptr %t432, i32 0, i32 3 + %t435 = getelementptr inbounds { ptr, i64, i64 }, ptr %t434, i32 0, i32 1 + %t436 = load { ptr, i64, i64 }, ptr %a330 + store { ptr, i64, i64 } { ptr @.str.5792, i64 48, i64 0 }, ptr %a438 + store { ptr, i64, i64 } %t436, ptr %a439 + call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) + %t440 = load { ptr, i64, i64 }, ptr %a437 + store { ptr, i64, i64 } %t440, ptr %a442 + store { ptr, i64, i64 } { ptr @.str.5793, i64 2, i64 0 }, ptr %a443 + call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) + %t444 = load { ptr, i64, i64 }, ptr %a441 + %t445 = load { ptr, i64, i64 }, ptr %a329 + store { ptr, i64, i64 } %t444, ptr %a447 + store { ptr, i64, i64 } %t445, ptr %a448 + call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) + %t449 = load { ptr, i64, i64 }, ptr %a446 + store { ptr, i64, i64 } %t449, ptr %a451 + store { ptr, i64, i64 } { ptr @.str.5794, i64 1, i64 0 }, ptr %a452 + call void @finch_str_concat(ptr %a450, ptr %a451, ptr %a452) + %t453 = load { ptr, i64, i64 }, ptr %a450 + %t454 = load { ptr, i64, i64 }, ptr %a345 + store { ptr, i64, i64 } %t453, ptr %a456 + store { ptr, i64, i64 } %t454, ptr %a457 + call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) + %t458 = load { ptr, i64, i64 }, ptr %a455 + store { ptr, i64, i64 } %t458, ptr %a460 + store { ptr, i64, i64 } { ptr @.str.5795, i64 2, i64 0 }, ptr %a461 + call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) + %t462 = load { ptr, i64, i64 }, ptr %a459 + %t463 = load i64, ptr %t435 + %t464 = add i64 %t463, 1 + call void @finch_arr_reserve(ptr %t434, i64 %t464, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t465 = load ptr, ptr %t434 + %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 %t463 + store { ptr, i64, i64 } %t462, ptr %t466 + store i64 %t464, ptr %t435 + %t467 = load ptr, ptr %a46 + %t468 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t467) + ret { ptr, i64, i64 } %t468 +} + +define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t4, ptr %a5 + call void @finch_str_copy(ptr %a6, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + %t8 = insertvalue %S.docs.Doc zeroinitializer, { ptr, i64, i64 } %t7, 0 + %t9 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t9, ptr %a10 + call void @finch_str_copy(ptr %a11, ptr %a10) + %t12 = load { ptr, i64, i64 }, ptr %a11 + %t13 = insertvalue %S.docs.Doc %t8, { ptr, i64, i64 } %t12, 1 + %t14 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t14, ptr %a15 + call void @finch_str_copy(ptr %a16, ptr %a15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + %t18 = insertvalue %S.docs.Doc %t13, { ptr, i64, i64 } %t17, 2 + ret %S.docs.Doc %t18 +} + +define internal { ptr, i64, i64 } @finch.docs.builtins() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5796, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5797, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5798, i64 78, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5799, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5800, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.5801, i64 77, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5802, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5803, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5804, i64 121, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5805, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5806, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.5807, i64 83, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5808, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5809, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5810, i64 29, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5811, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5812, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.5813, i64 73, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5814, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5815, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5816, i64 98, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5817, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5818, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.5819, i64 66, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5820, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5821, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5822, i64 48, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5823, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5824, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5825, i64 77, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5827, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5828, i64 66, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5829, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5830, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5831, i64 73, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5832, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5833, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5834, i64 61, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5835, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5836, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5837, i64 130, i64 0 }) + %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5838, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5839, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5840, i64 75, i64 0 }) + %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5841, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5842, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5843, i64 29, i64 0 }) + %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5844, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5845, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.5846, i64 26, i64 0 }) + %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5847, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5848, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5849, i64 88, i64 0 }) + %t19 = mul i64 18, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t20 = call ptr @finch_alloc(i64 %t19) + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 0 + store %S.docs.Doc %t1, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 1 + store %S.docs.Doc %t2, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 2 + store %S.docs.Doc %t3, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 3 + store %S.docs.Doc %t4, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 4 + store %S.docs.Doc %t5, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 5 + store %S.docs.Doc %t6, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 6 + store %S.docs.Doc %t7, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 7 + store %S.docs.Doc %t8, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 8 + store %S.docs.Doc %t9, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 9 + store %S.docs.Doc %t10, ptr %t30 + %t31 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 10 + store %S.docs.Doc %t11, ptr %t31 + %t32 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 11 + store %S.docs.Doc %t12, ptr %t32 + %t33 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 12 + store %S.docs.Doc %t13, ptr %t33 + %t34 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 13 + store %S.docs.Doc %t14, ptr %t34 + %t35 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 14 + store %S.docs.Doc %t15, ptr %t35 + %t36 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 15 + store %S.docs.Doc %t16, ptr %t36 + %t37 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 16 + store %S.docs.Doc %t17, ptr %t37 + %t38 = getelementptr inbounds %S.docs.Doc, ptr %t20, i64 17 + store %S.docs.Doc %t18, ptr %t38 + %t39 = insertvalue { ptr, i64, i64 } undef, ptr %t20, 0 + %t40 = insertvalue { ptr, i64, i64 } %t39, i64 18, 1 + %t41 = insertvalue { ptr, i64, i64 } %t40, i64 18, 2 + ret { ptr, i64, i64 } %t41 +} + +define internal { ptr, i64, i64 } @finch.docs.arrayMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5850, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5851, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5852, i64 23, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5854, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5855, i64 40, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5857, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5858, i64 18, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5859, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5860, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.5861, i64 43, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5862, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5863, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5864, i64 38, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5866, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5867, i64 37, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5868, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5869, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5870, i64 19, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5871, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5872, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5873, i64 46, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5874, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5875, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.5876, i64 22, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5877, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5878, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5879, i64 18, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5880, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5881, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5882, i64 37, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5883, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5884, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5885, i64 18, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5886, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5887, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5888, i64 45, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5889, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5890, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5891, i64 47, i64 0 }) + %t15 = mul i64 14, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t16 = call ptr @finch_alloc(i64 %t15) + %t17 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 0 + store %S.docs.Doc %t1, ptr %t17 + %t18 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 1 + store %S.docs.Doc %t2, ptr %t18 + %t19 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 2 + store %S.docs.Doc %t3, ptr %t19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 3 + store %S.docs.Doc %t4, ptr %t20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 4 + store %S.docs.Doc %t5, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 5 + store %S.docs.Doc %t6, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 6 + store %S.docs.Doc %t7, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 7 + store %S.docs.Doc %t8, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 8 + store %S.docs.Doc %t9, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 9 + store %S.docs.Doc %t10, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 10 + store %S.docs.Doc %t11, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 11 + store %S.docs.Doc %t12, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 12 + store %S.docs.Doc %t13, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 13 + store %S.docs.Doc %t14, ptr %t30 + %t31 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 + %t32 = insertvalue { ptr, i64, i64 } %t31, i64 14, 1 + %t33 = insertvalue { ptr, i64, i64 } %t32, i64 14, 2 + ret { ptr, i64, i64 } %t33 +} + +define internal { ptr, i64, i64 } @finch.docs.strMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5892, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5893, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5894, i64 20, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5895, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5896, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5897, i64 59, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5898, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5899, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.5900, i64 29, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5901, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5902, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5903, i64 22, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5904, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.5905, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5906, i64 24, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5907, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5908, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5909, i64 27, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5910, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.5911, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5912, i64 25, i64 0 }) + %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5913, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5914, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.5915, i64 62, i64 0 }) + %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5916, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5917, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5918, i64 41, i64 0 }) + %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5919, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5920, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5921, i64 24, i64 0 }) + %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5922, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5923, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5924, i64 24, i64 0 }) + %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5925, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5926, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.5927, i64 26, i64 0 }) + %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5928, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.5930, i64 17, i64 0 }) + %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5931, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5932, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5933, i64 22, i64 0 }) + %t15 = mul i64 14, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t16 = call ptr @finch_alloc(i64 %t15) + %t17 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 0 + store %S.docs.Doc %t1, ptr %t17 + %t18 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 1 + store %S.docs.Doc %t2, ptr %t18 + %t19 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 2 + store %S.docs.Doc %t3, ptr %t19 + %t20 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 3 + store %S.docs.Doc %t4, ptr %t20 + %t21 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 4 + store %S.docs.Doc %t5, ptr %t21 + %t22 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 5 + store %S.docs.Doc %t6, ptr %t22 + %t23 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 6 + store %S.docs.Doc %t7, ptr %t23 + %t24 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 7 + store %S.docs.Doc %t8, ptr %t24 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 8 + store %S.docs.Doc %t9, ptr %t25 + %t26 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 9 + store %S.docs.Doc %t10, ptr %t26 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 10 + store %S.docs.Doc %t11, ptr %t27 + %t28 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 11 + store %S.docs.Doc %t12, ptr %t28 + %t29 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 12 + store %S.docs.Doc %t13, ptr %t29 + %t30 = getelementptr inbounds %S.docs.Doc, ptr %t16, i64 13 + store %S.docs.Doc %t14, ptr %t30 + %t31 = insertvalue { ptr, i64, i64 } undef, ptr %t16, 0 + %t32 = insertvalue { ptr, i64, i64 } %t31, i64 14, 1 + %t33 = insertvalue { ptr, i64, i64 } %t32, i64 14, 2 + ret { ptr, i64, i64 } %t33 +} + +define internal { ptr, i64, i64 } @finch.docs.mapMethods() { +entry: + + %t1 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5934, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5935, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5936, i64 19, i64 0 }) + %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5937, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5938, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5939, i64 22, i64 0 }) + %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5941, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.5942, i64 53, i64 0 }) + %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5943, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5944, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.5945, i64 52, i64 0 }) + %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5946, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.5947, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.5948, i64 19, i64 0 }) + %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5949, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.5950, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5951, i64 39, i64 0 }) + %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.5952, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.5953, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.5954, i64 47, i64 0 }) + %t8 = mul i64 7, ptrtoint (ptr getelementptr (%S.docs.Doc, ptr null, i32 1) to i64) + %t9 = call ptr @finch_alloc(i64 %t8) + %t10 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 0 + store %S.docs.Doc %t1, ptr %t10 + %t11 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 1 + store %S.docs.Doc %t2, ptr %t11 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 2 + store %S.docs.Doc %t3, ptr %t12 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 3 + store %S.docs.Doc %t4, ptr %t13 + %t14 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 4 + store %S.docs.Doc %t5, ptr %t14 + %t15 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 5 + store %S.docs.Doc %t6, ptr %t15 + %t16 = getelementptr inbounds %S.docs.Doc, ptr %t9, i64 6 + store %S.docs.Doc %t7, ptr %t16 + %t17 = insertvalue { ptr, i64, i64 } undef, ptr %t9, 0 + %t18 = insertvalue { ptr, i64, i64 } %t17, i64 7, 1 + %t19 = insertvalue { ptr, i64, i64 } %t18, i64 7, 2 + ret { ptr, i64, i64 } %t19 +} + +define internal { ptr, i64, i64 } @finch.docs.keywords() { +entry: + + %t1 = mul i64 22, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t2 = call ptr @finch_alloc(i64 %t1) + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 + store { ptr, i64, i64 } { ptr @.str.5955, i64 2, i64 0 }, ptr %t3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 + store { ptr, i64, i64 } { ptr @.str.5956, i64 6, i64 0 }, ptr %t4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 + store { ptr, i64, i64 } { ptr @.str.5957, i64 2, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 + store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 + store { ptr, i64, i64 } { ptr @.str.5959, i64 5, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 + store { ptr, i64, i64 } { ptr @.str.5960, i64 3, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 + store { ptr, i64, i64 } { ptr @.str.5961, i64 2, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 + store { ptr, i64, i64 } { ptr @.str.5962, i64 5, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 + store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 + store { ptr, i64, i64 } { ptr @.str.5964, i64 4, i64 0 }, ptr %t12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 + store { ptr, i64, i64 } { ptr @.str.5965, i64 5, i64 0 }, ptr %t13 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 + store { ptr, i64, i64 } { ptr @.str.5966, i64 4, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 + store { ptr, i64, i64 } { ptr @.str.5967, i64 6, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 + store { ptr, i64, i64 } { ptr @.str.5968, i64 4, i64 0 }, ptr %t16 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 + store { ptr, i64, i64 } { ptr @.str.5969, i64 6, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 + store { ptr, i64, i64 } { ptr @.str.5970, i64 4, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 + store { ptr, i64, i64 } { ptr @.str.5971, i64 5, i64 0 }, ptr %t19 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 + store { ptr, i64, i64 } { ptr @.str.5972, i64 6, i64 0 }, ptr %t20 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 + store { ptr, i64, i64 } { ptr @.str.5973, i64 5, i64 0 }, ptr %t21 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 + store { ptr, i64, i64 } { ptr @.str.5974, i64 2, i64 0 }, ptr %t22 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 + store { ptr, i64, i64 } { ptr @.str.5975, i64 3, i64 0 }, ptr %t23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 + store { ptr, i64, i64 } { ptr @.str.5976, i64 4, i64 0 }, ptr %t24 + %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t26 = insertvalue { ptr, i64, i64 } %t25, i64 22, 1 + %t27 = insertvalue { ptr, i64, i64 } %t26, i64 22, 2 + ret { ptr, i64, i64 } %t27 +} + +define internal { ptr, i64, i64 } @finch.docs.typeNames() { +entry: + + %t1 = mul i64 17, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t2 = call ptr @finch_alloc(i64 %t1) + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 + store { ptr, i64, i64 } { ptr @.str.5977, i64 3, i64 0 }, ptr %t3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 + store { ptr, i64, i64 } { ptr @.str.5978, i64 5, i64 0 }, ptr %t4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 + store { ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }, ptr %t5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 + store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %t6 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 + store { ptr, i64, i64 } { ptr @.str.5981, i64 3, i64 0 }, ptr %t7 + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 + store { ptr, i64, i64 } { ptr @.str.5982, i64 3, i64 0 }, ptr %t8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 + store { ptr, i64, i64 } { ptr @.str.5983, i64 3, i64 0 }, ptr %t9 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 + store { ptr, i64, i64 } { ptr @.str.5984, i64 2, i64 0 }, ptr %t10 + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 + store { ptr, i64, i64 } { ptr @.str.5985, i64 3, i64 0 }, ptr %t11 + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 + store { ptr, i64, i64 } { ptr @.str.5986, i64 3, i64 0 }, ptr %t12 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 + store { ptr, i64, i64 } { ptr @.str.5987, i64 3, i64 0 }, ptr %t13 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 + store { ptr, i64, i64 } { ptr @.str.5988, i64 2, i64 0 }, ptr %t14 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 + store { ptr, i64, i64 } { ptr @.str.5989, i64 3, i64 0 }, ptr %t15 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 + store { ptr, i64, i64 } { ptr @.str.5990, i64 3, i64 0 }, ptr %t16 + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 + store { ptr, i64, i64 } { ptr @.str.5991, i64 3, i64 0 }, ptr %t17 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 + store { ptr, i64, i64 } { ptr @.str.5992, i64 3, i64 0 }, ptr %t18 + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 + store { ptr, i64, i64 } { ptr @.str.5993, i64 3, i64 0 }, ptr %t19 + %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 + %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 + %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 + ret { ptr, i64, i64 } %t22 +} + +define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca %S.docs.Doc, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond8339 +each.cond8339: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body8340, label %each.end8342 +each.body8340: + %t8 = load ptr, ptr %a1 + %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 + %t10 = load %S.docs.Doc, ptr %t9 + store %S.docs.Doc %t10, ptr %a11 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 + %t13 = load { ptr, i64, i64 }, ptr %t12 + %t14 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t13, ptr %a15 + store { ptr, i64, i64 } %t14, ptr %a16 + %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br i1 %t18, label %then8343, label %endif8345 +then8343: + %t19 = load %S.docs.Doc, ptr %a11 + ret %S.docs.Doc %t19 +endif8345: + br label %each.step8341 +each.step8341: + %t20 = load i64, ptr %a3 + %t21 = add i64 %t20, 1 + store i64 %t21, ptr %a3 + br label %each.cond8339 +each.end8342: + ret %S.docs.Doc zeroinitializer +} + +define internal { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %p0) { +entry: + %a1 = alloca %S.docs.Doc, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + store %S.docs.Doc %p0, ptr %a1 + %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 + %t3 = load { ptr, i64, i64 }, ptr %t2 + store { ptr, i64, i64 } { ptr @.str.5994, i64 9, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.5995, i64 5, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + %t12 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t11, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + ret { ptr, i64, i64 } %t17 } define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { @@ -72628,7 +77478,7 @@ entry: %a19 = alloca %S.ast.Type, align 16 store %S.ast.Type %p0, ptr %a1 store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5530, i64 5, i64 0 }, 0 + %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5996, i64 5, i64 0 }, 0 %t4 = load i64, ptr %a2 %t5 = insertvalue %S.ast.Type %t3, i64 %t4, 4 store %S.ast.Type %t5, ptr %a6 @@ -72713,10 +77563,10 @@ entry: %a121 = alloca { ptr, i64, i64 }, align 16 store { ptr, i64, i64 } %p0, ptr %a1 store { ptr, i64, i64 } zeroinitializer, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5531, i64 22, i64 0 }, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.5997, i64 22, i64 0 }, ptr %a3 %t4 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t4, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.5532, i64 26, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.5998, i64 26, i64 0 }, ptr %a7 call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) %t8 = load { ptr, i64, i64 }, ptr %a5 %t9 = load { ptr, i64, i64 }, ptr %a3 @@ -72725,7 +77575,7 @@ entry: call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) %t13 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.5533, i64 13, i64 0 }, ptr %a16 + store { ptr, i64, i64 } { ptr @.str.5999, i64 13, i64 0 }, ptr %a16 call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) %t17 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t17, ptr %a19 @@ -72736,33 +77586,33 @@ entry: %t23 = call i32 @finch_file_exists(ptr %a22) %t24 = icmp ne i32 %t23, 0 %t25 = xor i1 %t24, true - br i1 %t25, label %then7987, label %endif7989 -then7987: + br i1 %t25, label %then8346, label %endif8348 +then8346: %t26 = load { ptr, i64, i64 }, ptr %a2 store { ptr, i64, i64 } %t26, ptr %a27 call void @finch.copy.arr_str(ptr %a28, ptr %a27) %t29 = load { ptr, i64, i64 }, ptr %a28 ret { ptr, i64, i64 } %t29 -endif7989: +endif8348: store i1 false, ptr %a30 %t31 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_read_file(ptr %a33, ptr %a32, ptr @.str.5534, i64 110) + call void @finch_read_file(ptr %a33, ptr %a32, ptr @.str.6000, i64 110) %t34 = load { ptr, i64, i64 }, ptr %a33 store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5536, i64 1, i64 0 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6002, i64 1, i64 0 }, ptr %a37 call void @finch_str_split(ptr %a38, ptr %a35, ptr %a37) %t39 = load { ptr, i64, i64 }, ptr %a38 store { ptr, i64, i64 } %t39, ptr %a40 store i64 0, ptr %a41 - br label %each.cond7990 -each.cond7990: + br label %each.cond8349 +each.cond8349: %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %a40, i32 0, i32 1 %t43 = load i64, ptr %t42 %t44 = load i64, ptr %a41 %t45 = icmp slt i64 %t44, %t43 - br i1 %t45, label %each.body7991, label %each.end7993 -each.body7991: + br i1 %t45, label %each.body8350, label %each.end8352 +each.body8350: %t46 = load ptr, ptr %a40 %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44 %t48 = load { ptr, i64, i64 }, ptr %t47 @@ -72774,57 +77624,57 @@ each.body7991: store { ptr, i64, i64 } %t53, ptr %a54 %t55 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.5539, i64 34, i64 0 }, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.6005, i64 34, i64 0 }, ptr %a58 %t59 = call i32 @finch_str_starts(ptr %a56, ptr %a58) %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then7994, label %endif7996 -then7994: + br i1 %t60, label %then8353, label %endif8355 +then8353: store i1 true, ptr %a30 - br label %each.step7992 -endif7996: + br label %each.step8351 +endif8355: %t61 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.5541, i64 19, i64 0 }, ptr %a64 + store { ptr, i64, i64 } { ptr @.str.6007, i64 19, i64 0 }, ptr %a64 %t65 = call i32 @finch_str_starts(ptr %a62, ptr %a64) %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7997, label %endif7999 -then7997: - br label %each.end7993 -endif7999: + br i1 %t66, label %then8356, label %endif8358 +then8356: + br label %each.end8352 +endif8358: %t67 = load i1, ptr %a30 %t68 = xor i1 %t67, true - br label %logic.from8000 -logic.from8000: - br i1 %t68, label %logic.end8002, label %logic.rhs8001 -logic.rhs8001: + br label %logic.from8359 +logic.from8359: + br i1 %t68, label %logic.end8361, label %logic.rhs8360 +logic.rhs8360: %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 %t70 = load i64, ptr %t69 %t71 = icmp eq i64 %t70, 0 - br label %logic.rend8003 -logic.rend8003: - br label %logic.end8002 -logic.end8002: - %t72 = phi i1 [ true, %logic.from8000 ], [ %t71, %logic.rend8003 ] - br i1 %t72, label %then8004, label %endif8006 -then8004: - br label %each.step7992 -endif8006: + br label %logic.rend8362 +logic.rend8362: + br label %logic.end8361 +logic.end8361: + %t72 = phi i1 [ true, %logic.from8359 ], [ %t71, %logic.rend8362 ] + br i1 %t72, label %then8363, label %endif8365 +then8363: + br label %each.step8351 +endif8365: %t73 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.5543, i64 22, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6009, i64 22, i64 0 }, ptr %a76 %t77 = call i32 @finch_str_ends(ptr %a74, ptr %a76) %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then8007, label %else8008 -then8007: + br i1 %t78, label %then8366, label %else8367 +then8366: %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t80 = load { ptr, i64, i64 }, ptr %a54 store { ptr, i64, i64 } %t80, ptr %a81 %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %a54, i32 0, i32 1 %t84 = load i64, ptr %t83 %t85 = sub i64 %t84, 22 - call void @finch_str_sub(ptr %a82, ptr %a81, i64 0, i64 %t85, ptr @.str.5545, i64 124) + call void @finch_str_sub(ptr %a82, ptr %a81, i64 0, i64 %t85, ptr @.str.6011, i64 124) %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.5544, i64 11, i64 0 }, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6010, i64 11, i64 0 }, ptr %a88 store { ptr, i64, i64 } %t86, ptr %a89 call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) %t90 = load { ptr, i64, i64 }, ptr %a87 @@ -72835,11 +77685,11 @@ then8007: %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 store { ptr, i64, i64 } %t90, ptr %t94 store i64 %t92, ptr %t79 - br label %endif8009 -else8008: + br label %endif8368 +else8367: %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t96 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5546, i64 8, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.6012, i64 8, i64 0 }, ptr %a98 store { ptr, i64, i64 } %t96, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 @@ -72850,22 +77700,22 @@ else8008: %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 store { ptr, i64, i64 } %t100, ptr %t104 store i64 %t102, ptr %t95 - br label %endif8009 -endif8009: - br label %each.step7992 -each.step7992: + br label %endif8368 +endif8368: + br label %each.step8351 +each.step8351: %t105 = load i64, ptr %a41 %t106 = add i64 %t105, 1 store i64 %t106, ptr %a41 - br label %each.cond7990 -each.end7993: + br label %each.cond8349 +each.end8352: %t107 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5547, i64 7, i64 0 }, ptr %a109 + store { ptr, i64, i64 } { ptr @.str.6013, i64 7, i64 0 }, ptr %a109 store { ptr, i64, i64 } %t107, ptr %a110 call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5548, i64 1, i64 0 }, ptr %a114 + store { ptr, i64, i64 } { ptr @.str.6014, i64 1, i64 0 }, ptr %a114 call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) %t115 = load { ptr, i64, i64 }, ptr %a112 store { ptr, i64, i64 } %t115, ptr %a117 @@ -72926,38 +77776,38 @@ entry: store { ptr, i64, i64 } %t13, ptr %a14 %t15 = load ptr, ptr %a1 %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic8010, label %ok8011 -panic8010: - call void @finch_panic(ptr @.str.5549, i64 139, ptr @.str.5550) + br i1 %t16, label %panic8369, label %ok8370 +panic8369: + call void @finch_panic(ptr @.str.6015, i64 139, ptr @.str.6016) unreachable -ok8011: +ok8370: %t17 = getelementptr inbounds %S.cimport.Importer, ptr %t15, i32 0, i32 3 %t18 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t18, ptr %a19 %t20 = call i64 @finch_map_find(ptr %t17, ptr %a19, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t21 = icmp sge i64 %t20, 0 - br i1 %t21, label %then8012, label %endif8014 -then8012: + br i1 %t21, label %then8371, label %endif8373 +then8371: %t22 = load ptr, ptr %a1 %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic8015, label %ok8016 -panic8015: - call void @finch_panic(ptr @.str.5551, i64 140, ptr @.str.5552) + br i1 %t23, label %panic8374, label %ok8375 +panic8374: + call void @finch_panic(ptr @.str.6017, i64 140, ptr @.str.6018) unreachable -ok8016: +ok8375: %t24 = getelementptr inbounds %S.cimport.Importer, ptr %t22, i32 0, i32 3 %t25 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t25, ptr %a26 %t27 = call i64 @finch_map_find(ptr %t24, ptr %a26, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t28 = icmp slt i64 %t27, 0 - br i1 %t28, label %map.missing8017, label %map.found8018 -map.missing8017: + br i1 %t28, label %map.missing8376, label %map.found8377 +map.missing8376: store { ptr, i64, i64 } zeroinitializer, ptr %a29 store { ptr, i64, i64 } %t25, ptr %a30 call void @finch_buf_str(ptr %a29, ptr %a30, i32 1) - call void @finch_map_missing(ptr @.str.5553, i64 140, ptr %a29) + call void @finch_map_missing(ptr @.str.6019, i64 140, ptr %a29) unreachable -map.found8018: +map.found8377: %t31 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t24, i32 0, i32 0 %t32 = load ptr, ptr %t31 %t33 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t32, i64 %t27 @@ -72967,7 +77817,7 @@ map.found8018: call void @finch_str_copy(ptr %a37, ptr %a36) %t38 = load { ptr, i64, i64 }, ptr %a37 ret { ptr, i64, i64 } %t38 -endif8014: +endif8373: %t39 = load %S.C.CXCursor, ptr %a7 store %S.C.CXCursor %t39, ptr %a40 %t41 = call { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8 %a40) @@ -72978,59 +77828,59 @@ endif8014: %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 %t47 = load i64, ptr %t46 %t48 = icmp eq i64 %t47, 0 - br label %logic.from8019 -logic.from8019: - br i1 %t48, label %logic.end8021, label %logic.rhs8020 -logic.rhs8020: + br label %logic.from8378 +logic.from8378: + br i1 %t48, label %logic.end8380, label %logic.rhs8379 +logic.rhs8379: %t49 = load { ptr, i64, i64 }, ptr %a45 store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5555, i64 1, i64 0 }, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6021, i64 1, i64 0 }, ptr %a52 %t53 = call i64 @finch_str_find(ptr %a50, ptr %a52) %t54 = icmp sge i64 %t53, 0 - br label %logic.rend8022 -logic.rend8022: - br label %logic.end8021 -logic.end8021: - %t55 = phi i1 [ true, %logic.from8019 ], [ %t54, %logic.rend8022 ] - br i1 %t55, label %then8023, label %endif8025 -then8023: + br label %logic.rend8381 +logic.rend8381: + br label %logic.end8380 +logic.end8380: + %t55 = phi i1 [ true, %logic.from8378 ], [ %t54, %logic.rend8381 ] + br i1 %t55, label %then8382, label %endif8384 +then8382: %t56 = load ptr, ptr %a1 %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic8026, label %ok8027 -panic8026: - call void @finch_panic(ptr @.str.5556, i64 144, ptr @.str.5557) + br i1 %t57, label %panic8385, label %ok8386 +panic8385: + call void @finch_panic(ptr @.str.6022, i64 144, ptr @.str.6023) unreachable -ok8027: +ok8386: %t58 = getelementptr inbounds %S.cimport.Importer, ptr %t56, i32 0, i32 5 %t59 = load i64, ptr %t58 %t60 = add i64 %t59, 1 store i64 %t60, ptr %t58 %t61 = load ptr, ptr %a1 %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8028, label %ok8029 -panic8028: - call void @finch_panic(ptr @.str.5559, i64 145, ptr @.str.5560) + br i1 %t62, label %panic8387, label %ok8388 +panic8387: + call void @finch_panic(ptr @.str.6025, i64 145, ptr @.str.6026) unreachable -ok8029: +ok8388: %t63 = getelementptr inbounds %S.cimport.Importer, ptr %t61, i32 0, i32 5 %t64 = load i64, ptr %t63 call void @finch_str_from_int(ptr %a65, i64 %t64) %t66 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5558, i64 12, i64 0 }, ptr %a68 + store { ptr, i64, i64 } { ptr @.str.6024, i64 12, i64 0 }, ptr %a68 store { ptr, i64, i64 } %t66, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a45 - br label %endif8025 -endif8025: + br label %endif8384 +endif8384: %t71 = load { ptr, i64, i64 }, ptr %a45 %t72 = load ptr, ptr %a1 %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic8030, label %ok8031 -panic8030: - call void @finch_panic(ptr @.str.5561, i64 147, ptr @.str.5562) + br i1 %t73, label %panic8389, label %ok8390 +panic8389: + call void @finch_panic(ptr @.str.6027, i64 147, ptr @.str.6028) unreachable -ok8031: +ok8390: %t74 = getelementptr inbounds %S.cimport.Importer, ptr %t72, i32 0, i32 3 %t75 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t75, ptr %a76 @@ -73041,14 +77891,14 @@ ok8031: %t81 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t80, i64 %t78 %t82 = load i32, ptr %a77 %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %map.new8032, label %map.have8033 -map.new8032: + br i1 %t83, label %map.new8391, label %map.have8392 +map.new8391: %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 1 call void @finch_str_copy(ptr %t84, ptr %a76) %t85 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 2 store { ptr, i64, i64 } zeroinitializer, ptr %t85 - br label %map.have8033 -map.have8033: + br label %map.have8392 +map.have8392: %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i32 0, i32 2 store { ptr, i64, i64 } %t71, ptr %a87 call void @finch_str_copy(ptr %a88, ptr %a87) @@ -73132,63 +77982,63 @@ entry: store { ptr, i64, i64 } %t22, ptr %a23 %t24 = load ptr, ptr %a1 %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8034, label %ok8035 -panic8034: - call void @finch_panic(ptr @.str.5563, i64 157, ptr @.str.5564) + br i1 %t25, label %panic8393, label %ok8394 +panic8393: + call void @finch_panic(ptr @.str.6029, i64 157, ptr @.str.6030) unreachable -ok8035: +ok8394: %t26 = getelementptr inbounds %S.cimport.Importer, ptr %t24, i32 0, i32 0 %t27 = getelementptr inbounds %S.cimport.CImports, ptr %t26, i32 0, i32 3 %t28 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t28, ptr %a29 %t30 = call i64 @finch_map_find(ptr %t27, ptr %a29, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t31 = icmp sge i64 %t30, 0 - br label %logic.from8036 -logic.from8036: - br i1 %t31, label %logic.end8038, label %logic.rhs8037 -logic.rhs8037: + br label %logic.from8395 +logic.from8395: + br i1 %t31, label %logic.end8397, label %logic.rhs8396 +logic.rhs8396: %t32 = load ptr, ptr %a1 %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic8039, label %ok8040 -panic8039: - call void @finch_panic(ptr @.str.5565, i64 157, ptr @.str.5566) + br i1 %t33, label %panic8398, label %ok8399 +panic8398: + call void @finch_panic(ptr @.str.6031, i64 157, ptr @.str.6032) unreachable -ok8040: +ok8399: %t34 = getelementptr inbounds %S.cimport.Importer, ptr %t32, i32 0, i32 4 %t35 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t35, ptr %a36 %t37 = call i64 @finch_map_find(ptr %t34, ptr %a36, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t38 = icmp sge i64 %t37, 0 - br label %logic.rend8041 -logic.rend8041: - br label %logic.end8038 -logic.end8038: - %t39 = phi i1 [ true, %logic.from8036 ], [ %t38, %logic.rend8041 ] - br i1 %t39, label %then8042, label %endif8044 -then8042: + br label %logic.rend8400 +logic.rend8400: + br label %logic.end8397 +logic.end8397: + %t39 = phi i1 [ true, %logic.from8395 ], [ %t38, %logic.rend8400 ] + br i1 %t39, label %then8401, label %endif8403 +then8401: %t40 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t40, ptr %a41 call void @finch_str_copy(ptr %a42, ptr %a41) %t43 = load { ptr, i64, i64 }, ptr %a42 ret { ptr, i64, i64 } %t43 -endif8044: +endif8403: %t44 = load %S.C.CXType, ptr %a7 store %S.C.CXType %t44, ptr %a45 %t46 = call i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8 %a45) store i64 %t46, ptr %a47 %t48 = load i64, ptr %a47 %t49 = icmp slt i64 %t48, 0 - br i1 %t49, label %then8045, label %endif8047 -then8045: - ret { ptr, i64, i64 } { ptr @.str.5567, i64 0, i64 0 } -endif8047: + br i1 %t49, label %then8404, label %endif8406 +then8404: + ret { ptr, i64, i64 } { ptr @.str.6033, i64 0, i64 0 } +endif8406: %t50 = load ptr, ptr %a1 %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic8048, label %ok8049 -panic8048: - call void @finch_panic(ptr @.str.5568, i64 164, ptr @.str.5569) + br i1 %t51, label %panic8407, label %ok8408 +panic8407: + call void @finch_panic(ptr @.str.6034, i64 164, ptr @.str.6035) unreachable -ok8049: +ok8408: %t52 = getelementptr inbounds %S.cimport.Importer, ptr %t50, i32 0, i32 4 %t53 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t53, ptr %a54 @@ -73199,14 +78049,14 @@ ok8049: %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t58, i64 %t56 %t60 = load i32, ptr %a55 %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %map.new8050, label %map.have8051 -map.new8050: + br i1 %t61, label %map.new8409, label %map.have8410 +map.new8409: %t62 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 1 call void @finch_str_copy(ptr %t62, ptr %a54) %t63 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 2 store i1 false, ptr %t63 - br label %map.have8051 -map.have8051: + br label %map.have8410 +map.have8410: %t64 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t59, i32 0, i32 2 store i1 true, ptr %t64 %t65 = load { ptr, i64, i64 }, ptr %a23 @@ -73225,12 +78075,12 @@ map.have8051: store %S.C.CXCursor %t77, ptr %a78 %t79 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a78) %t80 = icmp eq i32 %t79, 3 - br i1 %t80, label %then8052, label %endif8054 -then8052: + br i1 %t80, label %then8411, label %endif8413 +then8411: %t81 = getelementptr inbounds %S.cimport.CStruct, ptr %a76, i32 0, i32 4 - store { ptr, i64, i64 } { ptr @.str.5570, i64 12, i64 0 }, ptr %t81 - br label %endif8054 -endif8054: + store { ptr, i64, i64 } { ptr @.str.6036, i64 12, i64 0 }, ptr %t81 + br label %endif8413 +endif8413: %t82 = load ptr, ptr %a1 %t83 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t82, 0 %t84 = insertvalue %S.cimport.FieldCtx %t83, ptr %a76, 1 @@ -73240,29 +78090,29 @@ endif8054: %t88 = call i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8 %a87, ptr @finch.c.cimport.visitField, ptr %a85) %t89 = load ptr, ptr %a1 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic8055, label %ok8056 -panic8055: - call void @finch_panic(ptr @.str.5571, i64 172, ptr @.str.5572) + br i1 %t90, label %panic8414, label %ok8415 +panic8414: + call void @finch_panic(ptr @.str.6037, i64 172, ptr @.str.6038) unreachable -ok8056: +ok8415: %t91 = getelementptr inbounds %S.cimport.Importer, ptr %t89, i32 0, i32 4 %t92 = load { ptr, i64, i64 }, ptr %a19 store { ptr, i64, i64 } %t92, ptr %a93 %t94 = call i64 @finch_map_find(ptr %t91, ptr %a93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t95 = icmp sge i64 %t94, 0 - br i1 %t95, label %remove.hit8057, label %remove.end8058 -remove.hit8057: + br i1 %t95, label %remove.hit8416, label %remove.end8417 +remove.hit8416: call void @finch_map_remove_at(ptr %t91, i64 %t94, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end8058 -remove.end8058: + br label %remove.end8417 +remove.end8417: %t96 = load %S.cimport.CStruct, ptr %a76 %t97 = load ptr, ptr %a1 %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic8059, label %ok8060 -panic8059: - call void @finch_panic(ptr @.str.5573, i64 173, ptr @.str.5574) + br i1 %t98, label %panic8418, label %ok8419 +panic8418: + call void @finch_panic(ptr @.str.6039, i64 173, ptr @.str.6040) unreachable -ok8060: +ok8419: %t99 = getelementptr inbounds %S.cimport.Importer, ptr %t97, i32 0, i32 0 %t100 = getelementptr inbounds %S.cimport.CImports, ptr %t99, i32 0, i32 3 %t101 = load { ptr, i64, i64 }, ptr %a23 @@ -73274,14 +78124,14 @@ ok8060: %t107 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t106, i64 %t104 %t108 = load i32, ptr %a103 %t109 = icmp ne i32 %t108, 0 - br i1 %t109, label %map.new8061, label %map.have8062 -map.new8061: + br i1 %t109, label %map.new8420, label %map.have8421 +map.new8420: %t110 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 1 call void @finch_str_copy(ptr %t110, ptr %a102) %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 2 store %S.cimport.CStruct zeroinitializer, ptr %t111 - br label %map.have8062 -map.have8062: + br label %map.have8421 +map.have8421: %t112 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t107, i32 0, i32 2 store %S.cimport.CStruct %t96, ptr %a113 call void @finch.copy.S_cimport_CStruct(ptr %a114, ptr %a113) @@ -73289,11 +78139,11 @@ map.have8062: store %S.cimport.CStruct %t115, ptr %t112 %t116 = load ptr, ptr %a1 %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic8063, label %ok8064 -panic8063: - call void @finch_panic(ptr @.str.5575, i64 174, ptr @.str.5576) + br i1 %t117, label %panic8422, label %ok8423 +panic8422: + call void @finch_panic(ptr @.str.6041, i64 174, ptr @.str.6042) unreachable -ok8064: +ok8423: %t118 = getelementptr inbounds %S.cimport.Importer, ptr %t116, i32 0, i32 0 %t119 = getelementptr inbounds %S.cimport.CImports, ptr %t118, i32 0, i32 4 %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 @@ -73380,36 +78230,36 @@ entry: store %S.C.CXCursor %t34, ptr %a35 %t36 = call i32 @clang_Cursor_isBitField(ptr byval(%S.C.CXCursor) align 8 %a35) %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then8065, label %else8066 -then8065: + br i1 %t37, label %then8424, label %else8425 +then8424: %t38 = load ptr, ptr %a4 %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic8068, label %ok8069 -panic8068: - call void @finch_panic(ptr @.str.5578, i64 191, ptr @.str.5579) + br i1 %t39, label %panic8427, label %ok8428 +panic8427: + call void @finch_panic(ptr @.str.6044, i64 191, ptr @.str.6045) unreachable -ok8069: +ok8428: %t40 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t38, i32 0, i32 1 %t41 = load ptr, ptr %t40 %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic8070, label %ok8071 -panic8070: - call void @finch_panic(ptr @.str.5580, i64 191, ptr @.str.5581) + br i1 %t42, label %panic8429, label %ok8430 +panic8429: + call void @finch_panic(ptr @.str.6046, i64 191, ptr @.str.6047) unreachable -ok8071: +ok8430: %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - store { ptr, i64, i64 } { ptr @.str.5577, i64 14, i64 0 }, ptr %t43 + store { ptr, i64, i64 } { ptr @.str.6043, i64 14, i64 0 }, ptr %t43 %t44 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 store i1 true, ptr %t44 - br label %endif8067 -else8066: + br label %endif8426 +else8425: %t45 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 %t46 = load i32, ptr %t45 %t47 = icmp eq i32 %t46, 105 - br label %logic.from8072 -logic.from8072: - br i1 %t47, label %logic.rhs8073, label %logic.end8074 -logic.rhs8073: + br label %logic.from8431 +logic.from8431: + br i1 %t47, label %logic.rhs8432, label %logic.end8433 +logic.rhs8432: %t49 = load %S.C.CXType, ptr %a20 store %S.C.CXType %t49, ptr %a50 call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a48, ptr byval(%S.C.CXType) align 8 %a50) @@ -73417,24 +78267,24 @@ logic.rhs8073: store %S.C.CXCursor %t51, ptr %a52 %t53 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a52) %t54 = icmp eq i32 %t53, 3 - br label %logic.rend8075 -logic.rend8075: - br label %logic.end8074 -logic.end8074: - %t55 = phi i1 [ false, %logic.from8072 ], [ %t54, %logic.rend8075 ] - br i1 %t55, label %then8076, label %else8077 -then8076: + br label %logic.rend8434 +logic.rend8434: + br label %logic.end8433 +logic.end8433: + %t55 = phi i1 [ false, %logic.from8431 ], [ %t54, %logic.rend8434 ] + br i1 %t55, label %then8435, label %else8436 +then8435: %t56 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 store i1 true, ptr %t56 - br label %endif8078 -else8077: + br label %endif8437 +else8436: %t57 = load ptr, ptr %a4 %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic8079, label %ok8080 -panic8079: - call void @finch_panic(ptr @.str.5582, i64 196, ptr @.str.5583) + br i1 %t58, label %panic8438, label %ok8439 +panic8438: + call void @finch_panic(ptr @.str.6048, i64 196, ptr @.str.6049) unreachable -ok8080: +ok8439: %t59 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t57, i32 0, i32 0 %t60 = load ptr, ptr %t59 %t61 = load %S.C.CXType, ptr %a20 @@ -73442,8 +78292,8 @@ ok8080: store %S.cimport.Mapped %t62, ptr %a63 %t64 = getelementptr inbounds %S.cimport.Mapped, ptr %a63, i32 0, i32 2 %t65 = load i1, ptr %t64 - br i1 %t65, label %then8081, label %else8082 -then8081: + br i1 %t65, label %then8440, label %else8441 +then8440: %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a63, i32 0, i32 0 %t67 = load %S.ast.Type, ptr %t66 %t68 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 @@ -73451,64 +78301,64 @@ then8081: call void @finch.copy.S_ast_Type(ptr %a70, ptr %a69) %t71 = load %S.ast.Type, ptr %a70 store %S.ast.Type %t71, ptr %t68 - br label %endif8083 -else8082: + br label %endif8442 +else8441: %t72 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 store i1 true, ptr %t72 - br label %endif8083 -endif8083: - br label %endif8078 -endif8078: - br label %endif8067 -endif8067: + br label %endif8442 +endif8442: + br label %endif8437 +endif8437: + br label %endif8426 +endif8426: %t73 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 %t74 = load i1, ptr %t73 - br i1 %t74, label %then8084, label %endif8086 -then8084: + br i1 %t74, label %then8443, label %endif8445 +then8443: %t75 = load ptr, ptr %a4 %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic8087, label %ok8088 -panic8087: - call void @finch_panic(ptr @.str.5584, i64 204, ptr @.str.5585) + br i1 %t76, label %panic8446, label %ok8447 +panic8446: + call void @finch_panic(ptr @.str.6050, i64 204, ptr @.str.6051) unreachable -ok8088: +ok8447: %t77 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t75, i32 0, i32 1 %t78 = load ptr, ptr %t77 %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic8089, label %ok8090 -panic8089: - call void @finch_panic(ptr @.str.5586, i64 204, ptr @.str.5587) + br i1 %t79, label %panic8448, label %ok8449 +panic8448: + call void @finch_panic(ptr @.str.6052, i64 204, ptr @.str.6053) unreachable -ok8090: +ok8449: %t80 = getelementptr inbounds %S.cimport.CStruct, ptr %t78, i32 0, i32 5 store i1 true, ptr %t80 - br label %endif8086 -endif8086: + br label %endif8445 +endif8445: %t81 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i32 0, i32 1 %t83 = load i64, ptr %t82 %t84 = icmp eq i64 %t83, 0 - br i1 %t84, label %then8091, label %endif8093 -then8091: + br i1 %t84, label %then8450, label %endif8452 +then8450: %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 store i1 true, ptr %t85 - br label %endif8093 -endif8093: + br label %endif8452 +endif8452: %t86 = load ptr, ptr %a4 %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic8094, label %ok8095 -panic8094: - call void @finch_panic(ptr @.str.5588, i64 209, ptr @.str.5589) + br i1 %t87, label %panic8453, label %ok8454 +panic8453: + call void @finch_panic(ptr @.str.6054, i64 209, ptr @.str.6055) unreachable -ok8095: +ok8454: %t88 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t86, i32 0, i32 1 %t89 = load ptr, ptr %t88 %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic8096, label %ok8097 -panic8096: - call void @finch_panic(ptr @.str.5590, i64 209, ptr @.str.5591) + br i1 %t90, label %panic8455, label %ok8456 +panic8455: + call void @finch_panic(ptr @.str.6056, i64 209, ptr @.str.6057) unreachable -ok8097: +ok8456: %t91 = getelementptr inbounds %S.cimport.CStruct, ptr %t89, i32 0, i32 1 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 %t93 = load %S.cimport.CField, ptr %a12 @@ -73540,74 +78390,74 @@ entry: store i1 %p1, ptr %a2 %t3 = load i64, ptr %a1 %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then8098, label %endif8100 -then8098: + br i1 %t4, label %then8457, label %endif8459 +then8457: %t5 = load i1, ptr %a2 - br i1 %t5, label %then8101, label %endif8103 -then8101: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5592, i64 2, i64 0 }) + br i1 %t5, label %then8460, label %endif8462 +then8460: + %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6058, i64 2, i64 0 }) %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) ret %S.cimport.Mapped %t7 -endif8103: - %t8 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5593, i64 2, i64 0 }) +endif8462: + %t8 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6059, i64 2, i64 0 }) %t9 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t8) ret %S.cimport.Mapped %t9 -endif8100: +endif8459: %t10 = load i64, ptr %a1 %t11 = icmp eq i64 %t10, 2 - br i1 %t11, label %then8104, label %endif8106 -then8104: + br i1 %t11, label %then8463, label %endif8465 +then8463: %t12 = load i1, ptr %a2 - br i1 %t12, label %then8107, label %endif8109 -then8107: - %t13 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5594, i64 3, i64 0 }) + br i1 %t12, label %then8466, label %endif8468 +then8466: + %t13 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6060, i64 3, i64 0 }) %t14 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t13) ret %S.cimport.Mapped %t14 -endif8109: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5595, i64 3, i64 0 }) +endif8468: + %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6061, i64 3, i64 0 }) %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) ret %S.cimport.Mapped %t16 -endif8106: +endif8465: %t17 = load i64, ptr %a1 %t18 = icmp eq i64 %t17, 4 - br i1 %t18, label %then8110, label %endif8112 -then8110: + br i1 %t18, label %then8469, label %endif8471 +then8469: %t19 = load i1, ptr %a2 - br i1 %t19, label %then8113, label %endif8115 -then8113: - %t20 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5596, i64 3, i64 0 }) + br i1 %t19, label %then8472, label %endif8474 +then8472: + %t20 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6062, i64 3, i64 0 }) %t21 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t20) ret %S.cimport.Mapped %t21 -endif8115: - %t22 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5597, i64 3, i64 0 }) +endif8474: + %t22 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6063, i64 3, i64 0 }) %t23 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t22) ret %S.cimport.Mapped %t23 -endif8112: +endif8471: %t24 = load i64, ptr %a1 %t25 = icmp eq i64 %t24, 8 - br i1 %t25, label %then8116, label %endif8118 -then8116: + br i1 %t25, label %then8475, label %endif8477 +then8475: %t26 = load i1, ptr %a2 - br i1 %t26, label %then8119, label %endif8121 -then8119: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5598, i64 3, i64 0 }) + br i1 %t26, label %then8478, label %endif8480 +then8478: + %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6064, i64 3, i64 0 }) %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) ret %S.cimport.Mapped %t28 -endif8121: - %t29 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5599, i64 3, i64 0 }) +endif8480: + %t29 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6065, i64 3, i64 0 }) %t30 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t29) ret %S.cimport.Mapped %t30 -endif8118: +endif8477: %t31 = load i64, ptr %a1 %t32 = mul i64 %t31, 8 call void @finch_str_from_int(ptr %a33, i64 %t32) %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5600, i64 7, i64 0 }, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.6066, i64 7, i64 0 }, ptr %a36 store { ptr, i64, i64 } %t34, ptr %a37 call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) %t38 = load { ptr, i64, i64 }, ptr %a35 store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5601, i64 11, i64 0 }, ptr %a41 + store { ptr, i64, i64 } { ptr @.str.6067, i64 11, i64 0 }, ptr %a41 call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) %t42 = load { ptr, i64, i64 }, ptr %a39 %t43 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t42) @@ -73673,171 +78523,171 @@ entry: store i32 %t15, ptr %a16 %t17 = load i32, ptr %a16 %t18 = icmp eq i32 %t17, 2 - br i1 %t18, label %then8122, label %endif8124 -then8122: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }) + br i1 %t18, label %then8481, label %endif8483 +then8481: + %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6068, i64 4, i64 0 }) %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) ret %S.cimport.Mapped %t20 -endif8124: +endif8483: %t21 = load i32, ptr %a16 %t22 = icmp eq i32 %t21, 3 - br i1 %t22, label %then8125, label %endif8127 -then8125: - %t23 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5603, i64 4, i64 0 }) + br i1 %t22, label %then8484, label %endif8486 +then8484: + %t23 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6069, i64 4, i64 0 }) %t24 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t23) ret %S.cimport.Mapped %t24 -endif8127: +endif8486: %t25 = load i32, ptr %a16 %t26 = icmp eq i32 %t25, 13 - br label %logic.from8128 -logic.from8128: - br i1 %t26, label %logic.end8130, label %logic.rhs8129 -logic.rhs8129: + br label %logic.from8487 +logic.from8487: + br i1 %t26, label %logic.end8489, label %logic.rhs8488 +logic.rhs8488: %t27 = load i32, ptr %a16 %t28 = icmp eq i32 %t27, 4 - br label %logic.rend8131 -logic.rend8131: - br label %logic.end8130 -logic.end8130: - %t29 = phi i1 [ true, %logic.from8128 ], [ %t28, %logic.rend8131 ] - br i1 %t29, label %then8132, label %endif8134 -then8132: - %t30 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5604, i64 4, i64 0 }) + br label %logic.rend8490 +logic.rend8490: + br label %logic.end8489 +logic.end8489: + %t29 = phi i1 [ true, %logic.from8487 ], [ %t28, %logic.rend8490 ] + br i1 %t29, label %then8491, label %endif8493 +then8491: + %t30 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6070, i64 4, i64 0 }) %t31 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t30) ret %S.cimport.Mapped %t31 -endif8134: +endif8493: %t32 = load i32, ptr %a16 %t33 = icmp eq i32 %t32, 14 - br label %logic.from8135 -logic.from8135: - br i1 %t33, label %logic.end8137, label %logic.rhs8136 -logic.rhs8136: + br label %logic.from8494 +logic.from8494: + br i1 %t33, label %logic.end8496, label %logic.rhs8495 +logic.rhs8495: %t34 = load i32, ptr %a16 %t35 = icmp eq i32 %t34, 16 - br label %logic.rend8138 -logic.rend8138: - br label %logic.end8137 -logic.end8137: - %t36 = phi i1 [ true, %logic.from8135 ], [ %t35, %logic.rend8138 ] - br label %logic.from8139 -logic.from8139: - br i1 %t36, label %logic.end8141, label %logic.rhs8140 -logic.rhs8140: + br label %logic.rend8497 +logic.rend8497: + br label %logic.end8496 +logic.end8496: + %t36 = phi i1 [ true, %logic.from8494 ], [ %t35, %logic.rend8497 ] + br label %logic.from8498 +logic.from8498: + br i1 %t36, label %logic.end8500, label %logic.rhs8499 +logic.rhs8499: %t37 = load i32, ptr %a16 %t38 = icmp eq i32 %t37, 17 - br label %logic.rend8142 -logic.rend8142: - br label %logic.end8141 -logic.end8141: - %t39 = phi i1 [ true, %logic.from8139 ], [ %t38, %logic.rend8142 ] - br label %logic.from8143 -logic.from8143: - br i1 %t39, label %logic.end8145, label %logic.rhs8144 -logic.rhs8144: + br label %logic.rend8501 +logic.rend8501: + br label %logic.end8500 +logic.end8500: + %t39 = phi i1 [ true, %logic.from8498 ], [ %t38, %logic.rend8501 ] + br label %logic.from8502 +logic.from8502: + br i1 %t39, label %logic.end8504, label %logic.rhs8503 +logic.rhs8503: %t40 = load i32, ptr %a16 %t41 = icmp eq i32 %t40, 18 - br label %logic.rend8146 -logic.rend8146: - br label %logic.end8145 -logic.end8145: - %t42 = phi i1 [ true, %logic.from8143 ], [ %t41, %logic.rend8146 ] - br label %logic.from8147 -logic.from8147: - br i1 %t42, label %logic.end8149, label %logic.rhs8148 -logic.rhs8148: + br label %logic.rend8505 +logic.rend8505: + br label %logic.end8504 +logic.end8504: + %t42 = phi i1 [ true, %logic.from8502 ], [ %t41, %logic.rend8505 ] + br label %logic.from8506 +logic.from8506: + br i1 %t42, label %logic.end8508, label %logic.rhs8507 +logic.rhs8507: %t43 = load i32, ptr %a16 %t44 = icmp eq i32 %t43, 19 - br label %logic.rend8150 -logic.rend8150: - br label %logic.end8149 -logic.end8149: - %t45 = phi i1 [ true, %logic.from8147 ], [ %t44, %logic.rend8150 ] - br i1 %t45, label %then8151, label %endif8153 -then8151: + br label %logic.rend8509 +logic.rend8509: + br label %logic.end8508 +logic.end8508: + %t45 = phi i1 [ true, %logic.from8506 ], [ %t44, %logic.rend8509 ] + br i1 %t45, label %then8510, label %endif8512 +then8510: %t46 = load i64, ptr %a13 %t47 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t46, i1 true) ret %S.cimport.Mapped %t47 -endif8153: +endif8512: %t48 = load i32, ptr %a16 %t49 = icmp eq i32 %t48, 5 - br label %logic.from8154 -logic.from8154: - br i1 %t49, label %logic.end8156, label %logic.rhs8155 -logic.rhs8155: + br label %logic.from8513 +logic.from8513: + br i1 %t49, label %logic.end8515, label %logic.rhs8514 +logic.rhs8514: %t50 = load i32, ptr %a16 %t51 = icmp eq i32 %t50, 8 - br label %logic.rend8157 -logic.rend8157: - br label %logic.end8156 -logic.end8156: - %t52 = phi i1 [ true, %logic.from8154 ], [ %t51, %logic.rend8157 ] - br label %logic.from8158 -logic.from8158: - br i1 %t52, label %logic.end8160, label %logic.rhs8159 -logic.rhs8159: + br label %logic.rend8516 +logic.rend8516: + br label %logic.end8515 +logic.end8515: + %t52 = phi i1 [ true, %logic.from8513 ], [ %t51, %logic.rend8516 ] + br label %logic.from8517 +logic.from8517: + br i1 %t52, label %logic.end8519, label %logic.rhs8518 +logic.rhs8518: %t53 = load i32, ptr %a16 %t54 = icmp eq i32 %t53, 9 - br label %logic.rend8161 -logic.rend8161: - br label %logic.end8160 -logic.end8160: - %t55 = phi i1 [ true, %logic.from8158 ], [ %t54, %logic.rend8161 ] - br label %logic.from8162 -logic.from8162: - br i1 %t55, label %logic.end8164, label %logic.rhs8163 -logic.rhs8163: + br label %logic.rend8520 +logic.rend8520: + br label %logic.end8519 +logic.end8519: + %t55 = phi i1 [ true, %logic.from8517 ], [ %t54, %logic.rend8520 ] + br label %logic.from8521 +logic.from8521: + br i1 %t55, label %logic.end8523, label %logic.rhs8522 +logic.rhs8522: %t56 = load i32, ptr %a16 %t57 = icmp eq i32 %t56, 10 - br label %logic.rend8165 -logic.rend8165: - br label %logic.end8164 -logic.end8164: - %t58 = phi i1 [ true, %logic.from8162 ], [ %t57, %logic.rend8165 ] - br label %logic.from8166 -logic.from8166: - br i1 %t58, label %logic.end8168, label %logic.rhs8167 -logic.rhs8167: + br label %logic.rend8524 +logic.rend8524: + br label %logic.end8523 +logic.end8523: + %t58 = phi i1 [ true, %logic.from8521 ], [ %t57, %logic.rend8524 ] + br label %logic.from8525 +logic.from8525: + br i1 %t58, label %logic.end8527, label %logic.rhs8526 +logic.rhs8526: %t59 = load i32, ptr %a16 %t60 = icmp eq i32 %t59, 11 - br label %logic.rend8169 -logic.rend8169: - br label %logic.end8168 -logic.end8168: - %t61 = phi i1 [ true, %logic.from8166 ], [ %t60, %logic.rend8169 ] - br i1 %t61, label %then8170, label %endif8172 -then8170: + br label %logic.rend8528 +logic.rend8528: + br label %logic.end8527 +logic.end8527: + %t61 = phi i1 [ true, %logic.from8525 ], [ %t60, %logic.rend8528 ] + br i1 %t61, label %then8529, label %endif8531 +then8529: %t62 = load i64, ptr %a13 %t63 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t62, i1 false) ret %S.cimport.Mapped %t63 -endif8172: +endif8531: %t64 = load i32, ptr %a16 %t65 = icmp eq i32 %t64, 106 - br i1 %t65, label %then8173, label %endif8175 -then8173: + br i1 %t65, label %then8532, label %endif8534 +then8532: %t66 = load i64, ptr %a13 %t67 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t66, i1 true) ret %S.cimport.Mapped %t67 -endif8175: +endif8534: %t68 = load i32, ptr %a16 %t69 = icmp eq i32 %t68, 21 - br i1 %t69, label %then8176, label %endif8178 -then8176: - %t70 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5605, i64 3, i64 0 }) + br i1 %t69, label %then8535, label %endif8537 +then8535: + %t70 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6071, i64 3, i64 0 }) %t71 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t70) ret %S.cimport.Mapped %t71 -endif8178: +endif8537: %t72 = load i32, ptr %a16 %t73 = icmp eq i32 %t72, 22 - br i1 %t73, label %then8179, label %endif8181 -then8179: - %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }) + br i1 %t73, label %then8538, label %endif8540 +then8538: + %t74 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6072, i64 5, i64 0 }) %t75 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t74) ret %S.cimport.Mapped %t75 -endif8181: +endif8540: %t76 = load i32, ptr %a16 %t77 = icmp eq i32 %t76, 101 - br i1 %t77, label %then8182, label %endif8184 -then8182: + br i1 %t77, label %then8541, label %endif8543 +then8541: %t80 = load %S.C.CXType, ptr %a9 store %S.C.CXType %t80, ptr %a81 call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a79, ptr byval(%S.C.CXType) align 8 %a81) @@ -73849,86 +78699,86 @@ then8182: %t86 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0 %t87 = load i32, ptr %t86 %t88 = icmp eq i32 %t87, 13 - br label %logic.from8185 -logic.from8185: - br i1 %t88, label %logic.end8187, label %logic.rhs8186 -logic.rhs8186: + br label %logic.from8544 +logic.from8544: + br i1 %t88, label %logic.end8546, label %logic.rhs8545 +logic.rhs8545: %t89 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0 %t90 = load i32, ptr %t89 %t91 = icmp eq i32 %t90, 4 - br label %logic.rend8188 -logic.rend8188: - br label %logic.end8187 -logic.end8187: - %t92 = phi i1 [ true, %logic.from8185 ], [ %t91, %logic.rend8188 ] - br label %logic.from8189 -logic.from8189: - br i1 %t92, label %logic.rhs8190, label %logic.end8191 -logic.rhs8190: + br label %logic.rend8547 +logic.rend8547: + br label %logic.end8546 +logic.end8546: + %t92 = phi i1 [ true, %logic.from8544 ], [ %t91, %logic.rend8547 ] + br label %logic.from8548 +logic.from8548: + br i1 %t92, label %logic.rhs8549, label %logic.end8550 +logic.rhs8549: %t93 = load i1, ptr %a3 - br label %logic.rend8192 -logic.rend8192: - br label %logic.end8191 -logic.end8191: - %t94 = phi i1 [ false, %logic.from8189 ], [ %t93, %logic.rend8192 ] - br i1 %t94, label %then8193, label %endif8195 -then8193: + br label %logic.rend8551 +logic.rend8551: + br label %logic.end8550 +logic.end8550: + %t94 = phi i1 [ false, %logic.from8548 ], [ %t93, %logic.rend8551 ] + br i1 %t94, label %then8552, label %endif8554 +then8552: %t95 = load i1, ptr %a4 %t96 = xor i1 %t95, true - br label %logic.from8196 -logic.from8196: - br i1 %t96, label %logic.end8198, label %logic.rhs8197 -logic.rhs8197: + br label %logic.from8555 +logic.from8555: + br i1 %t96, label %logic.end8557, label %logic.rhs8556 +logic.rhs8556: %t97 = load %S.C.CXType, ptr %a85 store %S.C.CXType %t97, ptr %a98 %t99 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a98) %t100 = icmp ne i32 %t99, 0 - br label %logic.rend8199 -logic.rend8199: - br label %logic.end8198 -logic.end8198: - %t101 = phi i1 [ true, %logic.from8196 ], [ %t100, %logic.rend8199 ] - br i1 %t101, label %then8200, label %endif8202 -then8200: - %t102 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5607, i64 3, i64 0 }) + br label %logic.rend8558 +logic.rend8558: + br label %logic.end8557 +logic.end8557: + %t101 = phi i1 [ true, %logic.from8555 ], [ %t100, %logic.rend8558 ] + br i1 %t101, label %then8559, label %endif8561 +then8559: + %t102 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6073, i64 3, i64 0 }) %t103 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t102) ret %S.cimport.Mapped %t103 -endif8202: - br label %endif8195 -endif8195: +endif8561: + br label %endif8554 +endif8554: %t104 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0 %t105 = load i32, ptr %t104 %t106 = icmp eq i32 %t105, 2 - br label %logic.from8203 -logic.from8203: - br i1 %t106, label %logic.end8205, label %logic.rhs8204 -logic.rhs8204: + br label %logic.from8562 +logic.from8562: + br i1 %t106, label %logic.end8564, label %logic.rhs8563 +logic.rhs8563: %t107 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0 %t108 = load i32, ptr %t107 %t109 = icmp eq i32 %t108, 111 - br label %logic.rend8206 -logic.rend8206: - br label %logic.end8205 -logic.end8205: - %t110 = phi i1 [ true, %logic.from8203 ], [ %t109, %logic.rend8206 ] - br label %logic.from8207 -logic.from8207: - br i1 %t110, label %logic.end8209, label %logic.rhs8208 -logic.rhs8208: + br label %logic.rend8565 +logic.rend8565: + br label %logic.end8564 +logic.end8564: + %t110 = phi i1 [ true, %logic.from8562 ], [ %t109, %logic.rend8565 ] + br label %logic.from8566 +logic.from8566: + br i1 %t110, label %logic.end8568, label %logic.rhs8567 +logic.rhs8567: %t111 = getelementptr inbounds %S.C.CXType, ptr %a85, i32 0, i32 0 %t112 = load i32, ptr %t111 %t113 = icmp eq i32 %t112, 110 - br label %logic.rend8210 -logic.rend8210: - br label %logic.end8209 -logic.end8209: - %t114 = phi i1 [ true, %logic.from8207 ], [ %t113, %logic.rend8210 ] - br i1 %t114, label %then8211, label %endif8213 -then8211: - %t115 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5608, i64 3, i64 0 }) + br label %logic.rend8569 +logic.rend8569: + br label %logic.end8568 +logic.end8568: + %t114 = phi i1 [ true, %logic.from8566 ], [ %t113, %logic.rend8569 ] + br i1 %t114, label %then8570, label %endif8572 +then8570: + %t115 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6074, i64 3, i64 0 }) %t116 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t115) ret %S.cimport.Mapped %t116 -endif8213: +endif8572: %t117 = load ptr, ptr %a1 %t118 = load %S.C.CXType, ptr %a85 %t119 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t117, %S.C.CXType %t118, i1 false, i1 false) @@ -73936,54 +78786,54 @@ endif8213: %t121 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 2 %t122 = load i1, ptr %t121 %t123 = xor i1 %t122, true - br label %logic.from8214 -logic.from8214: - br i1 %t123, label %logic.end8216, label %logic.rhs8215 -logic.rhs8215: + br label %logic.from8573 +logic.from8573: + br i1 %t123, label %logic.end8575, label %logic.rhs8574 +logic.rhs8574: %t124 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0 %t125 = getelementptr inbounds %S.ast.Type, ptr %t124, i32 0, i32 0 %t126 = load { ptr, i64, i64 }, ptr %t125 store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.5609, i64 4, i64 0 }, ptr %a128 + store { ptr, i64, i64 } { ptr @.str.6075, i64 4, i64 0 }, ptr %a128 %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) %t130 = icmp ne i32 %t129, 0 - br label %logic.rend8217 -logic.rend8217: - br label %logic.end8216 -logic.end8216: - %t131 = phi i1 [ true, %logic.from8214 ], [ %t130, %logic.rend8217 ] - br label %logic.from8218 -logic.from8218: - br i1 %t131, label %logic.end8220, label %logic.rhs8219 -logic.rhs8219: + br label %logic.rend8576 +logic.rend8576: + br label %logic.end8575 +logic.end8575: + %t131 = phi i1 [ true, %logic.from8573 ], [ %t130, %logic.rend8576 ] + br label %logic.from8577 +logic.from8577: + br i1 %t131, label %logic.end8579, label %logic.rhs8578 +logic.rhs8578: %t132 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0 %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i32 0, i32 0 %t134 = load { ptr, i64, i64 }, ptr %t133 store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.5610, i64 5, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6076, i64 5, i64 0 }, ptr %a136 %t137 = call i32 @finch_str_eq(ptr %a135, ptr %a136) %t138 = icmp ne i32 %t137, 0 - br label %logic.rend8221 -logic.rend8221: - br label %logic.end8220 -logic.end8220: - %t139 = phi i1 [ true, %logic.from8218 ], [ %t138, %logic.rend8221 ] - br i1 %t139, label %then8222, label %endif8224 -then8222: - %t140 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.5611, i64 3, i64 0 }) + br label %logic.rend8580 +logic.rend8580: + br label %logic.end8579 +logic.end8579: + %t139 = phi i1 [ true, %logic.from8577 ], [ %t138, %logic.rend8580 ] + br i1 %t139, label %then8581, label %endif8583 +then8581: + %t140 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6077, i64 3, i64 0 }) %t141 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t140) ret %S.cimport.Mapped %t141 -endif8224: +endif8583: %t142 = getelementptr inbounds %S.cimport.Mapped, ptr %a120, i32 0, i32 0 %t143 = load %S.ast.Type, ptr %t142 %t144 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t143) %t145 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t144) ret %S.cimport.Mapped %t145 -endif8184: +endif8543: %t146 = load i32, ptr %a16 %t147 = icmp eq i32 %t146, 105 - br i1 %t147, label %then8225, label %endif8227 -then8225: + br i1 %t147, label %then8584, label %endif8586 +then8584: %t149 = load %S.C.CXType, ptr %a9 store %S.C.CXType %t149, ptr %a150 call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a148, ptr byval(%S.C.CXType) align 8 %a150) @@ -73991,11 +78841,11 @@ then8225: store %S.C.CXCursor %t151, ptr %a152 %t153 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a152) %t154 = icmp eq i32 %t153, 3 - br i1 %t154, label %then8228, label %endif8230 -then8228: - %t155 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5612, i64 23, i64 0 }) + br i1 %t154, label %then8587, label %endif8589 +then8587: + %t155 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6078, i64 23, i64 0 }) ret %S.cimport.Mapped %t155 -endif8230: +endif8589: %t156 = load ptr, ptr %a1 %t157 = load %S.C.CXType, ptr %a9 %t158 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t156, %S.C.CXType %t157) @@ -74003,25 +78853,25 @@ endif8230: %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 %t161 = load i64, ptr %t160 %t162 = icmp eq i64 %t161, 0 - br i1 %t162, label %then8231, label %endif8233 -then8231: - %t163 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5613, i64 36, i64 0 }) + br i1 %t162, label %then8590, label %endif8592 +then8590: + %t163 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6079, i64 36, i64 0 }) ret %S.cimport.Mapped %t163 -endif8233: - %t164 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5614, i64 5, i64 0 }, 0 +endif8592: + %t164 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6080, i64 5, i64 0 }, 0 %t165 = load { ptr, i64, i64 }, ptr %a159 store { ptr, i64, i64 } %t165, ptr %a166 call void @finch_str_copy(ptr %a167, ptr %a166) %t168 = load { ptr, i64, i64 }, ptr %a167 %t169 = insertvalue %S.ast.Type %t164, { ptr, i64, i64 } %t168, 2 - %t170 = insertvalue %S.ast.Type %t169, { ptr, i64, i64 } { ptr @.str.5615, i64 1, i64 0 }, 3 + %t170 = insertvalue %S.ast.Type %t169, { ptr, i64, i64 } { ptr @.str.6081, i64 1, i64 0 }, 3 %t171 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t170) ret %S.cimport.Mapped %t171 -endif8227: +endif8586: %t172 = load i32, ptr %a16 %t173 = icmp eq i32 %t172, 112 - br i1 %t173, label %then8234, label %endif8236 -then8234: + br i1 %t173, label %then8593, label %endif8595 +then8593: %t174 = load ptr, ptr %a1 %t176 = load %S.C.CXType, ptr %a9 store %S.C.CXType %t176, ptr %a177 @@ -74032,11 +78882,11 @@ then8234: %t181 = getelementptr inbounds %S.cimport.Mapped, ptr %a180, i32 0, i32 2 %t182 = load i1, ptr %t181 %t183 = xor i1 %t182, true - br i1 %t183, label %then8237, label %endif8239 -then8237: + br i1 %t183, label %then8596, label %endif8598 +then8596: %t184 = load %S.cimport.Mapped, ptr %a180 ret %S.cimport.Mapped %t184 -endif8239: +endif8598: %t185 = getelementptr inbounds %S.cimport.Mapped, ptr %a180, i32 0, i32 0 %t186 = load %S.ast.Type, ptr %t185 %t187 = load %S.C.CXType, ptr %a9 @@ -74045,26 +78895,26 @@ endif8239: %t190 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t186, i64 %t189) %t191 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t190) ret %S.cimport.Mapped %t191 -endif8236: +endif8595: %t192 = load i32, ptr %a16 %t193 = icmp eq i32 %t192, 23 - br i1 %t193, label %then8240, label %endif8242 -then8240: - %t194 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.5616, i64 16, i64 0 }) + br i1 %t193, label %then8599, label %endif8601 +then8599: + %t194 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6082, i64 16, i64 0 }) ret %S.cimport.Mapped %t194 -endif8242: +endif8601: %t195 = load %S.C.CXType, ptr %a9 store %S.C.CXType %t195, ptr %a196 %t197 = call { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8 %a196) store { i64, i64 } %t197, ptr %a198 %t199 = load %S.C.CXString, ptr %a198 %t200 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t199) - store { ptr, i64, i64 } { ptr @.str.5617, i64 17, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.6083, i64 17, i64 0 }, ptr %a202 store { ptr, i64, i64 } %t200, ptr %a203 call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) %t204 = load { ptr, i64, i64 }, ptr %a201 store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5618, i64 1, i64 0 }, ptr %a207 + store { ptr, i64, i64 } { ptr @.str.6084, i64 1, i64 0 }, ptr %a207 call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) %t208 = load { ptr, i64, i64 }, ptr %a205 %t209 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t208) @@ -74106,93 +78956,93 @@ entry: store i64 10, ptr %a7 %t8 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5620, i64 2, i64 0 }, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6086, i64 2, i64 0 }, ptr %a11 %t12 = call i32 @finch_str_starts(ptr %a9, ptr %a11) %t13 = icmp ne i32 %t12, 0 - br label %logic.from8243 -logic.from8243: - br i1 %t13, label %logic.end8245, label %logic.rhs8244 -logic.rhs8244: + br label %logic.from8602 +logic.from8602: + br i1 %t13, label %logic.end8604, label %logic.rhs8603 +logic.rhs8603: %t14 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.5622, i64 2, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6088, i64 2, i64 0 }, ptr %a17 %t18 = call i32 @finch_str_starts(ptr %a15, ptr %a17) %t19 = icmp ne i32 %t18, 0 - br label %logic.rend8246 -logic.rend8246: - br label %logic.end8245 -logic.end8245: - %t20 = phi i1 [ true, %logic.from8243 ], [ %t19, %logic.rend8246 ] - br i1 %t20, label %then8247, label %else8248 -then8247: + br label %logic.rend8605 +logic.rend8605: + br label %logic.end8604 +logic.end8604: + %t20 = phi i1 [ true, %logic.from8602 ], [ %t19, %logic.rend8605 ] + br i1 %t20, label %then8606, label %else8607 +then8606: store i64 16, ptr %a7 %t21 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t21, ptr %a22 %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t25 = load i64, ptr %t24 - call void @finch_str_sub(ptr %a23, ptr %a22, i64 2, i64 %t25, ptr @.str.5623, i64 327) + call void @finch_str_sub(ptr %a23, ptr %a22, i64 2, i64 %t25, ptr @.str.6089, i64 327) %t26 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t26, ptr %a6 - br label %endif8249 -else8248: + br label %endif8608 +else8607: %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t28 = load i64, ptr %t27 %t29 = icmp sgt i64 %t28, 1 - br label %logic.from8250 -logic.from8250: - br i1 %t29, label %logic.rhs8251, label %logic.end8252 -logic.rhs8251: + br label %logic.from8609 +logic.from8609: + br i1 %t29, label %logic.rhs8610, label %logic.end8611 +logic.rhs8610: %t30 = load { ptr, i64, i64 }, ptr %a6 %t31 = extractvalue { ptr, i64, i64 } %t30, 1 %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range8253, label %inrange8254 -range8253: - call void @finch_panic_index(ptr @.str.5624, i64 328, i64 0, i64 %t31) + br i1 %t32, label %range8612, label %inrange8613 +range8612: + call void @finch_panic_index(ptr @.str.6090, i64 328, i64 0, i64 %t31) unreachable -inrange8254: +inrange8613: %t33 = extractvalue { ptr, i64, i64 } %t30, 0 %t34 = getelementptr inbounds i8, ptr %t33, i64 0 %t35 = load i8, ptr %t34 %t36 = icmp eq i8 %t35, 48 - br label %logic.rend8255 -logic.rend8255: - br label %logic.end8252 -logic.end8252: - %t37 = phi i1 [ false, %logic.from8250 ], [ %t36, %logic.rend8255 ] - br i1 %t37, label %then8256, label %endif8258 -then8256: + br label %logic.rend8614 +logic.rend8614: + br label %logic.end8611 +logic.end8611: + %t37 = phi i1 [ false, %logic.from8609 ], [ %t36, %logic.rend8614 ] + br i1 %t37, label %then8615, label %endif8617 +then8615: store i64 8, ptr %a7 %t38 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t38, ptr %a39 %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t42 = load i64, ptr %t41 - call void @finch_str_sub(ptr %a40, ptr %a39, i64 1, i64 %t42, ptr @.str.5625, i64 330) + call void @finch_str_sub(ptr %a40, ptr %a39, i64 1, i64 %t42, ptr @.str.6091, i64 330) %t43 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t43, ptr %a6 - br label %endif8258 -endif8258: - br label %endif8249 -endif8249: + br label %endif8617 +endif8617: + br label %endif8608 +endif8608: store i64 0, ptr %a44 store i1 false, ptr %a45 store i64 0, ptr %a46 - br label %while.cond8259 -while.cond8259: + br label %while.cond8618 +while.cond8618: %t47 = load i64, ptr %a46 %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t49 = load i64, ptr %t48 %t50 = icmp slt i64 %t47, %t49 - br i1 %t50, label %while.body8260, label %while.end8261 -while.body8260: + br i1 %t50, label %while.body8619, label %while.end8620 +while.body8619: %t51 = load i64, ptr %a46 %t52 = load { ptr, i64, i64 }, ptr %a6 %t53 = extractvalue { ptr, i64, i64 } %t52, 1 %t54 = icmp uge i64 %t51, %t53 - br i1 %t54, label %range8262, label %inrange8263 -range8262: - call void @finch_panic_index(ptr @.str.5626, i64 336, i64 %t51, i64 %t53) + br i1 %t54, label %range8621, label %inrange8622 +range8621: + call void @finch_panic_index(ptr @.str.6092, i64 336, i64 %t51, i64 %t53) unreachable -inrange8263: +inrange8622: %t55 = extractvalue { ptr, i64, i64 } %t52, 0 %t56 = getelementptr inbounds i8, ptr %t55, i64 %t51 %t57 = load i8, ptr %t56 @@ -74200,83 +79050,83 @@ inrange8263: store i64 99, ptr %a59 %t60 = load i8, ptr %a58 %t61 = icmp uge i8 %t60, 48 - br label %logic.from8264 -logic.from8264: - br i1 %t61, label %logic.rhs8265, label %logic.end8266 -logic.rhs8265: + br label %logic.from8623 +logic.from8623: + br i1 %t61, label %logic.rhs8624, label %logic.end8625 +logic.rhs8624: %t62 = load i8, ptr %a58 %t63 = icmp ule i8 %t62, 57 - br label %logic.rend8267 -logic.rend8267: - br label %logic.end8266 -logic.end8266: - %t64 = phi i1 [ false, %logic.from8264 ], [ %t63, %logic.rend8267 ] - br i1 %t64, label %then8268, label %else8269 -then8268: + br label %logic.rend8626 +logic.rend8626: + br label %logic.end8625 +logic.end8625: + %t64 = phi i1 [ false, %logic.from8623 ], [ %t63, %logic.rend8626 ] + br i1 %t64, label %then8627, label %else8628 +then8627: %t65 = load i8, ptr %a58 %t66 = zext i8 %t65 to i64 %t67 = zext i8 48 to i64 %t68 = sub i64 %t66, %t67 store i64 %t68, ptr %a59 - br label %endif8270 -else8269: + br label %endif8629 +else8628: %t69 = load i8, ptr %a58 %t70 = icmp uge i8 %t69, 97 - br label %logic.from8271 -logic.from8271: - br i1 %t70, label %logic.rhs8272, label %logic.end8273 -logic.rhs8272: + br label %logic.from8630 +logic.from8630: + br i1 %t70, label %logic.rhs8631, label %logic.end8632 +logic.rhs8631: %t71 = load i8, ptr %a58 %t72 = icmp ule i8 %t71, 102 - br label %logic.rend8274 -logic.rend8274: - br label %logic.end8273 -logic.end8273: - %t73 = phi i1 [ false, %logic.from8271 ], [ %t72, %logic.rend8274 ] - br i1 %t73, label %then8275, label %else8276 -then8275: + br label %logic.rend8633 +logic.rend8633: + br label %logic.end8632 +logic.end8632: + %t73 = phi i1 [ false, %logic.from8630 ], [ %t72, %logic.rend8633 ] + br i1 %t73, label %then8634, label %else8635 +then8634: %t74 = load i8, ptr %a58 %t75 = zext i8 %t74 to i64 %t76 = zext i8 97 to i64 %t77 = sub i64 %t75, %t76 %t78 = add i64 %t77, 10 store i64 %t78, ptr %a59 - br label %endif8277 -else8276: + br label %endif8636 +else8635: %t79 = load i8, ptr %a58 %t80 = icmp uge i8 %t79, 65 - br label %logic.from8278 -logic.from8278: - br i1 %t80, label %logic.rhs8279, label %logic.end8280 -logic.rhs8279: + br label %logic.from8637 +logic.from8637: + br i1 %t80, label %logic.rhs8638, label %logic.end8639 +logic.rhs8638: %t81 = load i8, ptr %a58 %t82 = icmp ule i8 %t81, 70 - br label %logic.rend8281 -logic.rend8281: - br label %logic.end8280 -logic.end8280: - %t83 = phi i1 [ false, %logic.from8278 ], [ %t82, %logic.rend8281 ] - br i1 %t83, label %then8282, label %endif8284 -then8282: + br label %logic.rend8640 +logic.rend8640: + br label %logic.end8639 +logic.end8639: + %t83 = phi i1 [ false, %logic.from8637 ], [ %t82, %logic.rend8640 ] + br i1 %t83, label %then8641, label %endif8643 +then8641: %t84 = load i8, ptr %a58 %t85 = zext i8 %t84 to i64 %t86 = zext i8 65 to i64 %t87 = sub i64 %t85, %t86 %t88 = add i64 %t87, 10 store i64 %t88, ptr %a59 - br label %endif8284 -endif8284: - br label %endif8277 -endif8277: - br label %endif8270 -endif8270: + br label %endif8643 +endif8643: + br label %endif8636 +endif8636: + br label %endif8629 +endif8629: %t89 = load i64, ptr %a59 %t90 = load i64, ptr %a7 %t91 = icmp sge i64 %t89, %t90 - br i1 %t91, label %then8285, label %endif8287 -then8285: - br label %while.end8261 -endif8287: + br i1 %t91, label %then8644, label %endif8646 +then8644: + br label %while.end8620 +endif8646: %t92 = load i64, ptr %a44 %t93 = load i64, ptr %a7 %t94 = mul i64 %t92, %t93 @@ -74287,26 +79137,26 @@ endif8287: %t97 = load i64, ptr %a46 %t98 = add i64 %t97, 1 store i64 %t98, ptr %a46 - br label %while.cond8259 -while.end8261: - br label %while.cond8288 -while.cond8288: + br label %while.cond8618 +while.end8620: + br label %while.cond8647 +while.cond8647: %t99 = load i64, ptr %a46 %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t101 = load i64, ptr %t100 %t102 = icmp slt i64 %t99, %t101 - br i1 %t102, label %while.body8289, label %while.end8290 -while.body8289: - store { ptr, i64, i64 } { ptr @.str.5627, i64 4, i64 0 }, ptr %a103 + br i1 %t102, label %while.body8648, label %while.end8649 +while.body8648: + store { ptr, i64, i64 } { ptr @.str.6093, i64 4, i64 0 }, ptr %a103 %t105 = load i64, ptr %a46 %t106 = load { ptr, i64, i64 }, ptr %a6 %t107 = extractvalue { ptr, i64, i64 } %t106, 1 %t108 = icmp uge i64 %t105, %t107 - br i1 %t108, label %range8291, label %inrange8292 -range8291: - call void @finch_panic_index(ptr @.str.5629, i64 354, i64 %t105, i64 %t107) + br i1 %t108, label %range8650, label %inrange8651 +range8650: + call void @finch_panic_index(ptr @.str.6095, i64 354, i64 %t105, i64 %t107) unreachable -inrange8292: +inrange8651: %t109 = extractvalue { ptr, i64, i64 } %t106, 0 %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 %t111 = load i8, ptr %t110 @@ -74316,32 +79166,32 @@ inrange8292: %t115 = call i64 @finch_str_find(ptr %a103, ptr %a114) %t116 = icmp sge i64 %t115, 0 %t117 = xor i1 %t116, true - br i1 %t117, label %then8293, label %endif8295 -then8293: + br i1 %t117, label %then8652, label %endif8654 +then8652: ret %S.cimport.Number zeroinitializer -endif8295: +endif8654: %t118 = load i64, ptr %a46 %t119 = add i64 %t118, 1 store i64 %t119, ptr %a46 - br label %while.cond8288 -while.end8290: + br label %while.cond8647 +while.end8649: %t120 = load i1, ptr %a45 %t121 = xor i1 %t120, true - br label %logic.from8296 -logic.from8296: - br i1 %t121, label %logic.rhs8297, label %logic.end8298 -logic.rhs8297: + br label %logic.from8655 +logic.from8655: + br i1 %t121, label %logic.rhs8656, label %logic.end8657 +logic.rhs8656: %t122 = load i64, ptr %a7 %t123 = icmp ne i64 %t122, 8 - br label %logic.rend8299 -logic.rend8299: - br label %logic.end8298 -logic.end8298: - %t124 = phi i1 [ false, %logic.from8296 ], [ %t123, %logic.rend8299 ] - br i1 %t124, label %then8300, label %endif8302 -then8300: + br label %logic.rend8658 +logic.rend8658: + br label %logic.end8657 +logic.end8657: + %t124 = phi i1 [ false, %logic.from8655 ], [ %t123, %logic.rend8658 ] + br i1 %t124, label %then8659, label %endif8661 +then8659: ret %S.cimport.Number zeroinitializer -endif8302: +endif8661: %t125 = load i64, ptr %a44 %t126 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t125, 1 %t127 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t126, 0 @@ -74422,11 +79272,11 @@ entry: store i32 0, ptr %a4 %t5 = load ptr, ptr %a1 %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic8303, label %ok8304 -panic8303: - call void @finch_panic(ptr @.str.5630, i64 369, ptr @.str.5631) + br i1 %t6, label %panic8662, label %ok8663 +panic8662: + call void @finch_panic(ptr @.str.6096, i64 369, ptr @.str.6097) unreachable -ok8304: +ok8663: %t7 = getelementptr inbounds %S.cimport.Importer, ptr %t5, i32 0, i32 1 %t8 = load ptr, ptr %t7 %t10 = load %S.C.CXCursor, ptr %a2 @@ -74439,12 +79289,12 @@ ok8304: %t15 = load i32, ptr %a4 %t16 = zext i32 %t15 to i64 store i64 1, ptr %a17 - br label %for.cond8305 -for.cond8305: + br label %for.cond8664 +for.cond8664: %t18 = load i64, ptr %a17 %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body8306, label %for.end8308 -for.body8306: + br i1 %t19, label %for.body8665, label %for.end8667 +for.body8665: %t20 = load i64, ptr %a17 %t21 = load ptr, ptr %a3 %t22 = getelementptr inbounds %S.C.CXToken, ptr %t21, i64 %t20 @@ -74452,18 +79302,18 @@ for.body8306: store %S.C.CXToken %t23, ptr %a24 %t25 = call i32 @clang_getTokenKind(ptr byval(%S.C.CXToken) align 8 %a24) %t26 = icmp eq i32 %t25, 4 - br i1 %t26, label %then8309, label %endif8311 -then8309: - br label %for.step8307 -endif8311: + br i1 %t26, label %then8668, label %endif8670 +then8668: + br label %for.step8666 +endif8670: %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t28 = load ptr, ptr %a1 %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic8312, label %ok8313 -panic8312: - call void @finch_panic(ptr @.str.5632, i64 375, ptr @.str.5633) + br i1 %t29, label %panic8671, label %ok8672 +panic8671: + call void @finch_panic(ptr @.str.6098, i64 375, ptr @.str.6099) unreachable -ok8313: +ok8672: %t30 = getelementptr inbounds %S.cimport.Importer, ptr %t28, i32 0, i32 1 %t31 = load ptr, ptr %t30 %t32 = load i64, ptr %a17 @@ -74482,91 +79332,91 @@ ok8313: %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 store { ptr, i64, i64 } %t40, ptr %t44 store i64 %t42, ptr %t27 - br label %for.step8307 -for.step8307: + br label %for.step8666 +for.step8666: %t45 = load i64, ptr %a17 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a17 - br label %for.cond8305 -for.end8308: + br label %for.cond8664 +for.end8667: %t47 = load ptr, ptr %a1 %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic8314, label %ok8315 -panic8314: - call void @finch_panic(ptr @.str.5634, i64 377, ptr @.str.5635) + br i1 %t48, label %panic8673, label %ok8674 +panic8673: + call void @finch_panic(ptr @.str.6100, i64 377, ptr @.str.6101) unreachable -ok8315: +ok8674: %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 1 %t50 = load ptr, ptr %t49 %t51 = load ptr, ptr %a3 %t52 = load i32, ptr %a4 call void @clang_disposeTokens(ptr %t50, ptr %t51, i32 %t52) - br label %while.cond8316 -while.cond8316: + br label %while.cond8675 +while.cond8675: %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t54 = load i64, ptr %t53 %t55 = icmp sge i64 %t54, 2 - br label %logic.from8319 -logic.from8319: - br i1 %t55, label %logic.rhs8320, label %logic.end8321 -logic.rhs8320: + br label %logic.from8678 +logic.from8678: + br i1 %t55, label %logic.rhs8679, label %logic.end8680 +logic.rhs8679: %t56 = load { ptr, i64, i64 }, ptr %a14 %t57 = extractvalue { ptr, i64, i64 } %t56, 1 %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range8322, label %inrange8323 -range8322: - call void @finch_panic_index(ptr @.str.5636, i64 379, i64 0, i64 %t57) + br i1 %t58, label %range8681, label %inrange8682 +range8681: + call void @finch_panic_index(ptr @.str.6102, i64 379, i64 0, i64 %t57) unreachable -inrange8323: +inrange8682: %t59 = extractvalue { ptr, i64, i64 } %t56, 0 %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 0 %t61 = load { ptr, i64, i64 }, ptr %t60 store { ptr, i64, i64 } %t61, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.5637, i64 1, i64 0 }, ptr %a63 + store { ptr, i64, i64 } { ptr @.str.6103, i64 1, i64 0 }, ptr %a63 %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) %t65 = icmp ne i32 %t64, 0 - br label %logic.rend8324 -logic.rend8324: - br label %logic.end8321 -logic.end8321: - %t66 = phi i1 [ false, %logic.from8319 ], [ %t65, %logic.rend8324 ] - br label %logic.from8325 -logic.from8325: - br i1 %t66, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: + br label %logic.rend8683 +logic.rend8683: + br label %logic.end8680 +logic.end8680: + %t66 = phi i1 [ false, %logic.from8678 ], [ %t65, %logic.rend8683 ] + br label %logic.from8684 +logic.from8684: + br i1 %t66, label %logic.rhs8685, label %logic.end8686 +logic.rhs8685: %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t68 = load i64, ptr %t67 %t69 = sub i64 %t68, 1 %t70 = load { ptr, i64, i64 }, ptr %a14 %t71 = extractvalue { ptr, i64, i64 } %t70, 1 %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5638, i64 379, i64 %t69, i64 %t71) + br i1 %t72, label %range8687, label %inrange8688 +range8687: + call void @finch_panic_index(ptr @.str.6104, i64 379, i64 %t69, i64 %t71) unreachable -inrange8329: +inrange8688: %t73 = extractvalue { ptr, i64, i64 } %t70, 0 %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i64 %t69 %t75 = load { ptr, i64, i64 }, ptr %t74 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.5639, i64 1, i64 0 }, ptr %a77 + store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a77 %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) %t79 = icmp ne i32 %t78, 0 - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t80 = phi i1 [ false, %logic.from8325 ], [ %t79, %logic.rend8330 ] - br i1 %t80, label %while.body8317, label %while.end8318 -while.body8317: + br label %logic.rend8689 +logic.rend8689: + br label %logic.end8686 +logic.end8686: + %t80 = phi i1 [ false, %logic.from8684 ], [ %t79, %logic.rend8689 ] + br i1 %t80, label %while.body8676, label %while.end8677 +while.body8676: %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t82 = load i64, ptr %t81 %t83 = icmp uge i64 0, %t82 - br i1 %t83, label %range8331, label %inrange8332 -range8331: - call void @finch_panic_index(ptr @.str.5640, i64 380, i64 0, i64 %t82) + br i1 %t83, label %range8690, label %inrange8691 +range8690: + call void @finch_panic_index(ptr @.str.6106, i64 380, i64 0, i64 %t82) unreachable -inrange8332: +inrange8691: %t84 = load ptr, ptr %a14 %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i64 0 %t86 = load { ptr, i64, i64 }, ptr %t85 @@ -74574,78 +79424,78 @@ inrange8332: %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t88 = load i64, ptr %t87 %t89 = icmp eq i64 %t88, 0 - br i1 %t89, label %panic8333, label %ok8334 -panic8333: - call void @finch_panic(ptr @.str.5641, i64 381, ptr @.str.5642) + br i1 %t89, label %panic8692, label %ok8693 +panic8692: + call void @finch_panic(ptr @.str.6107, i64 381, ptr @.str.6108) unreachable -ok8334: +ok8693: %t90 = sub i64 %t88, 1 %t91 = load ptr, ptr %a14 %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t90 %t93 = load { ptr, i64, i64 }, ptr %t92 store i64 %t90, ptr %t87 - br label %while.cond8316 -while.end8318: + br label %while.cond8675 +while.end8677: store i1 false, ptr %a94 %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t96 = load i64, ptr %t95 %t97 = icmp eq i64 %t96, 2 - br label %logic.from8335 -logic.from8335: - br i1 %t97, label %logic.rhs8336, label %logic.end8337 -logic.rhs8336: + br label %logic.from8694 +logic.from8694: + br i1 %t97, label %logic.rhs8695, label %logic.end8696 +logic.rhs8695: %t98 = load { ptr, i64, i64 }, ptr %a14 %t99 = extractvalue { ptr, i64, i64 } %t98, 1 %t100 = icmp uge i64 0, %t99 - br i1 %t100, label %range8338, label %inrange8339 -range8338: - call void @finch_panic_index(ptr @.str.5643, i64 384, i64 0, i64 %t99) + br i1 %t100, label %range8697, label %inrange8698 +range8697: + call void @finch_panic_index(ptr @.str.6109, i64 384, i64 0, i64 %t99) unreachable -inrange8339: +inrange8698: %t101 = extractvalue { ptr, i64, i64 } %t98, 0 %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t101, i64 0 %t103 = load { ptr, i64, i64 }, ptr %t102 store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.5644, i64 1, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.6110, i64 1, i64 0 }, ptr %a105 %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) %t107 = icmp ne i32 %t106, 0 - br label %logic.rend8340 -logic.rend8340: - br label %logic.end8337 -logic.end8337: - %t108 = phi i1 [ false, %logic.from8335 ], [ %t107, %logic.rend8340 ] - br i1 %t108, label %then8341, label %endif8343 -then8341: + br label %logic.rend8699 +logic.rend8699: + br label %logic.end8696 +logic.end8696: + %t108 = phi i1 [ false, %logic.from8694 ], [ %t107, %logic.rend8699 ] + br i1 %t108, label %then8700, label %endif8702 +then8700: store i1 true, ptr %a94 %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t110 = load i64, ptr %t109 %t111 = icmp uge i64 0, %t110 - br i1 %t111, label %range8344, label %inrange8345 -range8344: - call void @finch_panic_index(ptr @.str.5645, i64 386, i64 0, i64 %t110) + br i1 %t111, label %range8703, label %inrange8704 +range8703: + call void @finch_panic_index(ptr @.str.6111, i64 386, i64 0, i64 %t110) unreachable -inrange8345: +inrange8704: %t112 = load ptr, ptr %a14 %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 0 %t114 = load { ptr, i64, i64 }, ptr %t113 call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - br label %endif8343 -endif8343: + br label %endif8702 +endif8702: %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 %t116 = load i64, ptr %t115 %t117 = icmp ne i64 %t116, 1 - br i1 %t117, label %then8346, label %endif8348 -then8346: + br i1 %t117, label %then8705, label %endif8707 +then8705: ret %S.cimport.Number zeroinitializer -endif8348: +endif8707: %t118 = load { ptr, i64, i64 }, ptr %a14 %t119 = extractvalue { ptr, i64, i64 } %t118, 1 %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range8349, label %inrange8350 -range8349: - call void @finch_panic_index(ptr @.str.5646, i64 391, i64 0, i64 %t119) + br i1 %t120, label %range8708, label %inrange8709 +range8708: + call void @finch_panic_index(ptr @.str.6112, i64 391, i64 0, i64 %t119) unreachable -inrange8350: +inrange8709: %t121 = extractvalue { ptr, i64, i64 } %t118, 0 %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i64 0 %t123 = load { ptr, i64, i64 }, ptr %t122 @@ -74656,152 +79506,152 @@ inrange8350: %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %a127, i32 0, i32 1 %t129 = load i64, ptr %t128 %t130 = icmp eq i64 %t129, 0 - br label %logic.from8351 -logic.from8351: - br i1 %t130, label %logic.end8353, label %logic.rhs8352 -logic.rhs8352: + br label %logic.from8710 +logic.from8710: + br i1 %t130, label %logic.end8712, label %logic.rhs8711 +logic.rhs8711: %t131 = load { ptr, i64, i64 }, ptr %a127 %t132 = extractvalue { ptr, i64, i64 } %t131, 1 %t133 = icmp uge i64 0, %t132 - br i1 %t133, label %range8354, label %inrange8355 -range8354: - call void @finch_panic_index(ptr @.str.5647, i64 392, i64 0, i64 %t132) + br i1 %t133, label %range8713, label %inrange8714 +range8713: + call void @finch_panic_index(ptr @.str.6113, i64 392, i64 0, i64 %t132) unreachable -inrange8355: +inrange8714: %t134 = extractvalue { ptr, i64, i64 } %t131, 0 %t135 = getelementptr inbounds i8, ptr %t134, i64 0 %t136 = load i8, ptr %t135 %t137 = icmp uge i8 %t136, 48 - br label %logic.from8356 -logic.from8356: - br i1 %t137, label %logic.rhs8357, label %logic.end8358 -logic.rhs8357: + br label %logic.from8715 +logic.from8715: + br i1 %t137, label %logic.rhs8716, label %logic.end8717 +logic.rhs8716: %t138 = load { ptr, i64, i64 }, ptr %a127 %t139 = extractvalue { ptr, i64, i64 } %t138, 1 %t140 = icmp uge i64 0, %t139 - br i1 %t140, label %range8359, label %inrange8360 -range8359: - call void @finch_panic_index(ptr @.str.5648, i64 392, i64 0, i64 %t139) + br i1 %t140, label %range8718, label %inrange8719 +range8718: + call void @finch_panic_index(ptr @.str.6114, i64 392, i64 0, i64 %t139) unreachable -inrange8360: +inrange8719: %t141 = extractvalue { ptr, i64, i64 } %t138, 0 %t142 = getelementptr inbounds i8, ptr %t141, i64 0 %t143 = load i8, ptr %t142 %t144 = icmp ule i8 %t143, 57 - br label %logic.rend8361 -logic.rend8361: - br label %logic.end8358 -logic.end8358: - %t145 = phi i1 [ false, %logic.from8356 ], [ %t144, %logic.rend8361 ] - br label %logic.from8362 -logic.from8362: - br i1 %t145, label %logic.end8364, label %logic.rhs8363 -logic.rhs8363: + br label %logic.rend8720 +logic.rend8720: + br label %logic.end8717 +logic.end8717: + %t145 = phi i1 [ false, %logic.from8715 ], [ %t144, %logic.rend8720 ] + br label %logic.from8721 +logic.from8721: + br i1 %t145, label %logic.end8723, label %logic.rhs8722 +logic.rhs8722: %t146 = load { ptr, i64, i64 }, ptr %a127 %t147 = extractvalue { ptr, i64, i64 } %t146, 1 %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range8365, label %inrange8366 -range8365: - call void @finch_panic_index(ptr @.str.5649, i64 392, i64 0, i64 %t147) + br i1 %t148, label %range8724, label %inrange8725 +range8724: + call void @finch_panic_index(ptr @.str.6115, i64 392, i64 0, i64 %t147) unreachable -inrange8366: +inrange8725: %t149 = extractvalue { ptr, i64, i64 } %t146, 0 %t150 = getelementptr inbounds i8, ptr %t149, i64 0 %t151 = load i8, ptr %t150 %t152 = icmp eq i8 %t151, 46 - br label %logic.rend8367 -logic.rend8367: - br label %logic.end8364 -logic.end8364: - %t153 = phi i1 [ true, %logic.from8362 ], [ %t152, %logic.rend8367 ] + br label %logic.rend8726 +logic.rend8726: + br label %logic.end8723 +logic.end8723: + %t153 = phi i1 [ true, %logic.from8721 ], [ %t152, %logic.rend8726 ] %t154 = xor i1 %t153, true - br label %logic.rend8368 -logic.rend8368: - br label %logic.end8353 -logic.end8353: - %t155 = phi i1 [ true, %logic.from8351 ], [ %t154, %logic.rend8368 ] - br i1 %t155, label %then8369, label %endif8371 -then8369: + br label %logic.rend8727 +logic.rend8727: + br label %logic.end8712 +logic.end8712: + %t155 = phi i1 [ true, %logic.from8710 ], [ %t154, %logic.rend8727 ] + br i1 %t155, label %then8728, label %endif8730 +then8728: ret %S.cimport.Number zeroinitializer -endif8371: +endif8730: %t156 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.5651, i64 1, i64 0 }, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.6117, i64 1, i64 0 }, ptr %a159 %t160 = call i64 @finch_str_find(ptr %a157, ptr %a159) %t161 = icmp sge i64 %t160, 0 - br label %logic.from8372 -logic.from8372: - br i1 %t161, label %logic.end8374, label %logic.rhs8373 -logic.rhs8373: + br label %logic.from8731 +logic.from8731: + br i1 %t161, label %logic.end8733, label %logic.rhs8732 +logic.rhs8732: %t162 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.5653, i64 1, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.6119, i64 1, i64 0 }, ptr %a165 %t166 = call i64 @finch_str_find(ptr %a163, ptr %a165) %t167 = icmp sge i64 %t166, 0 - br label %logic.rend8375 -logic.rend8375: - br label %logic.end8374 -logic.end8374: - %t168 = phi i1 [ true, %logic.from8372 ], [ %t167, %logic.rend8375 ] - br label %logic.from8376 -logic.from8376: - br i1 %t168, label %logic.end8378, label %logic.rhs8377 -logic.rhs8377: + br label %logic.rend8734 +logic.rend8734: + br label %logic.end8733 +logic.end8733: + %t168 = phi i1 [ true, %logic.from8731 ], [ %t167, %logic.rend8734 ] + br label %logic.from8735 +logic.from8735: + br i1 %t168, label %logic.end8737, label %logic.rhs8736 +logic.rhs8736: %t169 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5655, i64 1, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6121, i64 1, i64 0 }, ptr %a172 %t173 = call i64 @finch_str_find(ptr %a170, ptr %a172) %t174 = icmp sge i64 %t173, 0 - br label %logic.rend8379 -logic.rend8379: - br label %logic.end8378 -logic.end8378: - %t175 = phi i1 [ true, %logic.from8376 ], [ %t174, %logic.rend8379 ] - br label %logic.from8380 -logic.from8380: - br i1 %t175, label %logic.rhs8381, label %logic.end8382 -logic.rhs8381: + br label %logic.rend8738 +logic.rend8738: + br label %logic.end8737 +logic.end8737: + %t175 = phi i1 [ true, %logic.from8735 ], [ %t174, %logic.rend8738 ] + br label %logic.from8739 +logic.from8739: + br i1 %t175, label %logic.rhs8740, label %logic.end8741 +logic.rhs8740: %t176 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.5657, i64 2, i64 0 }, ptr %a179 + store { ptr, i64, i64 } { ptr @.str.6123, i64 2, i64 0 }, ptr %a179 %t180 = call i32 @finch_str_starts(ptr %a177, ptr %a179) %t181 = icmp ne i32 %t180, 0 %t182 = xor i1 %t181, true - br label %logic.rend8383 -logic.rend8383: - br label %logic.end8382 -logic.end8382: - %t183 = phi i1 [ false, %logic.from8380 ], [ %t182, %logic.rend8383 ] + br label %logic.rend8742 +logic.rend8742: + br label %logic.end8741 +logic.end8741: + %t183 = phi i1 [ false, %logic.from8739 ], [ %t182, %logic.rend8742 ] store i1 %t183, ptr %a184 %t185 = load i1, ptr %a184 - br i1 %t185, label %then8384, label %endif8386 -then8384: + br i1 %t185, label %then8743, label %endif8745 +then8743: %t186 = load { ptr, i64, i64 }, ptr %a127 store { ptr, i64, i64 } %t186, ptr %a187 call void @finch_str_copy(ptr %a188, ptr %a187) %t189 = load { ptr, i64, i64 }, ptr %a188 store { ptr, i64, i64 } %t189, ptr %a190 - br label %while.cond8387 -while.cond8387: + br label %while.cond8746 +while.cond8746: %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 %t192 = load i64, ptr %t191 %t193 = icmp sgt i64 %t192, 0 - br label %logic.from8390 -logic.from8390: - br i1 %t193, label %logic.rhs8391, label %logic.end8392 -logic.rhs8391: - store { ptr, i64, i64 } { ptr @.str.5658, i64 4, i64 0 }, ptr %a194 + br label %logic.from8749 +logic.from8749: + br i1 %t193, label %logic.rhs8750, label %logic.end8751 +logic.rhs8750: + store { ptr, i64, i64 } { ptr @.str.6124, i64 4, i64 0 }, ptr %a194 %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 %t197 = load i64, ptr %t196 %t198 = sub i64 %t197, 1 %t199 = load { ptr, i64, i64 }, ptr %a190 %t200 = extractvalue { ptr, i64, i64 } %t199, 1 %t201 = icmp uge i64 %t198, %t200 - br i1 %t201, label %range8393, label %inrange8394 -range8393: - call void @finch_panic_index(ptr @.str.5660, i64 398, i64 %t198, i64 %t200) + br i1 %t201, label %range8752, label %inrange8753 +range8752: + call void @finch_panic_index(ptr @.str.6126, i64 398, i64 %t198, i64 %t200) unreachable -inrange8394: +inrange8753: %t202 = extractvalue { ptr, i64, i64 } %t199, 0 %t203 = getelementptr inbounds i8, ptr %t202, i64 %t198 %t204 = load i8, ptr %t203 @@ -74810,23 +79660,23 @@ inrange8394: store { ptr, i64, i64 } %t206, ptr %a207 %t208 = call i64 @finch_str_find(ptr %a194, ptr %a207) %t209 = icmp sge i64 %t208, 0 - br label %logic.rend8395 -logic.rend8395: - br label %logic.end8392 -logic.end8392: - %t210 = phi i1 [ false, %logic.from8390 ], [ %t209, %logic.rend8395 ] - br i1 %t210, label %while.body8388, label %while.end8389 -while.body8388: + br label %logic.rend8754 +logic.rend8754: + br label %logic.end8751 +logic.end8751: + %t210 = phi i1 [ false, %logic.from8749 ], [ %t209, %logic.rend8754 ] + br i1 %t210, label %while.body8747, label %while.end8748 +while.body8747: %t211 = load { ptr, i64, i64 }, ptr %a190 store { ptr, i64, i64 } %t211, ptr %a212 %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 %t215 = load i64, ptr %t214 %t216 = sub i64 %t215, 1 - call void @finch_str_sub(ptr %a213, ptr %a212, i64 0, i64 %t216, ptr @.str.5661, i64 399) + call void @finch_str_sub(ptr %a213, ptr %a212, i64 0, i64 %t216, ptr @.str.6127, i64 399) %t217 = load { ptr, i64, i64 }, ptr %a213 store { ptr, i64, i64 } %t217, ptr %a190 - br label %while.cond8387 -while.end8389: + br label %while.cond8746 +while.end8748: %t218 = load { ptr, i64, i64 }, ptr %a190 store { ptr, i64, i64 } zeroinitializer, ptr %a219 store double 0.0, ptr %a220 @@ -74835,20 +79685,20 @@ while.end8389: %t223 = icmp eq i32 %t222, 0 %t224 = load { ptr, i64, i64 }, ptr %a219 %t225 = load double, ptr %a220 - br i1 %t223, label %or.failed8396, label %or.ok8397 -or.failed8396: + br i1 %t223, label %or.failed8755, label %or.ok8756 +or.failed8755: store { ptr, i64, i64 } %t224, ptr %a226 ret %S.cimport.Number zeroinitializer -or.ok8397: +or.ok8756: store double %t225, ptr %a227 %t228 = load i1, ptr %a94 - br i1 %t228, label %then8398, label %endif8400 -then8398: + br i1 %t228, label %then8757, label %endif8759 +then8757: %t229 = load double, ptr %a227 %t230 = fsub double 0.0, %t229 store double %t230, ptr %a227 - br label %endif8400 -endif8400: + br label %endif8759 +endif8759: %t231 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 %t232 = load double, ptr %a227 %t233 = insertvalue %S.cimport.CConst %t231, double %t232, 2 @@ -74860,24 +79710,24 @@ endif8400: %t239 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t238, 0 %t240 = insertvalue %S.cimport.Number %t239, i1 true, 1 ret %S.cimport.Number %t240 -endif8386: +endif8745: %t241 = load { ptr, i64, i64 }, ptr %a127 %t242 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t241) store %S.cimport.Number %t242, ptr %a243 %t244 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 1 %t245 = load i1, ptr %t244 - br label %logic.from8401 -logic.from8401: - br i1 %t245, label %logic.rhs8402, label %logic.end8403 -logic.rhs8402: + br label %logic.from8760 +logic.from8760: + br i1 %t245, label %logic.rhs8761, label %logic.end8762 +logic.rhs8761: %t246 = load i1, ptr %a94 - br label %logic.rend8404 -logic.rend8404: - br label %logic.end8403 -logic.end8403: - %t247 = phi i1 [ false, %logic.from8401 ], [ %t246, %logic.rend8404 ] - br i1 %t247, label %then8405, label %endif8407 -then8405: + br label %logic.rend8763 +logic.rend8763: + br label %logic.end8762 +logic.end8762: + %t247 = phi i1 [ false, %logic.from8760 ], [ %t246, %logic.rend8763 ] + br i1 %t247, label %then8764, label %endif8766 +then8764: %t248 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 0 %t249 = getelementptr inbounds %S.cimport.CConst, ptr %t248, i32 0, i32 1 %t250 = load i64, ptr %t249 @@ -74885,8 +79735,8 @@ then8405: %t252 = getelementptr inbounds %S.cimport.Number, ptr %a243, i32 0, i32 0 %t253 = getelementptr inbounds %S.cimport.CConst, ptr %t252, i32 0, i32 1 store i64 %t251, ptr %t253 - br label %endif8407 -endif8407: + br label %endif8766 +endif8766: %t254 = load %S.cimport.Number, ptr %a243 store %S.cimport.Number %t254, ptr %a255 call void @finch.copy.S_cimport_Number(ptr %a256, ptr %a255) @@ -75041,8 +79891,8 @@ entry: store i32 %t12, ptr %a13 %t14 = load i32, ptr %a13 %t15 = icmp eq i32 %t14, 20 - br i1 %t15, label %then8408, label %else8409 -then8408: + br i1 %t15, label %then8767, label %else8768 +then8767: %t18 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t18, ptr %a19 call void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16 %a17, ptr byval(%S.C.CXCursor) align 8 %a19) @@ -75054,8 +79904,8 @@ then8408: %t24 = getelementptr inbounds %S.C.CXType, ptr %a23, i32 0, i32 0 %t25 = load i32, ptr %t24 %t26 = icmp eq i32 %t25, 105 - br i1 %t26, label %then8411, label %endif8413 -then8411: + br i1 %t26, label %then8770, label %endif8772 +then8770: %t28 = load %S.C.CXType, ptr %a23 store %S.C.CXType %t28, ptr %a29 call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a27, ptr byval(%S.C.CXType) align 8 %a29) @@ -75068,49 +79918,49 @@ then8411: store { ptr, i64, i64 } %t35, ptr %a36 %t37 = load ptr, ptr %a1 %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic8414, label %ok8415 -panic8414: - call void @finch_panic(ptr @.str.5662, i64 433, ptr @.str.5663) + br i1 %t38, label %panic8773, label %ok8774 +panic8773: + call void @finch_panic(ptr @.str.6128, i64 433, ptr @.str.6129) unreachable -ok8415: +ok8774: %t39 = getelementptr inbounds %S.cimport.Importer, ptr %t37, i32 0, i32 3 %t40 = load { ptr, i64, i64 }, ptr %a36 store { ptr, i64, i64 } %t40, ptr %a41 %t42 = call i64 @finch_map_find(ptr %t39, ptr %a41, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t43 = icmp sge i64 %t42, 0 - br label %logic.from8416 -logic.from8416: - br i1 %t43, label %logic.rhs8417, label %logic.end8418 -logic.rhs8417: + br label %logic.from8775 +logic.from8775: + br i1 %t43, label %logic.rhs8776, label %logic.end8777 +logic.rhs8776: %t44 = load ptr, ptr %a1 %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic8419, label %ok8420 -panic8419: - call void @finch_panic(ptr @.str.5664, i64 433, ptr @.str.5665) + br i1 %t45, label %panic8778, label %ok8779 +panic8778: + call void @finch_panic(ptr @.str.6130, i64 433, ptr @.str.6131) unreachable -ok8420: +ok8779: %t46 = getelementptr inbounds %S.cimport.Importer, ptr %t44, i32 0, i32 0 %t47 = getelementptr inbounds %S.cimport.CImports, ptr %t46, i32 0, i32 3 %t48 = load ptr, ptr %a1 %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic8421, label %ok8422 -panic8421: - call void @finch_panic(ptr @.str.5666, i64 433, ptr @.str.5667) + br i1 %t49, label %panic8780, label %ok8781 +panic8780: + call void @finch_panic(ptr @.str.6132, i64 433, ptr @.str.6133) unreachable -ok8422: +ok8781: %t50 = getelementptr inbounds %S.cimport.Importer, ptr %t48, i32 0, i32 3 %t51 = load { ptr, i64, i64 }, ptr %a36 store { ptr, i64, i64 } %t51, ptr %a52 %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t54 = icmp slt i64 %t53, 0 - br i1 %t54, label %map.missing8423, label %map.found8424 -map.missing8423: + br i1 %t54, label %map.missing8782, label %map.found8783 +map.missing8782: store { ptr, i64, i64 } zeroinitializer, ptr %a55 store { ptr, i64, i64 } %t51, ptr %a56 call void @finch_buf_str(ptr %a55, ptr %a56, i32 1) - call void @finch_map_missing(ptr @.str.5668, i64 433, ptr %a55) + call void @finch_map_missing(ptr @.str.6134, i64 433, ptr %a55) unreachable -map.found8424: +map.found8783: %t57 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t50, i32 0, i32 0 %t58 = load ptr, ptr %t57 %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t58, i64 %t53 @@ -75119,25 +79969,25 @@ map.found8424: store { ptr, i64, i64 } %t61, ptr %a62 %t63 = call i64 @finch_map_find(ptr %t47, ptr %a62, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t64 = icmp sge i64 %t63, 0 - br label %logic.rend8425 -logic.rend8425: - br label %logic.end8418 -logic.end8418: - %t65 = phi i1 [ false, %logic.from8416 ], [ %t64, %logic.rend8425 ] + br label %logic.rend8784 +logic.rend8784: + br label %logic.end8777 +logic.end8777: + %t65 = phi i1 [ false, %logic.from8775 ], [ %t64, %logic.rend8784 ] store i1 %t65, ptr %a66 %t67 = load i1, ptr %a66 %t68 = xor i1 %t67, true - br label %logic.from8426 -logic.from8426: - br i1 %t68, label %logic.rhs8427, label %logic.end8428 -logic.rhs8427: + br label %logic.from8785 +logic.from8785: + br i1 %t68, label %logic.rhs8786, label %logic.end8787 +logic.rhs8786: %t69 = load ptr, ptr %a1 %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic8429, label %ok8430 -panic8429: - call void @finch_panic(ptr @.str.5669, i64 434, ptr @.str.5670) + br i1 %t70, label %panic8788, label %ok8789 +panic8788: + call void @finch_panic(ptr @.str.6135, i64 434, ptr @.str.6136) unreachable -ok8430: +ok8789: %t71 = getelementptr inbounds %S.cimport.Importer, ptr %t69, i32 0, i32 0 %t72 = getelementptr inbounds %S.cimport.CImports, ptr %t71, i32 0, i32 3 %t73 = load { ptr, i64, i64 }, ptr %a9 @@ -75145,21 +79995,21 @@ ok8430: %t75 = call i64 @finch_map_find(ptr %t72, ptr %a74, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t76 = icmp sge i64 %t75, 0 %t77 = xor i1 %t76, true - br label %logic.rend8431 -logic.rend8431: - br label %logic.end8428 -logic.end8428: - %t78 = phi i1 [ false, %logic.from8426 ], [ %t77, %logic.rend8431 ] - br i1 %t78, label %then8432, label %endif8434 -then8432: + br label %logic.rend8790 +logic.rend8790: + br label %logic.end8787 +logic.end8787: + %t78 = phi i1 [ false, %logic.from8785 ], [ %t77, %logic.rend8790 ] + br i1 %t78, label %then8791, label %endif8793 +then8791: %t79 = load { ptr, i64, i64 }, ptr %a9 %t80 = load ptr, ptr %a1 %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic8435, label %ok8436 -panic8435: - call void @finch_panic(ptr @.str.5671, i64 435, ptr @.str.5672) + br i1 %t81, label %panic8794, label %ok8795 +panic8794: + call void @finch_panic(ptr @.str.6137, i64 435, ptr @.str.6138) unreachable -ok8436: +ok8795: %t82 = getelementptr inbounds %S.cimport.Importer, ptr %t80, i32 0, i32 3 %t83 = load { ptr, i64, i64 }, ptr %a36 store { ptr, i64, i64 } %t83, ptr %a84 @@ -75170,46 +80020,46 @@ ok8436: %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t88, i64 %t86 %t90 = load i32, ptr %a85 %t91 = icmp ne i32 %t90, 0 - br i1 %t91, label %map.new8437, label %map.have8438 -map.new8437: + br i1 %t91, label %map.new8796, label %map.have8797 +map.new8796: %t92 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 1 call void @finch_str_copy(ptr %t92, ptr %a84) %t93 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 store { ptr, i64, i64 } zeroinitializer, ptr %t93 - br label %map.have8438 -map.have8438: + br label %map.have8797 +map.have8797: %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 store { ptr, i64, i64 } %t79, ptr %a95 call void @finch_str_copy(ptr %a96, ptr %a95) %t97 = load { ptr, i64, i64 }, ptr %a96 store { ptr, i64, i64 } %t97, ptr %t94 - br label %endif8434 -endif8434: - br label %endif8413 -endif8413: - br label %endif8410 -else8409: + br label %endif8793 +endif8793: + br label %endif8772 +endif8772: + br label %endif8769 +else8768: %t98 = load i32, ptr %a13 %t99 = icmp eq i32 %t98, 8 - br i1 %t99, label %then8439, label %else8440 -then8439: + br i1 %t99, label %then8798, label %else8799 +then8798: %t100 = load ptr, ptr %a1 %t101 = icmp eq ptr %t100, null - br i1 %t101, label %panic8442, label %ok8443 -panic8442: - call void @finch_panic(ptr @.str.5673, i64 439, ptr @.str.5674) + br i1 %t101, label %panic8801, label %ok8802 +panic8801: + call void @finch_panic(ptr @.str.6139, i64 439, ptr @.str.6140) unreachable -ok8443: +ok8802: %t102 = getelementptr inbounds %S.cimport.Importer, ptr %t100, i32 0, i32 0 %t103 = getelementptr inbounds %S.cimport.CImports, ptr %t102, i32 0, i32 0 %t104 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t104, ptr %a105 %t106 = call i64 @finch_map_find(ptr %t103, ptr %a105, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t107 = icmp sge i64 %t106, 0 - br i1 %t107, label %then8444, label %endif8446 -then8444: + br i1 %t107, label %then8803, label %endif8805 +then8803: ret void -endif8446: +endif8805: %t108 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t108, ptr %a109 call void @finch_str_copy(ptr %a110, ptr %a109) @@ -75217,11 +80067,11 @@ endif8446: %t112 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t111, 0 %t113 = load ptr, ptr %a1 %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic8447, label %ok8448 -panic8447: - call void @finch_panic(ptr @.str.5675, i64 442, ptr @.str.5676) + br i1 %t114, label %panic8806, label %ok8807 +panic8806: + call void @finch_panic(ptr @.str.6141, i64 442, ptr @.str.6142) unreachable -ok8448: +ok8807: %t115 = getelementptr inbounds %S.cimport.Importer, ptr %t113, i32 0, i32 2 %t116 = load { ptr, i64, i64 }, ptr %t115 store { ptr, i64, i64 } %t116, ptr %a117 @@ -75233,18 +80083,18 @@ ok8448: store %S.C.CXCursor %t122, ptr %a123 %t124 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a123) %t125 = icmp eq i32 %t124, 3 - br i1 %t125, label %then8449, label %endif8451 -then8449: + br i1 %t125, label %then8808, label %endif8810 +then8808: %t126 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } { ptr @.str.5677, i64 62, i64 0 }, ptr %t126 + store { ptr, i64, i64 } { ptr @.str.6143, i64 62, i64 0 }, ptr %t126 %t127 = load %S.cimport.CFunc, ptr %a121 %t128 = load ptr, ptr %a1 %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic8452, label %ok8453 -panic8452: - call void @finch_panic(ptr @.str.5678, i64 445, ptr @.str.5679) + br i1 %t129, label %panic8811, label %ok8812 +panic8811: + call void @finch_panic(ptr @.str.6144, i64 445, ptr @.str.6145) unreachable -ok8453: +ok8812: %t130 = getelementptr inbounds %S.cimport.Importer, ptr %t128, i32 0, i32 0 %t131 = getelementptr inbounds %S.cimport.CImports, ptr %t130, i32 0, i32 0 %t132 = load { ptr, i64, i64 }, ptr %a9 @@ -75256,21 +80106,21 @@ ok8453: %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t137, i64 %t135 %t139 = load i32, ptr %a134 %t140 = icmp ne i32 %t139, 0 - br i1 %t140, label %map.new8454, label %map.have8455 -map.new8454: + br i1 %t140, label %map.new8813, label %map.have8814 +map.new8813: %t141 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 1 call void @finch_str_copy(ptr %t141, ptr %a133) %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 2 store %S.cimport.CFunc zeroinitializer, ptr %t142 - br label %map.have8455 -map.have8455: + br label %map.have8814 +map.have8814: %t143 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t138, i32 0, i32 2 store %S.cimport.CFunc %t127, ptr %a144 call void @finch.copy.S_cimport_CFunc(ptr %a145, ptr %a144) %t146 = load %S.cimport.CFunc, ptr %a145 store %S.cimport.CFunc %t146, ptr %t143 ret void -endif8451: +endif8810: %t149 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t149, ptr %a150 call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a148, ptr byval(%S.C.CXCursor) align 8 %a150) @@ -75282,18 +80132,18 @@ endif8451: %t155 = getelementptr inbounds %S.C.CXType, ptr %a154, i32 0, i32 0 %t156 = load i32, ptr %t155 %t157 = icmp eq i32 %t156, 110 - br i1 %t157, label %then8456, label %endif8458 -then8456: + br i1 %t157, label %then8815, label %endif8817 +then8815: %t158 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } { ptr @.str.5680, i64 42, i64 0 }, ptr %t158 + store { ptr, i64, i64 } { ptr @.str.6146, i64 42, i64 0 }, ptr %t158 %t159 = load %S.cimport.CFunc, ptr %a121 %t160 = load ptr, ptr %a1 %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic8459, label %ok8460 -panic8459: - call void @finch_panic(ptr @.str.5681, i64 451, ptr @.str.5682) + br i1 %t161, label %panic8818, label %ok8819 +panic8818: + call void @finch_panic(ptr @.str.6147, i64 451, ptr @.str.6148) unreachable -ok8460: +ok8819: %t162 = getelementptr inbounds %S.cimport.Importer, ptr %t160, i32 0, i32 0 %t163 = getelementptr inbounds %S.cimport.CImports, ptr %t162, i32 0, i32 0 %t164 = load { ptr, i64, i64 }, ptr %a9 @@ -75305,21 +80155,21 @@ ok8460: %t170 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t169, i64 %t167 %t171 = load i32, ptr %a166 %t172 = icmp ne i32 %t171, 0 - br i1 %t172, label %map.new8461, label %map.have8462 -map.new8461: + br i1 %t172, label %map.new8820, label %map.have8821 +map.new8820: %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 1 call void @finch_str_copy(ptr %t173, ptr %a165) %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 2 store %S.cimport.CFunc zeroinitializer, ptr %t174 - br label %map.have8462 -map.have8462: + br label %map.have8821 +map.have8821: %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t170, i32 0, i32 2 store %S.cimport.CFunc %t159, ptr %a176 call void @finch.copy.S_cimport_CFunc(ptr %a177, ptr %a176) %t178 = load %S.cimport.CFunc, ptr %a177 store %S.cimport.CFunc %t178, ptr %t175 ret void -endif8458: +endif8817: %t179 = load ptr, ptr %a1 %t181 = load %S.C.CXType, ptr %a154 store %S.C.CXType %t181, ptr %a182 @@ -75329,8 +80179,8 @@ endif8458: store %S.cimport.Mapped %t184, ptr %a185 %t186 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 2 %t187 = load i1, ptr %t186 - br i1 %t187, label %then8463, label %else8464 -then8463: + br i1 %t187, label %then8822, label %else8823 +then8822: %t188 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 0 %t189 = load %S.ast.Type, ptr %t188 %t190 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 2 @@ -75338,8 +80188,8 @@ then8463: call void @finch.copy.S_ast_Type(ptr %a192, ptr %a191) %t193 = load %S.ast.Type, ptr %a192 store %S.ast.Type %t193, ptr %t190 - br label %endif8465 -else8464: + br label %endif8824 +else8823: %t194 = getelementptr inbounds %S.cimport.Mapped, ptr %a185, i32 0, i32 1 %t195 = load { ptr, i64, i64 }, ptr %t194 %t196 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 @@ -75347,8 +80197,8 @@ else8464: call void @finch_str_copy(ptr %a198, ptr %a197) %t199 = load { ptr, i64, i64 }, ptr %a198 store { ptr, i64, i64 } %t199, ptr %t196 - br label %endif8465 -endif8465: + br label %endif8824 +endif8824: %t200 = load %S.C.CXType, ptr %a154 store %S.C.CXType %t200, ptr %a201 %t202 = call i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8 %a201) @@ -75356,20 +80206,20 @@ endif8465: store i64 %t203, ptr %a204 %t205 = load i64, ptr %a204 store i64 0, ptr %a206 - br label %for.cond8466 -for.cond8466: + br label %for.cond8825 +for.cond8825: %t207 = load i64, ptr %a206 %t208 = icmp slt i64 %t207, %t205 - br i1 %t208, label %for.body8467, label %for.end8469 -for.body8467: + br i1 %t208, label %for.body8826, label %for.end8828 +for.body8826: %t209 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 %t211 = load i64, ptr %t210 %t212 = icmp sgt i64 %t211, 0 - br i1 %t212, label %then8470, label %endif8472 -then8470: - br label %for.end8469 -endif8472: + br i1 %t212, label %then8829, label %endif8831 +then8829: + br label %for.end8828 +endif8831: %t213 = load ptr, ptr %a1 %t215 = load %S.C.CXType, ptr %a154 store %S.C.CXType %t215, ptr %a216 @@ -75381,8 +80231,8 @@ endif8472: store %S.cimport.Mapped %t220, ptr %a221 %t222 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 2 %t223 = load i1, ptr %t222 - br i1 %t223, label %then8473, label %else8474 -then8473: + br i1 %t223, label %then8832, label %else8833 +then8832: %t224 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 3 %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i32 0, i32 1 %t226 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 0 @@ -75397,8 +80247,8 @@ then8473: %t234 = getelementptr inbounds %S.ast.Type, ptr %t233, i64 %t231 store %S.ast.Type %t230, ptr %t234 store i64 %t232, ptr %t225 - br label %endif8475 -else8474: + br label %endif8834 +else8833: %t235 = getelementptr inbounds %S.cimport.Mapped, ptr %a221, i32 0, i32 1 %t236 = load { ptr, i64, i64 }, ptr %t235 %t237 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 @@ -75406,15 +80256,15 @@ else8474: call void @finch_str_copy(ptr %a239, ptr %a238) %t240 = load { ptr, i64, i64 }, ptr %a239 store { ptr, i64, i64 } %t240, ptr %t237 - br label %endif8475 -endif8475: - br label %for.step8468 -for.step8468: + br label %endif8834 +endif8834: + br label %for.step8827 +for.step8827: %t241 = load i64, ptr %a206 %t242 = add i64 %t241, 1 store i64 %t242, ptr %a206 - br label %for.cond8466 -for.end8469: + br label %for.cond8825 +for.end8828: %t243 = load %S.C.CXType, ptr %a154 store %S.C.CXType %t243, ptr %a244 %t245 = call i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8 %a244) @@ -75424,11 +80274,11 @@ for.end8469: %t248 = load %S.cimport.CFunc, ptr %a121 %t249 = load ptr, ptr %a1 %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic8476, label %ok8477 -panic8476: - call void @finch_panic(ptr @.str.5683, i64 473, ptr @.str.5684) + br i1 %t250, label %panic8835, label %ok8836 +panic8835: + call void @finch_panic(ptr @.str.6149, i64 473, ptr @.str.6150) unreachable -ok8477: +ok8836: %t251 = getelementptr inbounds %S.cimport.Importer, ptr %t249, i32 0, i32 0 %t252 = getelementptr inbounds %S.cimport.CImports, ptr %t251, i32 0, i32 0 %t253 = load { ptr, i64, i64 }, ptr %a9 @@ -75440,55 +80290,55 @@ ok8477: %t259 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t258, i64 %t256 %t260 = load i32, ptr %a255 %t261 = icmp ne i32 %t260, 0 - br i1 %t261, label %map.new8478, label %map.have8479 -map.new8478: + br i1 %t261, label %map.new8837, label %map.have8838 +map.new8837: %t262 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 1 call void @finch_str_copy(ptr %t262, ptr %a254) %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 2 store %S.cimport.CFunc zeroinitializer, ptr %t263 - br label %map.have8479 -map.have8479: + br label %map.have8838 +map.have8838: %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t259, i32 0, i32 2 store %S.cimport.CFunc %t248, ptr %a265 call void @finch.copy.S_cimport_CFunc(ptr %a266, ptr %a265) %t267 = load %S.cimport.CFunc, ptr %a266 store %S.cimport.CFunc %t267, ptr %t264 - br label %endif8441 -else8440: + br label %endif8800 +else8799: %t268 = load i32, ptr %a13 %t269 = icmp eq i32 %t268, 9 - br i1 %t269, label %then8480, label %else8481 -then8480: + br i1 %t269, label %then8839, label %else8840 +then8839: %t270 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t270, ptr %a271 %t272 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a271) %t273 = icmp ne i32 %t272, 2 - br label %logic.from8483 -logic.from8483: - br i1 %t273, label %logic.end8485, label %logic.rhs8484 -logic.rhs8484: + br label %logic.from8842 +logic.from8842: + br i1 %t273, label %logic.end8844, label %logic.rhs8843 +logic.rhs8843: %t274 = load ptr, ptr %a1 %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic8486, label %ok8487 -panic8486: - call void @finch_panic(ptr @.str.5685, i64 475, ptr @.str.5686) + br i1 %t275, label %panic8845, label %ok8846 +panic8845: + call void @finch_panic(ptr @.str.6151, i64 475, ptr @.str.6152) unreachable -ok8487: +ok8846: %t276 = getelementptr inbounds %S.cimport.Importer, ptr %t274, i32 0, i32 0 %t277 = getelementptr inbounds %S.cimport.CImports, ptr %t276, i32 0, i32 2 %t278 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t278, ptr %a279 %t280 = call i64 @finch_map_find(ptr %t277, ptr %a279, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t281 = icmp sge i64 %t280, 0 - br label %logic.rend8488 -logic.rend8488: - br label %logic.end8485 -logic.end8485: - %t282 = phi i1 [ true, %logic.from8483 ], [ %t281, %logic.rend8488 ] - br i1 %t282, label %then8489, label %endif8491 -then8489: + br label %logic.rend8847 +logic.rend8847: + br label %logic.end8844 +logic.end8844: + %t282 = phi i1 [ true, %logic.from8842 ], [ %t281, %logic.rend8847 ] + br i1 %t282, label %then8848, label %endif8850 +then8848: ret void -endif8491: +endif8850: %t283 = load ptr, ptr %a1 %t285 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t285, ptr %a286 @@ -75498,17 +80348,17 @@ endif8491: store %S.cimport.Mapped %t288, ptr %a289 %t290 = getelementptr inbounds %S.cimport.Mapped, ptr %a289, i32 0, i32 2 %t291 = load i1, ptr %t290 - br i1 %t291, label %then8492, label %endif8494 -then8492: + br i1 %t291, label %then8851, label %endif8853 +then8851: %t292 = getelementptr inbounds %S.cimport.Mapped, ptr %a289, i32 0, i32 0 %t293 = load %S.ast.Type, ptr %t292 %t294 = load ptr, ptr %a1 %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic8495, label %ok8496 -panic8495: - call void @finch_panic(ptr @.str.5687, i64 480, ptr @.str.5688) + br i1 %t295, label %panic8854, label %ok8855 +panic8854: + call void @finch_panic(ptr @.str.6153, i64 480, ptr @.str.6154) unreachable -ok8496: +ok8855: %t296 = getelementptr inbounds %S.cimport.Importer, ptr %t294, i32 0, i32 0 %t297 = getelementptr inbounds %S.cimport.CImports, ptr %t296, i32 0, i32 2 %t298 = load { ptr, i64, i64 }, ptr %a9 @@ -75520,60 +80370,60 @@ ok8496: %t304 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t303, i64 %t301 %t305 = load i32, ptr %a300 %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %map.new8497, label %map.have8498 -map.new8497: + br i1 %t306, label %map.new8856, label %map.have8857 +map.new8856: %t307 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 1 call void @finch_str_copy(ptr %t307, ptr %a299) %t308 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 2 store %S.ast.Type zeroinitializer, ptr %t308 - br label %map.have8498 -map.have8498: + br label %map.have8857 +map.have8857: %t309 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t304, i32 0, i32 2 store %S.ast.Type %t293, ptr %a310 call void @finch.copy.S_ast_Type(ptr %a311, ptr %a310) %t312 = load %S.ast.Type, ptr %a311 store %S.ast.Type %t312, ptr %t309 - br label %endif8494 -endif8494: - br label %endif8482 -else8481: + br label %endif8853 +endif8853: + br label %endif8841 +else8840: %t313 = load i32, ptr %a13 %t314 = icmp eq i32 %t313, 2 - br i1 %t314, label %then8499, label %else8500 -then8499: + br i1 %t314, label %then8858, label %else8859 +then8858: %t315 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t315, ptr %a316 %t317 = call i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8 %a316) %t318 = icmp ne i32 %t317, 0 - br label %logic.from8502 -logic.from8502: - br i1 %t318, label %logic.rhs8503, label %logic.end8504 -logic.rhs8503: + br label %logic.from8861 +logic.from8861: + br i1 %t318, label %logic.rhs8862, label %logic.end8863 +logic.rhs8862: %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 %t320 = load i64, ptr %t319 %t321 = icmp sgt i64 %t320, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8504 -logic.end8504: - %t322 = phi i1 [ false, %logic.from8502 ], [ %t321, %logic.rend8505 ] - br label %logic.from8506 -logic.from8506: - br i1 %t322, label %logic.rhs8507, label %logic.end8508 -logic.rhs8507: + br label %logic.rend8864 +logic.rend8864: + br label %logic.end8863 +logic.end8863: + %t322 = phi i1 [ false, %logic.from8861 ], [ %t321, %logic.rend8864 ] + br label %logic.from8865 +logic.from8865: + br i1 %t322, label %logic.rhs8866, label %logic.end8867 +logic.rhs8866: %t323 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t323, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5690, i64 1, i64 0 }, ptr %a326 + store { ptr, i64, i64 } { ptr @.str.6156, i64 1, i64 0 }, ptr %a326 %t327 = call i64 @finch_str_find(ptr %a324, ptr %a326) %t328 = icmp sge i64 %t327, 0 %t329 = xor i1 %t328, true - br label %logic.rend8509 -logic.rend8509: - br label %logic.end8508 -logic.end8508: - %t330 = phi i1 [ false, %logic.from8506 ], [ %t329, %logic.rend8509 ] - br i1 %t330, label %then8510, label %endif8512 -then8510: + br label %logic.rend8868 +logic.rend8868: + br label %logic.end8867 +logic.end8867: + %t330 = phi i1 [ false, %logic.from8865 ], [ %t329, %logic.rend8868 ] + br i1 %t330, label %then8869, label %endif8871 +then8869: %t331 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t331, ptr %a332 %t333 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a332) @@ -75583,27 +80433,27 @@ then8510: store { ptr, i64, i64 } %t336, ptr %a337 %t338 = load ptr, ptr %a1 %t339 = icmp eq ptr %t338, null - br i1 %t339, label %panic8513, label %ok8514 -panic8513: - call void @finch_panic(ptr @.str.5691, i64 485, ptr @.str.5692) + br i1 %t339, label %panic8872, label %ok8873 +panic8872: + call void @finch_panic(ptr @.str.6157, i64 485, ptr @.str.6158) unreachable -ok8514: +ok8873: %t340 = getelementptr inbounds %S.cimport.Importer, ptr %t338, i32 0, i32 3 %t341 = load { ptr, i64, i64 }, ptr %a337 store { ptr, i64, i64 } %t341, ptr %a342 %t343 = call i64 @finch_map_find(ptr %t340, ptr %a342, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t344 = icmp sge i64 %t343, 0 %t345 = xor i1 %t344, true - br i1 %t345, label %then8515, label %endif8517 -then8515: + br i1 %t345, label %then8874, label %endif8876 +then8874: %t346 = load { ptr, i64, i64 }, ptr %a9 %t347 = load ptr, ptr %a1 %t348 = icmp eq ptr %t347, null - br i1 %t348, label %panic8518, label %ok8519 -panic8518: - call void @finch_panic(ptr @.str.5693, i64 486, ptr @.str.5694) + br i1 %t348, label %panic8877, label %ok8878 +panic8877: + call void @finch_panic(ptr @.str.6159, i64 486, ptr @.str.6160) unreachable -ok8519: +ok8878: %t349 = getelementptr inbounds %S.cimport.Importer, ptr %t347, i32 0, i32 3 %t350 = load { ptr, i64, i64 }, ptr %a337 store { ptr, i64, i64 } %t350, ptr %a351 @@ -75614,46 +80464,46 @@ ok8519: %t356 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t355, i64 %t353 %t357 = load i32, ptr %a352 %t358 = icmp ne i32 %t357, 0 - br i1 %t358, label %map.new8520, label %map.have8521 -map.new8520: + br i1 %t358, label %map.new8879, label %map.have8880 +map.new8879: %t359 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 1 call void @finch_str_copy(ptr %t359, ptr %a351) %t360 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 2 store { ptr, i64, i64 } zeroinitializer, ptr %t360 - br label %map.have8521 -map.have8521: + br label %map.have8880 +map.have8880: %t361 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t356, i32 0, i32 2 store { ptr, i64, i64 } %t346, ptr %a362 call void @finch_str_copy(ptr %a363, ptr %a362) %t364 = load { ptr, i64, i64 }, ptr %a363 store { ptr, i64, i64 } %t364, ptr %t361 - br label %endif8517 -endif8517: - br label %endif8512 -endif8512: - br label %endif8501 -else8500: + br label %endif8876 +endif8876: + br label %endif8871 +endif8871: + br label %endif8860 +else8859: %t365 = load i32, ptr %a13 %t366 = icmp eq i32 %t365, 5 - br i1 %t366, label %then8522, label %else8523 -then8522: + br i1 %t366, label %then8881, label %else8882 +then8881: %t367 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t367, ptr %a368 %t369 = load ptr, ptr %a1 %t370 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a368, ptr @finch.c.cimport.visitTop, ptr %t369) - br label %endif8524 -else8523: + br label %endif8883 +else8882: %t371 = load i32, ptr %a13 %t372 = icmp eq i32 %t371, 7 - br i1 %t372, label %then8525, label %else8526 -then8525: + br i1 %t372, label %then8884, label %else8885 +then8884: %t373 = load ptr, ptr %a1 %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic8528, label %ok8529 -panic8528: - call void @finch_panic(ptr @.str.5695, i64 492, ptr @.str.5696) + br i1 %t374, label %panic8887, label %ok8888 +panic8887: + call void @finch_panic(ptr @.str.6161, i64 492, ptr @.str.6162) unreachable -ok8529: +ok8888: %t375 = getelementptr inbounds %S.cimport.Importer, ptr %t373, i32 0, i32 0 %t376 = getelementptr inbounds %S.cimport.CImports, ptr %t375, i32 0, i32 1 %t377 = load { ptr, i64, i64 }, ptr %a9 @@ -75661,19 +80511,19 @@ ok8529: %t379 = call i64 @finch_map_find(ptr %t376, ptr %a378, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t380 = icmp sge i64 %t379, 0 %t381 = xor i1 %t380, true - br i1 %t381, label %then8530, label %endif8532 -then8530: + br i1 %t381, label %then8889, label %endif8891 +then8889: %t382 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t382, ptr %a383 %t384 = call i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8 %a383) %t385 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t384, 1 %t386 = load ptr, ptr %a1 %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8533, label %ok8534 -panic8533: - call void @finch_panic(ptr @.str.5697, i64 493, ptr @.str.5698) + br i1 %t387, label %panic8892, label %ok8893 +panic8892: + call void @finch_panic(ptr @.str.6163, i64 493, ptr @.str.6164) unreachable -ok8534: +ok8893: %t388 = getelementptr inbounds %S.cimport.Importer, ptr %t386, i32 0, i32 0 %t389 = getelementptr inbounds %S.cimport.CImports, ptr %t388, i32 0, i32 1 %t390 = load { ptr, i64, i64 }, ptr %a9 @@ -75685,62 +80535,62 @@ ok8534: %t396 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t395, i64 %t393 %t397 = load i32, ptr %a392 %t398 = icmp ne i32 %t397, 0 - br i1 %t398, label %map.new8535, label %map.have8536 -map.new8535: + br i1 %t398, label %map.new8894, label %map.have8895 +map.new8894: %t399 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 1 call void @finch_str_copy(ptr %t399, ptr %a391) %t400 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 2 store %S.cimport.CConst zeroinitializer, ptr %t400 - br label %map.have8536 -map.have8536: + br label %map.have8895 +map.have8895: %t401 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t396, i32 0, i32 2 store %S.cimport.CConst %t385, ptr %t401 - br label %endif8532 -endif8532: - br label %endif8527 -else8526: + br label %endif8891 +endif8891: + br label %endif8886 +else8885: %t402 = load i32, ptr %a13 %t403 = icmp eq i32 %t402, 501 - br i1 %t403, label %then8537, label %endif8539 -then8537: + br i1 %t403, label %then8896, label %endif8898 +then8896: %t404 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t404, ptr %a405 %t406 = call i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8 %a405) %t407 = icmp ne i32 %t406, 0 - br label %logic.from8540 -logic.from8540: - br i1 %t407, label %logic.end8542, label %logic.rhs8541 -logic.rhs8541: + br label %logic.from8899 +logic.from8899: + br i1 %t407, label %logic.end8901, label %logic.rhs8900 +logic.rhs8900: %t408 = load %S.C.CXCursor, ptr %a2 store %S.C.CXCursor %t408, ptr %a409 %t410 = call i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8 %a409) %t411 = icmp ne i32 %t410, 0 - br label %logic.rend8543 -logic.rend8543: - br label %logic.end8542 -logic.end8542: - %t412 = phi i1 [ true, %logic.from8540 ], [ %t411, %logic.rend8543 ] - br i1 %t412, label %then8544, label %endif8546 -then8544: + br label %logic.rend8902 +logic.rend8902: + br label %logic.end8901 +logic.end8901: + %t412 = phi i1 [ true, %logic.from8899 ], [ %t411, %logic.rend8902 ] + br i1 %t412, label %then8903, label %endif8905 +then8903: ret void -endif8546: +endif8905: %t413 = load ptr, ptr %a1 %t414 = load %S.C.CXCursor, ptr %a2 %t415 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t413, %S.C.CXCursor %t414) store %S.cimport.Number %t415, ptr %a416 %t417 = getelementptr inbounds %S.cimport.Number, ptr %a416, i32 0, i32 1 %t418 = load i1, ptr %t417 - br label %logic.from8547 -logic.from8547: - br i1 %t418, label %logic.rhs8548, label %logic.end8549 -logic.rhs8548: + br label %logic.from8906 +logic.from8906: + br i1 %t418, label %logic.rhs8907, label %logic.end8908 +logic.rhs8907: %t419 = load ptr, ptr %a1 %t420 = icmp eq ptr %t419, null - br i1 %t420, label %panic8550, label %ok8551 -panic8550: - call void @finch_panic(ptr @.str.5699, i64 500, ptr @.str.5700) + br i1 %t420, label %panic8909, label %ok8910 +panic8909: + call void @finch_panic(ptr @.str.6165, i64 500, ptr @.str.6166) unreachable -ok8551: +ok8910: %t421 = getelementptr inbounds %S.cimport.Importer, ptr %t419, i32 0, i32 0 %t422 = getelementptr inbounds %S.cimport.CImports, ptr %t421, i32 0, i32 1 %t423 = load { ptr, i64, i64 }, ptr %a9 @@ -75748,22 +80598,22 @@ ok8551: %t425 = call i64 @finch_map_find(ptr %t422, ptr %a424, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t426 = icmp sge i64 %t425, 0 %t427 = xor i1 %t426, true - br label %logic.rend8552 -logic.rend8552: - br label %logic.end8549 -logic.end8549: - %t428 = phi i1 [ false, %logic.from8547 ], [ %t427, %logic.rend8552 ] - br i1 %t428, label %then8553, label %endif8555 -then8553: + br label %logic.rend8911 +logic.rend8911: + br label %logic.end8908 +logic.end8908: + %t428 = phi i1 [ false, %logic.from8906 ], [ %t427, %logic.rend8911 ] + br i1 %t428, label %then8912, label %endif8914 +then8912: %t429 = getelementptr inbounds %S.cimport.Number, ptr %a416, i32 0, i32 0 %t430 = load %S.cimport.CConst, ptr %t429 %t431 = load ptr, ptr %a1 %t432 = icmp eq ptr %t431, null - br i1 %t432, label %panic8556, label %ok8557 -panic8556: - call void @finch_panic(ptr @.str.5701, i64 501, ptr @.str.5702) + br i1 %t432, label %panic8915, label %ok8916 +panic8915: + call void @finch_panic(ptr @.str.6167, i64 501, ptr @.str.6168) unreachable -ok8557: +ok8916: %t433 = getelementptr inbounds %S.cimport.Importer, ptr %t431, i32 0, i32 0 %t434 = getelementptr inbounds %S.cimport.CImports, ptr %t433, i32 0, i32 1 %t435 = load { ptr, i64, i64 }, ptr %a9 @@ -75775,35 +80625,35 @@ ok8557: %t441 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t440, i64 %t438 %t442 = load i32, ptr %a437 %t443 = icmp ne i32 %t442, 0 - br i1 %t443, label %map.new8558, label %map.have8559 -map.new8558: + br i1 %t443, label %map.new8917, label %map.have8918 +map.new8917: %t444 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 1 call void @finch_str_copy(ptr %t444, ptr %a436) %t445 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 2 store %S.cimport.CConst zeroinitializer, ptr %t445 - br label %map.have8559 -map.have8559: + br label %map.have8918 +map.have8918: %t446 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t441, i32 0, i32 2 store %S.cimport.CConst %t430, ptr %a447 call void @finch.copy.S_cimport_CConst(ptr %a448, ptr %a447) %t449 = load %S.cimport.CConst, ptr %a448 store %S.cimport.CConst %t449, ptr %t446 - br label %endif8555 -endif8555: - br label %endif8539 -endif8539: - br label %endif8527 -endif8527: - br label %endif8524 -endif8524: - br label %endif8501 -endif8501: - br label %endif8482 -endif8482: - br label %endif8441 -endif8441: - br label %endif8410 -endif8410: + br label %endif8914 +endif8914: + br label %endif8898 +endif8898: + br label %endif8886 +endif8886: + br label %endif8883 +endif8883: + br label %endif8860 +endif8860: + br label %endif8841 +endif8841: + br label %endif8800 +endif8800: + br label %endif8769 +endif8769: ret void } @@ -75925,8 +80775,8 @@ entry: %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t8 = load i64, ptr %t7 %t9 = icmp eq i64 %t8, 0 - br i1 %t9, label %then8560, label %endif8562 -then8560: + br i1 %t9, label %then8919, label %endif8921 +then8919: %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 %t11 = load %S.cimport.CImports, ptr %t10 store %S.cimport.CImports %t11, ptr %a12 @@ -75935,15 +80785,15 @@ then8560: %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif8562: +endif8921: %t17 = mul i64 3, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) %t18 = call ptr @finch_alloc(i64 %t17) %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 0 - store { ptr, i64, i64 } { ptr @.str.5703, i64 2, i64 0 }, ptr %t19 + store { ptr, i64, i64 } { ptr @.str.6169, i64 2, i64 0 }, ptr %t19 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.5704, i64 1, i64 0 }, ptr %t20 + store { ptr, i64, i64 } { ptr @.str.6170, i64 1, i64 0 }, ptr %t20 %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.5705, i64 10, i64 0 }, ptr %t21 + store { ptr, i64, i64 } { ptr @.str.6171, i64 10, i64 0 }, ptr %t21 %t22 = insertvalue { ptr, i64, i64 } undef, ptr %t18, 0 %t23 = insertvalue { ptr, i64, i64 } %t22, i64 3, 1 %t24 = insertvalue { ptr, i64, i64 } %t23, i64 3, 2 @@ -75951,11 +80801,11 @@ endif8562: %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 %t27 = load i64, ptr %t26 %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then8563, label %endif8565 -then8563: + br i1 %t28, label %then8922, label %endif8924 +then8922: %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5706, i64 9, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6172, i64 9, i64 0 }, ptr %a32 store { ptr, i64, i64 } %t30, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 @@ -75966,37 +80816,37 @@ then8563: %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 %t35 store { ptr, i64, i64 } %t34, ptr %t38 store i64 %t36, ptr %t29 - br label %endif8565 -endif8565: + br label %endif8924 +endif8924: %t39 = load i1, ptr %a4 - br i1 %t39, label %then8566, label %endif8568 -then8566: + br i1 %t39, label %then8925, label %endif8927 +then8925: %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 %t41 = load i64, ptr %t40 %t42 = add i64 %t41, 1 call void @finch_arr_reserve(ptr %a25, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) %t43 = load ptr, ptr %a25 %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } { ptr @.str.5707, i64 19, i64 0 }, ptr %t44 + store { ptr, i64, i64 } { ptr @.str.6173, i64 19, i64 0 }, ptr %t44 store i64 %t42, ptr %t40 - br label %endif8568 -endif8568: + br label %endif8927 +endif8927: store i64 0, ptr %a45 - br label %each.cond8569 -each.cond8569: + br label %each.cond8928 +each.cond8928: %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 %t47 = load i64, ptr %t46 %t48 = load i64, ptr %a45 %t49 = icmp slt i64 %t48, %t47 - br i1 %t49, label %each.body8570, label %each.end8572 -each.body8570: + br i1 %t49, label %each.body8929, label %each.end8931 +each.body8929: %t50 = load ptr, ptr %a2 %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 %t52 = load { ptr, i64, i64 }, ptr %t51 store { ptr, i64, i64 } %t52, ptr %a53 %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.5708, i64 2, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6174, i64 2, i64 0 }, ptr %a57 store { ptr, i64, i64 } %t55, ptr %a58 call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) %t59 = load { ptr, i64, i64 }, ptr %a56 @@ -76007,25 +80857,25 @@ each.body8570: %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 %t60 store { ptr, i64, i64 } %t59, ptr %t63 store i64 %t61, ptr %t54 - br label %each.step8571 -each.step8571: + br label %each.step8930 +each.step8930: %t64 = load i64, ptr %a45 %t65 = add i64 %t64, 1 store i64 %t65, ptr %a45 - br label %each.cond8569 -each.end8572: + br label %each.cond8928 +each.end8931: %t66 = load { ptr, i64, i64 }, ptr %a5 %t67 = call { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %t66) store { ptr, i64, i64 } %t67, ptr %a68 store i64 0, ptr %a69 - br label %each.cond8573 -each.cond8573: + br label %each.cond8932 +each.cond8932: %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a68, i32 0, i32 1 %t71 = load i64, ptr %t70 %t72 = load i64, ptr %a69 %t73 = icmp slt i64 %t72, %t71 - br i1 %t73, label %each.body8574, label %each.end8576 -each.body8574: + br i1 %t73, label %each.body8933, label %each.end8935 +each.body8933: %t74 = load ptr, ptr %a68 %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 %t72 %t76 = load { ptr, i64, i64 }, ptr %t75 @@ -76042,39 +80892,39 @@ each.body8574: %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 store { ptr, i64, i64 } %t82, ptr %t86 store i64 %t84, ptr %t78 - br label %each.step8575 -each.step8575: + br label %each.step8934 +each.step8934: %t87 = load i64, ptr %a69 %t88 = add i64 %t87, 1 store i64 %t88, ptr %a69 - br label %each.cond8573 -each.end8576: + br label %each.cond8932 +each.end8935: store { ptr, i64, i64 } zeroinitializer, ptr %a89 %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 %t91 = load i64, ptr %t90 store i64 0, ptr %a92 - br label %for.cond8577 -for.cond8577: + br label %for.cond8936 +for.cond8936: %t93 = load i64, ptr %a92 %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body8578, label %for.end8580 -for.body8578: + br i1 %t94, label %for.body8937, label %for.end8939 +for.body8937: %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 %t96 = load i64, ptr %a92 %t97 = load { ptr, i64, i64 }, ptr %a25 %t98 = extractvalue { ptr, i64, i64 } %t97, 1 %t99 = icmp uge i64 %t96, %t98 - br i1 %t99, label %range8581, label %inrange8582 -range8581: - call void @finch_panic_index(ptr @.str.5709, i64 528, i64 %t96, i64 %t98) + br i1 %t99, label %range8940, label %inrange8941 +range8940: + call void @finch_panic_index(ptr @.str.6175, i64 528, i64 %t96, i64 %t98) unreachable -inrange8582: +inrange8941: %t100 = extractvalue { ptr, i64, i64 } %t97, 0 %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t96 %t102 = load { ptr, i64, i64 }, ptr %t101 %t103 = extractvalue { ptr, i64, i64 } %t102, 0 %t104 = icmp eq ptr %t103, null - %t105 = select i1 %t104, ptr @.str.5710, ptr %t103 + %t105 = select i1 %t104, ptr @.str.6176, ptr %t103 %t106 = load i64, ptr %t95 %t107 = add i64 %t106, 1 call void @finch_arr_reserve(ptr %a89, i64 %t107, i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64)) @@ -76082,47 +80932,47 @@ inrange8582: %t109 = getelementptr inbounds ptr, ptr %t108, i64 %t106 store ptr %t105, ptr %t109 store i64 %t107, ptr %t95 - br label %for.step8579 -for.step8579: + br label %for.step8938 +for.step8938: %t110 = load i64, ptr %a92 %t111 = add i64 %t110, 1 store i64 %t111, ptr %a92 - br label %for.cond8577 -for.end8580: + br label %for.cond8936 +for.end8939: %t112 = call ptr @clang_createIndex(i32 0, i32 0) store ptr %t112, ptr %a113 store i64 0, ptr %a114 - br label %each.cond8583 -each.cond8583: + br label %each.cond8942 +each.cond8942: %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t116 = load i64, ptr %t115 %t117 = load i64, ptr %a114 %t118 = icmp slt i64 %t117, %t116 - br i1 %t118, label %each.body8584, label %each.end8586 -each.body8584: + br i1 %t118, label %each.body8943, label %each.end8945 +each.body8943: %t119 = load ptr, ptr %a1 %t120 = getelementptr inbounds %S.cimport.Header, ptr %t119, i64 %t117 %t121 = load %S.cimport.Header, ptr %t120 store %S.cimport.Header %t121, ptr %a122 %t123 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } { ptr @.str.5711, i64 10, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6177, i64 10, i64 0 }, ptr %a126 store { ptr, i64, i64 } %t124, ptr %a127 call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) %t128 = load { ptr, i64, i64 }, ptr %a125 store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.6178, i64 2, i64 0 }, ptr %a131 call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) %t132 = load { ptr, i64, i64 }, ptr %a129 store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = extractvalue { ptr, i64, i64 } { ptr @.str.5713, i64 14, i64 0 }, 0 + %t134 = extractvalue { ptr, i64, i64 } { ptr @.str.6179, i64 14, i64 0 }, 0 %t135 = icmp eq ptr %t134, null - %t136 = select i1 %t135, ptr @.str.5714, ptr %t134 + %t136 = select i1 %t135, ptr @.str.6180, ptr %t134 %t137 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t136, 0 %t138 = load { ptr, i64, i64 }, ptr %a133 %t139 = extractvalue { ptr, i64, i64 } %t138, 0 %t140 = icmp eq ptr %t139, null - %t141 = select i1 %t140, ptr @.str.5715, ptr %t139 + %t141 = select i1 %t140, ptr @.str.6181, ptr %t139 %t142 = insertvalue %S.C.CXUnsavedFile %t137, ptr %t141, 1 %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a133, i32 0, i32 1 %t144 = load i64, ptr %t143 @@ -76132,9 +80982,9 @@ each.body8584: %t148 = or i64 1, 64 store i64 %t148, ptr %a149 %t150 = load ptr, ptr %a113 - %t151 = extractvalue { ptr, i64, i64 } { ptr @.str.5716, i64 14, i64 0 }, 0 + %t151 = extractvalue { ptr, i64, i64 } { ptr @.str.6182, i64 14, i64 0 }, 0 %t152 = icmp eq ptr %t151, null - %t153 = select i1 %t152, ptr @.str.5717, ptr %t151 + %t153 = select i1 %t152, ptr @.str.6183, ptr %t151 %t154 = load { ptr, i64, i64 }, ptr %a89 %t155 = extractvalue { ptr, i64, i64 } %t154, 0 %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 @@ -76146,23 +80996,23 @@ each.body8584: store i32 %t161, ptr %a162 %t163 = load i32, ptr %a162 %t164 = icmp ne i32 %t163, 0 - br label %logic.from8587 -logic.from8587: - br i1 %t164, label %logic.end8589, label %logic.rhs8588 -logic.rhs8588: + br label %logic.from8946 +logic.from8946: + br i1 %t164, label %logic.end8948, label %logic.rhs8947 +logic.rhs8947: %t165 = load ptr, ptr %a147 %t166 = icmp eq ptr %t165, null - br label %logic.rend8590 -logic.rend8590: - br label %logic.end8589 -logic.end8589: - %t167 = phi i1 [ true, %logic.from8587 ], [ %t166, %logic.rend8590 ] - br i1 %t167, label %then8591, label %endif8593 -then8591: + br label %logic.rend8949 +logic.rend8949: + br label %logic.end8948 +logic.end8948: + %t167 = phi i1 [ true, %logic.from8946 ], [ %t166, %logic.rend8949 ] + br i1 %t167, label %then8950, label %endif8952 +then8950: %t168 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 %t169 = load { ptr, i64, i64 }, ptr %t168 store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5718, i64 33, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6184, i64 33, i64 0 }, ptr %a172 call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) %t173 = load { ptr, i64, i64 }, ptr %a170 %t174 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 @@ -76172,24 +81022,24 @@ then8591: call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) %t179 = load { ptr, i64, i64 }, ptr %a176 store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5719, i64 1, i64 0 }, ptr %a182 + store { ptr, i64, i64 } { ptr @.str.6185, i64 1, i64 0 }, ptr %a182 call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) %t183 = load { ptr, i64, i64 }, ptr %a180 %t184 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t183, 2 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t184 -endif8593: +endif8952: %t185 = load ptr, ptr %a147 %t186 = call i32 @clang_getNumDiagnostics(ptr %t185) %t187 = zext i32 %t186 to i64 store i64 %t187, ptr %a188 %t189 = load i64, ptr %a188 store i64 0, ptr %a190 - br label %for.cond8594 -for.cond8594: + br label %for.cond8953 +for.cond8953: %t191 = load i64, ptr %a190 %t192 = icmp slt i64 %t191, %t189 - br i1 %t192, label %for.body8595, label %for.end8597 -for.body8595: + br i1 %t192, label %for.body8954, label %for.end8956 +for.body8954: %t193 = load ptr, ptr %a147 %t194 = load i64, ptr %a190 %t195 = trunc i64 %t194 to i32 @@ -76198,8 +81048,8 @@ for.body8595: %t198 = load ptr, ptr %a197 %t199 = call i32 @clang_getDiagnosticSeverity(ptr %t198) %t200 = icmp sge i32 %t199, 3 - br i1 %t200, label %then8598, label %endif8600 -then8598: + br i1 %t200, label %then8957, label %endif8959 +then8957: %t201 = load ptr, ptr %a197 %t202 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t201) store { i64, i64 } %t202, ptr %a203 @@ -76210,24 +81060,24 @@ then8598: call void @clang_disposeDiagnostic(ptr %t207) %t208 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5721, i64 14, i64 0 }, ptr %a211 + store { ptr, i64, i64 } { ptr @.str.6187, i64 14, i64 0 }, ptr %a211 %t212 = call i64 @finch_str_find(ptr %a209, ptr %a211) %t213 = icmp sge i64 %t212, 0 - br i1 %t213, label %then8601, label %endif8603 -then8601: + br i1 %t213, label %then8960, label %endif8962 +then8960: %t214 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t214, ptr %a215 %t217 = load { ptr, i64, i64 }, ptr %a206 store { ptr, i64, i64 } %t217, ptr %a218 %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %a206, i32 0, i32 1 %t221 = load i64, ptr %t220 - call void @finch_str_sub(ptr %a219, ptr %a218, i64 1, i64 %t221, ptr @.str.5723, i64 548) + call void @finch_str_sub(ptr %a219, ptr %a218, i64 1, i64 %t221, ptr @.str.6189, i64 548) %t222 = load { ptr, i64, i64 }, ptr %a219 store { ptr, i64, i64 } %t222, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.5725, i64 1, i64 0 }, ptr %a225 + store { ptr, i64, i64 } { ptr @.str.6191, i64 1, i64 0 }, ptr %a225 %t226 = call i64 @finch_str_find(ptr %a223, ptr %a225) %t227 = add i64 %t226, 1 - call void @finch_str_sub(ptr %a216, ptr %a215, i64 1, i64 %t227, ptr @.str.5722, i64 548) + call void @finch_str_sub(ptr %a216, ptr %a215, i64 1, i64 %t227, ptr @.str.6188, i64 548) %t228 = load { ptr, i64, i64 }, ptr %a216 store { ptr, i64, i64 } %t228, ptr %a229 %t230 = load { ptr, i64, i64 }, ptr %a229 @@ -76237,12 +81087,12 @@ then8601: store { ptr, i64, i64 } %t232, ptr %a234 %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then8604, label %endif8606 -then8604: + br i1 %t236, label %then8963, label %endif8965 +then8963: %t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 %t238 = load { ptr, i64, i64 }, ptr %t237 store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.5726, i64 34, i64 0 }, ptr %a241 + store { ptr, i64, i64 } { ptr @.str.6192, i64 34, i64 0 }, ptr %a241 call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) %t242 = load { ptr, i64, i64 }, ptr %a239 %t243 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 @@ -76252,16 +81102,16 @@ then8604: call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) %t248 = load { ptr, i64, i64 }, ptr %a245 store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5727, i64 1, i64 0 }, ptr %a251 + store { ptr, i64, i64 } { ptr @.str.6193, i64 1, i64 0 }, ptr %a251 call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) %t252 = load { ptr, i64, i64 }, ptr %a249 %t253 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t252, 2 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t253 -endif8606: +endif8965: %t254 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 %t255 = load { ptr, i64, i64 }, ptr %t254 store { ptr, i64, i64 } %t255, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.5728, i64 34, i64 0 }, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6194, i64 34, i64 0 }, ptr %a258 call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) %t259 = load { ptr, i64, i64 }, ptr %a256 %t260 = load { ptr, i64, i64 }, ptr %a229 @@ -76270,7 +81120,7 @@ endif8606: call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) %t264 = load { ptr, i64, i64 }, ptr %a261 store { ptr, i64, i64 } %t264, ptr %a266 - store { ptr, i64, i64 } { ptr @.str.5729, i64 10, i64 0 }, ptr %a267 + store { ptr, i64, i64 } { ptr @.str.6195, i64 10, i64 0 }, ptr %a267 call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) %t268 = load { ptr, i64, i64 }, ptr %a265 %t269 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 @@ -76280,16 +81130,16 @@ endif8606: call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) %t274 = load { ptr, i64, i64 }, ptr %a271 store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.5730, i64 60, i64 0 }, ptr %a277 + store { ptr, i64, i64 } { ptr @.str.6196, i64 60, i64 0 }, ptr %a277 call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) %t278 = load { ptr, i64, i64 }, ptr %a275 %t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279 -endif8603: +endif8962: %t280 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 %t281 = load { ptr, i64, i64 }, ptr %t280 store { ptr, i64, i64 } %t281, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.5731, i64 19, i64 0 }, ptr %a284 + store { ptr, i64, i64 } { ptr @.str.6197, i64 19, i64 0 }, ptr %a284 call void @finch_str_concat(ptr %a282, ptr %a283, ptr %a284) %t285 = load { ptr, i64, i64 }, ptr %a282 %t286 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 @@ -76299,7 +81149,7 @@ endif8603: call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) %t291 = load { ptr, i64, i64 }, ptr %a288 store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.5732, i64 16, i64 0 }, ptr %a294 + store { ptr, i64, i64 } { ptr @.str.6198, i64 16, i64 0 }, ptr %a294 call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) %t295 = load { ptr, i64, i64 }, ptr %a292 %t296 = load { ptr, i64, i64 }, ptr %a206 @@ -76309,16 +81159,16 @@ endif8603: %t300 = load { ptr, i64, i64 }, ptr %a297 %t301 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t300, 2 ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t301 -endif8600: +endif8959: %t302 = load ptr, ptr %a197 call void @clang_disposeDiagnostic(ptr %t302) - br label %for.step8596 -for.step8596: + br label %for.step8955 +for.step8955: %t303 = load i64, ptr %a190 %t304 = add i64 %t303, 1 store i64 %t304, ptr %a190 - br label %for.cond8594 -for.end8597: + br label %for.cond8953 +for.end8956: %t305 = load ptr, ptr %a147 %t306 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 store ptr %t305, ptr %t306 @@ -76336,13 +81186,13 @@ for.end8597: %t317 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a316, ptr @finch.c.cimport.visitTop, ptr %a6) %t318 = load ptr, ptr %a147 call void @clang_disposeTranslationUnit(ptr %t318) - br label %each.step8585 -each.step8585: + br label %each.step8944 +each.step8944: %t319 = load i64, ptr %a114 %t320 = add i64 %t319, 1 store i64 %t320, ptr %a114 - br label %each.cond8583 -each.end8586: + br label %each.cond8942 +each.end8945: %t321 = load ptr, ptr %a113 call void @clang_disposeIndex(ptr %t321) %t322 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 @@ -76373,18 +81223,18 @@ entry: call void @finch_str_trim(ptr %a4, ptr %a3) %t5 = load { ptr, i64, i64 }, ptr %a4 store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.5735, i64 1, i64 0 }, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6201, i64 1, i64 0 }, ptr %a8 call void @finch_str_split(ptr %a9, ptr %a6, ptr %a8) %t10 = load { ptr, i64, i64 }, ptr %a9 store { ptr, i64, i64 } %t10, ptr %a11 %t12 = load { ptr, i64, i64 }, ptr %a11 %t13 = extractvalue { ptr, i64, i64 } %t12, 1 %t14 = icmp uge i64 0, %t13 - br i1 %t14, label %range8607, label %inrange8608 -range8607: - call void @finch_panic_index(ptr @.str.5736, i64 20, i64 0, i64 %t13) + br i1 %t14, label %range8966, label %inrange8967 +range8966: + call void @finch_panic_index(ptr @.str.6202, i64 20, i64 0, i64 %t13) unreachable -inrange8608: +inrange8967: %t15 = extractvalue { ptr, i64, i64 } %t12, 0 %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 0 %t17 = load { ptr, i64, i64 }, ptr %t16 @@ -76420,14 +81270,14 @@ entry: %a35 = alloca { ptr, i64, i64 }, align 16 %a38 = alloca { ptr, i64, i64 }, align 16 %a39 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } { ptr @.str.5738, i64 21, i64 0 }, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6204, i64 21, i64 0 }, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5739, i64 22, i64 0 }, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6205, i64 22, i64 0 }, ptr %a4 store { ptr, i64, i64 } %t2, ptr %a5 call void @finch_str_concat(ptr %a3, ptr %a4, ptr %a5) %t6 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t6, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5740, i64 14, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6206, i64 14, i64 0 }, ptr %a9 call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) %t10 = load { ptr, i64, i64 }, ptr %a7 store { ptr, i64, i64 } %t10, ptr %a12 @@ -76441,24 +81291,24 @@ entry: %t19 = icmp eq i32 %t18, 0 %t20 = load { ptr, i64, i64 }, ptr %a17 %t21 = load { ptr, i64, i64 }, ptr %a16 - br i1 %t19, label %or.failed8609, label %or.ok8610 -or.failed8609: + br i1 %t19, label %or.failed8968, label %or.ok8969 +or.failed8968: store { ptr, i64, i64 } %t20, ptr %a22 - br label %or.bend8611 -or.bend8611: - br label %or.end8612 -or.ok8610: - br label %or.end8612 -or.end8612: - %t23 = phi { ptr, i64, i64 } [ { ptr @.str.5741, i64 0, i64 0 }, %or.bend8611 ], [ %t21, %or.ok8610 ] + br label %or.bend8970 +or.bend8970: + br label %or.end8971 +or.ok8969: + br label %or.end8971 +or.end8971: + %t23 = phi { ptr, i64, i64 } [ { ptr @.str.6207, i64 0, i64 0 }, %or.bend8970 ], [ %t21, %or.ok8969 ] store { ptr, i64, i64 } %t23, ptr %a24 %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5742, i64 7, i64 0 }, ptr %a27 + store { ptr, i64, i64 } { ptr @.str.6208, i64 7, i64 0 }, ptr %a27 store { ptr, i64, i64 } %t25, ptr %a28 call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) %t29 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.5743, i64 1, i64 0 }, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6209, i64 1, i64 0 }, ptr %a32 call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) %t33 = load { ptr, i64, i64 }, ptr %a30 store { ptr, i64, i64 } %t33, ptr %a35 @@ -76470,10 +81320,10 @@ or.end8612: %t40 = load { ptr, i64, i64 }, ptr %a39 %t41 = extractvalue { ptr, i64, i64 } %t40, 1 %t42 = icmp eq i64 %t41, 0 - br i1 %t42, label %then8613, label %endif8615 -then8613: - ret { ptr, i64, i64 } { ptr @.str.5745, i64 24, i64 0 } -endif8615: + br i1 %t42, label %then8972, label %endif8974 +then8972: + ret { ptr, i64, i64 } { ptr @.str.6211, i64 24, i64 0 } +endif8974: %t43 = load { ptr, i64, i64 }, ptr %a24 %t44 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t43) ret { ptr, i64, i64 } %t44 @@ -76575,117 +81425,117 @@ entry: %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t10 = load i64, ptr %t9 %t11 = icmp eq i64 %t10, 0 - br i1 %t11, label %then8616, label %else8617 -then8616: + br i1 %t11, label %then8975, label %else8976 +then8975: %t12 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t12, ptr %a13 call void @finch_str_copy(ptr %a14, ptr %a13) %t15 = load { ptr, i64, i64 }, ptr %a14 store { ptr, i64, i64 } %t15, ptr %a8 - br label %endif8618 -else8617: + br label %endif8977 +else8976: %t16 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.5746, i64 7, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.6212, i64 7, i64 0 }, ptr %a18 %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) %t20 = icmp ne i32 %t19, 0 - br i1 %t20, label %then8619, label %else8620 -then8619: - store { ptr, i64, i64 } { ptr @.str.5747, i64 18, i64 0 }, ptr %a8 - br label %endif8621 -else8620: + br i1 %t20, label %then8978, label %else8979 +then8978: + store { ptr, i64, i64 } { ptr @.str.6213, i64 18, i64 0 }, ptr %a8 + br label %endif8980 +else8979: %t21 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.5748, i64 5, i64 0 }, ptr %a23 + store { ptr, i64, i64 } { ptr @.str.6214, i64 5, i64 0 }, ptr %a23 %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) %t25 = icmp ne i32 %t24, 0 - br i1 %t25, label %then8622, label %else8623 -then8622: - store { ptr, i64, i64 } { ptr @.str.5749, i64 24, i64 0 }, ptr %a8 - br label %endif8624 -else8623: + br i1 %t25, label %then8981, label %else8982 +then8981: + store { ptr, i64, i64 } { ptr @.str.6215, i64 24, i64 0 }, ptr %a8 + br label %endif8983 +else8982: %t26 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.5750, i64 5, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6216, i64 5, i64 0 }, ptr %a28 %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) %t30 = icmp ne i32 %t29, 0 - br label %logic.from8625 -logic.from8625: - br i1 %t30, label %logic.end8627, label %logic.rhs8626 -logic.rhs8626: + br label %logic.from8984 +logic.from8984: + br i1 %t30, label %logic.end8986, label %logic.rhs8985 +logic.rhs8985: %t31 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5751, i64 7, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.6217, i64 7, i64 0 }, ptr %a33 %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) %t35 = icmp ne i32 %t34, 0 - br label %logic.rend8628 -logic.rend8628: - br label %logic.end8627 -logic.end8627: - %t36 = phi i1 [ true, %logic.from8625 ], [ %t35, %logic.rend8628 ] - br label %logic.from8629 -logic.from8629: - br i1 %t36, label %logic.end8631, label %logic.rhs8630 -logic.rhs8630: + br label %logic.rend8987 +logic.rend8987: + br label %logic.end8986 +logic.end8986: + %t36 = phi i1 [ true, %logic.from8984 ], [ %t35, %logic.rend8987 ] + br label %logic.from8988 +logic.from8988: + br i1 %t36, label %logic.end8990, label %logic.rhs8989 +logic.rhs8989: %t37 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.5752, i64 11, i64 0 }, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6218, i64 11, i64 0 }, ptr %a39 %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) %t41 = icmp ne i32 %t40, 0 - br label %logic.rend8632 -logic.rend8632: - br label %logic.end8631 -logic.end8631: - %t42 = phi i1 [ true, %logic.from8629 ], [ %t41, %logic.rend8632 ] - br i1 %t42, label %then8633, label %else8634 -then8633: - store { ptr, i64, i64 } { ptr @.str.5753, i64 25, i64 0 }, ptr %a8 - br label %endif8635 -else8634: + br label %logic.rend8991 +logic.rend8991: + br label %logic.end8990 +logic.end8990: + %t42 = phi i1 [ true, %logic.from8988 ], [ %t41, %logic.rend8991 ] + br i1 %t42, label %then8992, label %else8993 +then8992: + store { ptr, i64, i64 } { ptr @.str.6219, i64 25, i64 0 }, ptr %a8 + br label %endif8994 +else8993: %t43 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.5754, i64 5, i64 0 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6220, i64 5, i64 0 }, ptr %a45 %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) %t47 = icmp ne i32 %t46, 0 - br i1 %t47, label %then8636, label %endif8638 -then8636: + br i1 %t47, label %then8995, label %endif8997 +then8995: %t48 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.5756, i64 7, i64 0 }, ptr %a51 + store { ptr, i64, i64 } { ptr @.str.6222, i64 7, i64 0 }, ptr %a51 %t52 = call i32 @finch_str_starts(ptr %a49, ptr %a51) %t53 = icmp ne i32 %t52, 0 - br label %logic.from8639 -logic.from8639: - br i1 %t53, label %logic.end8641, label %logic.rhs8640 -logic.rhs8640: + br label %logic.from8998 +logic.from8998: + br i1 %t53, label %logic.end9000, label %logic.rhs8999 +logic.rhs8999: %t54 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.5758, i64 5, i64 0 }, ptr %a57 + store { ptr, i64, i64 } { ptr @.str.6224, i64 5, i64 0 }, ptr %a57 %t58 = call i32 @finch_str_starts(ptr %a55, ptr %a57) %t59 = icmp ne i32 %t58, 0 - br label %logic.rend8642 -logic.rend8642: - br label %logic.end8641 -logic.end8641: - %t60 = phi i1 [ true, %logic.from8639 ], [ %t59, %logic.rend8642 ] - br i1 %t60, label %then8643, label %else8644 -then8643: - store { ptr, i64, i64 } { ptr @.str.5759, i64 24, i64 0 }, ptr %a8 - br label %endif8645 -else8644: - store { ptr, i64, i64 } { ptr @.str.5760, i64 25, i64 0 }, ptr %a8 - br label %endif8645 -endif8645: - br label %endif8638 -endif8638: - br label %endif8635 -endif8635: - br label %endif8624 -endif8624: - br label %endif8621 -endif8621: - br label %endif8618 -endif8618: + br label %logic.rend9001 +logic.rend9001: + br label %logic.end9000 +logic.end9000: + %t60 = phi i1 [ true, %logic.from8998 ], [ %t59, %logic.rend9001 ] + br i1 %t60, label %then9002, label %else9003 +then9002: + store { ptr, i64, i64 } { ptr @.str.6225, i64 24, i64 0 }, ptr %a8 + br label %endif9004 +else9003: + store { ptr, i64, i64 } { ptr @.str.6226, i64 25, i64 0 }, ptr %a8 + br label %endif9004 +endif9004: + br label %endif8997 +endif8997: + br label %endif8994 +endif8994: + br label %endif8983 +endif8983: + br label %endif8980 +endif8980: + br label %endif8977 +endif8977: %t61 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t61, ptr %a62 call void @finch_str_copy(ptr %a63, ptr %a62) @@ -76694,199 +81544,199 @@ endif8618: store %S.platform.Target %t65, ptr %a66 %t67 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5762, i64 7, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.6228, i64 7, i64 0 }, ptr %a70 %t71 = call i64 @finch_str_find(ptr %a68, ptr %a70) %t72 = icmp sge i64 %t71, 0 - br label %logic.from8646 -logic.from8646: - br i1 %t72, label %logic.end8648, label %logic.rhs8647 -logic.rhs8647: + br label %logic.from9005 +logic.from9005: + br i1 %t72, label %logic.end9007, label %logic.rhs9006 +logic.rhs9006: %t73 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.5764, i64 5, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6230, i64 5, i64 0 }, ptr %a76 %t77 = call i64 @finch_str_find(ptr %a74, ptr %a76) %t78 = icmp sge i64 %t77, 0 - br label %logic.rend8649 -logic.rend8649: - br label %logic.end8648 -logic.end8648: - %t79 = phi i1 [ true, %logic.from8646 ], [ %t78, %logic.rend8649 ] - br label %logic.from8650 -logic.from8650: - br i1 %t79, label %logic.end8652, label %logic.rhs8651 -logic.rhs8651: + br label %logic.rend9008 +logic.rend9008: + br label %logic.end9007 +logic.end9007: + %t79 = phi i1 [ true, %logic.from9005 ], [ %t78, %logic.rend9008 ] + br label %logic.from9009 +logic.from9009: + br i1 %t79, label %logic.end9011, label %logic.rhs9010 +logic.rhs9010: %t80 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.5766, i64 4, i64 0 }, ptr %a83 + store { ptr, i64, i64 } { ptr @.str.6232, i64 4, i64 0 }, ptr %a83 %t84 = call i64 @finch_str_find(ptr %a81, ptr %a83) %t85 = icmp sge i64 %t84, 0 - br label %logic.rend8653 -logic.rend8653: - br label %logic.end8652 -logic.end8652: - %t86 = phi i1 [ true, %logic.from8650 ], [ %t85, %logic.rend8653 ] - br label %logic.from8654 -logic.from8654: - br i1 %t86, label %logic.end8656, label %logic.rhs8655 -logic.rhs8655: + br label %logic.rend9012 +logic.rend9012: + br label %logic.end9011 +logic.end9011: + %t86 = phi i1 [ true, %logic.from9009 ], [ %t85, %logic.rend9012 ] + br label %logic.from9013 +logic.from9013: + br i1 %t86, label %logic.end9015, label %logic.rhs9014 +logic.rhs9014: %t87 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.5768, i64 5, i64 0 }, ptr %a90 + store { ptr, i64, i64 } { ptr @.str.6234, i64 5, i64 0 }, ptr %a90 %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) %t92 = icmp sge i64 %t91, 0 - br label %logic.rend8657 -logic.rend8657: - br label %logic.end8656 -logic.end8656: - %t93 = phi i1 [ true, %logic.from8654 ], [ %t92, %logic.rend8657 ] + br label %logic.rend9016 +logic.rend9016: + br label %logic.end9015 +logic.end9015: + %t93 = phi i1 [ true, %logic.from9013 ], [ %t92, %logic.rend9016 ] %t94 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 store i1 %t93, ptr %t94 %t95 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.5770, i64 4, i64 0 }, ptr %a98 + store { ptr, i64, i64 } { ptr @.str.6236, i64 4, i64 0 }, ptr %a98 %t99 = call i64 @finch_str_find(ptr %a96, ptr %a98) %t100 = icmp sge i64 %t99, 0 %t101 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 2 store i1 %t100, ptr %t101 %t102 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.5772, i64 5, i64 0 }, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.6238, i64 5, i64 0 }, ptr %a105 %t106 = call i64 @finch_str_find(ptr %a103, ptr %a105) %t107 = icmp sge i64 %t106, 0 - br label %logic.from8658 -logic.from8658: - br i1 %t107, label %logic.end8660, label %logic.rhs8659 -logic.rhs8659: + br label %logic.from9017 +logic.from9017: + br i1 %t107, label %logic.end9019, label %logic.rhs9018 +logic.rhs9018: %t108 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.5774, i64 6, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.6240, i64 6, i64 0 }, ptr %a111 %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) %t113 = icmp sge i64 %t112, 0 - br label %logic.rend8661 -logic.rend8661: - br label %logic.end8660 -logic.end8660: - %t114 = phi i1 [ true, %logic.from8658 ], [ %t113, %logic.rend8661 ] - br label %logic.from8662 -logic.from8662: - br i1 %t114, label %logic.end8664, label %logic.rhs8663 -logic.rhs8663: + br label %logic.rend9020 +logic.rend9020: + br label %logic.end9019 +logic.end9019: + %t114 = phi i1 [ true, %logic.from9017 ], [ %t113, %logic.rend9020 ] + br label %logic.from9021 +logic.from9021: + br i1 %t114, label %logic.end9023, label %logic.rhs9022 +logic.rhs9022: %t115 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t115, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5776, i64 5, i64 0 }, ptr %a118 + store { ptr, i64, i64 } { ptr @.str.6242, i64 5, i64 0 }, ptr %a118 %t119 = call i64 @finch_str_find(ptr %a116, ptr %a118) %t120 = icmp sge i64 %t119, 0 - br label %logic.rend8665 -logic.rend8665: - br label %logic.end8664 -logic.end8664: - %t121 = phi i1 [ true, %logic.from8662 ], [ %t120, %logic.rend8665 ] + br label %logic.rend9024 +logic.rend9024: + br label %logic.end9023 +logic.end9023: + %t121 = phi i1 [ true, %logic.from9021 ], [ %t120, %logic.rend9024 ] %t122 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3 store i1 %t121, ptr %t122 %t123 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5778, i64 7, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6244, i64 7, i64 0 }, ptr %a126 %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) %t128 = icmp ne i32 %t127, 0 - br label %logic.from8666 -logic.from8666: - br i1 %t128, label %logic.end8668, label %logic.rhs8667 -logic.rhs8667: + br label %logic.from9025 +logic.from9025: + br i1 %t128, label %logic.end9027, label %logic.rhs9026 +logic.rhs9026: %t129 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5780, i64 5, i64 0 }, ptr %a132 + store { ptr, i64, i64 } { ptr @.str.6246, i64 5, i64 0 }, ptr %a132 %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) %t134 = icmp ne i32 %t133, 0 - br label %logic.rend8669 -logic.rend8669: - br label %logic.end8668 -logic.end8668: - %t135 = phi i1 [ true, %logic.from8666 ], [ %t134, %logic.rend8669 ] + br label %logic.rend9028 +logic.rend9028: + br label %logic.end9027 +logic.end9027: + %t135 = phi i1 [ true, %logic.from9025 ], [ %t134, %logic.rend9028 ] %t136 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 store i1 %t135, ptr %t136 %t137 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.5782, i64 7, i64 0 }, ptr %a140 + store { ptr, i64, i64 } { ptr @.str.6248, i64 7, i64 0 }, ptr %a140 %t141 = call i32 @finch_str_starts(ptr %a138, ptr %a140) %t142 = icmp ne i32 %t141, 0 - br label %logic.from8670 -logic.from8670: - br i1 %t142, label %logic.end8672, label %logic.rhs8671 -logic.rhs8671: + br label %logic.from9029 +logic.from9029: + br i1 %t142, label %logic.end9031, label %logic.rhs9030 +logic.rhs9030: %t143 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.5784, i64 5, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.6250, i64 5, i64 0 }, ptr %a146 %t147 = call i32 @finch_str_starts(ptr %a144, ptr %a146) %t148 = icmp ne i32 %t147, 0 - br label %logic.rend8673 -logic.rend8673: - br label %logic.end8672 -logic.end8672: - %t149 = phi i1 [ true, %logic.from8670 ], [ %t148, %logic.rend8673 ] + br label %logic.rend9032 +logic.rend9032: + br label %logic.end9031 +logic.end9031: + %t149 = phi i1 [ true, %logic.from9029 ], [ %t148, %logic.rend9032 ] store i1 %t149, ptr %a150 %t151 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5786, i64 5, i64 0 }, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.6252, i64 5, i64 0 }, ptr %a154 %t155 = call i64 @finch_str_find(ptr %a152, ptr %a154) %t156 = icmp sge i64 %t155, 0 - br label %logic.from8674 -logic.from8674: - br i1 %t156, label %logic.end8676, label %logic.rhs8675 -logic.rhs8675: + br label %logic.from9033 +logic.from9033: + br i1 %t156, label %logic.end9035, label %logic.rhs9034 +logic.rhs9034: %t157 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5788, i64 6, i64 0 }, ptr %a160 + store { ptr, i64, i64 } { ptr @.str.6254, i64 6, i64 0 }, ptr %a160 %t161 = call i64 @finch_str_find(ptr %a158, ptr %a160) %t162 = icmp sge i64 %t161, 0 - br label %logic.rend8677 -logic.rend8677: - br label %logic.end8676 -logic.end8676: - %t163 = phi i1 [ true, %logic.from8674 ], [ %t162, %logic.rend8677 ] + br label %logic.rend9036 +logic.rend9036: + br label %logic.end9035 +logic.end9035: + %t163 = phi i1 [ true, %logic.from9033 ], [ %t162, %logic.rend9036 ] store i1 %t163, ptr %a164 %t165 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 %t166 = load i1, ptr %t165 - br label %logic.from8678 -logic.from8678: - br i1 %t166, label %logic.end8680, label %logic.rhs8679 -logic.rhs8679: + br label %logic.from9037 +logic.from9037: + br i1 %t166, label %logic.end9039, label %logic.rhs9038 +logic.rhs9038: %t167 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3 %t168 = load i1, ptr %t167 %t169 = load i1, ptr %a164 %t170 = icmp ne i1 %t168, %t169 - br label %logic.rend8681 -logic.rend8681: - br label %logic.end8680 -logic.end8680: - %t171 = phi i1 [ true, %logic.from8678 ], [ %t170, %logic.rend8681 ] - br label %logic.from8682 -logic.from8682: - br i1 %t171, label %logic.end8684, label %logic.rhs8683 -logic.rhs8683: + br label %logic.rend9040 +logic.rend9040: + br label %logic.end9039 +logic.end9039: + %t171 = phi i1 [ true, %logic.from9037 ], [ %t170, %logic.rend9040 ] + br label %logic.from9041 +logic.from9041: + br i1 %t171, label %logic.end9043, label %logic.rhs9042 +logic.rhs9042: %t172 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 %t173 = load i1, ptr %t172 %t174 = load i1, ptr %a150 %t175 = icmp ne i1 %t173, %t174 - br label %logic.rend8685 -logic.rend8685: - br label %logic.end8684 -logic.end8684: - %t176 = phi i1 [ true, %logic.from8682 ], [ %t175, %logic.rend8685 ] + br label %logic.rend9044 +logic.rend9044: + br label %logic.end9043 +logic.end9043: + %t176 = phi i1 [ true, %logic.from9041 ], [ %t175, %logic.rend9044 ] %t177 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 store i1 %t176, ptr %t177 %t178 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 6 - store { ptr, i64, i64 } { ptr @.str.5789, i64 0, i64 0 }, ptr %t178 + store { ptr, i64, i64 } { ptr @.str.6255, i64 0, i64 0 }, ptr %t178 %t179 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 %t180 = load i1, ptr %t179 - br i1 %t180, label %then8686, label %endif8688 -then8686: + br i1 %t180, label %then9045, label %endif9047 +then9045: %t181 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 6 - store { ptr, i64, i64 } { ptr @.str.5790, i64 4, i64 0 }, ptr %t181 - br label %endif8688 -endif8688: - %t182 = extractvalue { ptr, i64, i64 } { ptr @.str.5791, i64 8, i64 0 }, 0 + store { ptr, i64, i64 } { ptr @.str.6256, i64 4, i64 0 }, ptr %t181 + br label %endif9047 +endif9047: + %t182 = extractvalue { ptr, i64, i64 } { ptr @.str.6257, i64 8, i64 0 }, 0 %t183 = icmp eq ptr %t182, null - %t184 = select i1 %t183, ptr @.str.5792, ptr %t182 + %t184 = select i1 %t183, ptr @.str.6258, ptr %t182 %t185 = call ptr @getenv(ptr %t184) store { ptr, i64, i64 } zeroinitializer, ptr %a186 call void @finch_str_from_c(ptr %a186, ptr %t185) @@ -76898,141 +81748,141 @@ endif8688: %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %a191, i32 0, i32 1 %t193 = load i64, ptr %t192 %t194 = icmp sgt i64 %t193, 0 - br i1 %t194, label %then8689, label %else8690 -then8689: + br i1 %t194, label %then9048, label %else9049 +then9048: %t195 = load { ptr, i64, i64 }, ptr %a191 %t196 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 store { ptr, i64, i64 } %t195, ptr %a197 call void @finch_str_copy(ptr %a198, ptr %a197) %t199 = load { ptr, i64, i64 }, ptr %a198 store { ptr, i64, i64 } %t199, ptr %t196 - br label %endif8691 -else8690: + br label %endif9050 +else9049: %t200 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 %t201 = load i1, ptr %t200 - br label %logic.from8692 -logic.from8692: - br i1 %t201, label %logic.rhs8693, label %logic.end8694 -logic.rhs8693: + br label %logic.from9051 +logic.from9051: + br i1 %t201, label %logic.rhs9052, label %logic.end9053 +logic.rhs9052: %t202 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 %t203 = load i1, ptr %t202 - br label %logic.rend8695 -logic.rend8695: - br label %logic.end8694 -logic.end8694: - %t204 = phi i1 [ false, %logic.from8692 ], [ %t203, %logic.rend8695 ] - br i1 %t204, label %then8696, label %else8697 -then8696: + br label %logic.rend9054 +logic.rend9054: + br label %logic.end9053 +logic.end9053: + %t204 = phi i1 [ false, %logic.from9051 ], [ %t203, %logic.rend9054 ] + br i1 %t204, label %then9055, label %else9056 +then9055: %t205 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.5793, i64 22, i64 0 }, ptr %t205 - br label %endif8698 -else8697: + store { ptr, i64, i64 } { ptr @.str.6259, i64 22, i64 0 }, ptr %t205 + br label %endif9057 +else9056: %t206 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 %t207 = load i1, ptr %t206 - br label %logic.from8699 -logic.from8699: - br i1 %t207, label %logic.rhs8700, label %logic.end8701 -logic.rhs8700: + br label %logic.from9058 +logic.from9058: + br i1 %t207, label %logic.rhs9059, label %logic.end9060 +logic.rhs9059: %t208 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 %t209 = load i1, ptr %t208 - br label %logic.rend8702 -logic.rend8702: - br label %logic.end8701 -logic.end8701: - %t210 = phi i1 [ false, %logic.from8699 ], [ %t209, %logic.rend8702 ] - br label %logic.from8703 -logic.from8703: - br i1 %t210, label %logic.rhs8704, label %logic.end8705 -logic.rhs8704: + br label %logic.rend9061 +logic.rend9061: + br label %logic.end9060 +logic.end9060: + %t210 = phi i1 [ false, %logic.from9058 ], [ %t209, %logic.rend9061 ] + br label %logic.from9062 +logic.from9062: + br i1 %t210, label %logic.rhs9063, label %logic.end9064 +logic.rhs9063: %t211 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3 %t212 = load i1, ptr %t211 %t213 = xor i1 %t212, true - br label %logic.rend8706 -logic.rend8706: - br label %logic.end8705 -logic.end8705: - %t214 = phi i1 [ false, %logic.from8703 ], [ %t213, %logic.rend8706 ] - br i1 %t214, label %then8707, label %else8708 -then8707: + br label %logic.rend9065 +logic.rend9065: + br label %logic.end9064 +logic.end9064: + %t214 = phi i1 [ false, %logic.from9062 ], [ %t213, %logic.rend9065 ] + br i1 %t214, label %then9066, label %else9067 +then9066: %t215 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.5794, i64 21, i64 0 }, ptr %t215 - br label %endif8709 -else8708: + store { ptr, i64, i64 } { ptr @.str.6260, i64 21, i64 0 }, ptr %t215 + br label %endif9068 +else9067: %t216 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 %t217 = load i1, ptr %t216 - br i1 %t217, label %then8710, label %else8711 -then8710: + br i1 %t217, label %then9069, label %else9070 +then9069: %t218 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5795, i64 15, i64 0 }, ptr %a220 + store { ptr, i64, i64 } { ptr @.str.6261, i64 15, i64 0 }, ptr %a220 store { ptr, i64, i64 } %t218, ptr %a221 call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) %t222 = load { ptr, i64, i64 }, ptr %a219 %t223 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 store { ptr, i64, i64 } %t222, ptr %t223 - br label %endif8712 -else8711: + br label %endif9071 +else9070: %t224 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 7 - store { ptr, i64, i64 } { ptr @.str.5796, i64 2, i64 0 }, ptr %t224 - br label %endif8712 -endif8712: - br label %endif8709 -endif8709: - br label %endif8698 -endif8698: - br label %endif8691 -endif8691: + store { ptr, i64, i64 } { ptr @.str.6262, i64 2, i64 0 }, ptr %t224 + br label %endif9071 +endif9071: + br label %endif9068 +endif9068: + br label %endif9057 +endif9057: + br label %endif9050 +endif9050: %t225 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 %t226 = load i1, ptr %t225 - br label %logic.from8713 -logic.from8713: - br i1 %t226, label %logic.rhs8714, label %logic.end8715 -logic.rhs8714: + br label %logic.from9072 +logic.from9072: + br i1 %t226, label %logic.rhs9073, label %logic.end9074 +logic.rhs9073: %t227 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 1 %t228 = load i1, ptr %t227 - br label %logic.rend8716 -logic.rend8716: - br label %logic.end8715 -logic.end8715: - %t229 = phi i1 [ false, %logic.from8713 ], [ %t228, %logic.rend8716 ] - br i1 %t229, label %then8717, label %else8718 -then8717: + br label %logic.rend9075 +logic.rend9075: + br label %logic.end9074 +logic.end9074: + %t229 = phi i1 [ false, %logic.from9072 ], [ %t228, %logic.rend9075 ] + br i1 %t229, label %then9076, label %else9077 +then9076: %t230 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8 - store { ptr, i64, i64 } { ptr @.str.5797, i64 5, i64 0 }, ptr %t230 - br label %endif8719 -else8718: + store { ptr, i64, i64 } { ptr @.str.6263, i64 5, i64 0 }, ptr %t230 + br label %endif9078 +else9077: %t231 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 5 %t232 = load i1, ptr %t231 - br label %logic.from8720 -logic.from8720: - br i1 %t232, label %logic.rhs8721, label %logic.end8722 -logic.rhs8721: + br label %logic.from9079 +logic.from9079: + br i1 %t232, label %logic.rhs9080, label %logic.end9081 +logic.rhs9080: %t233 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 4 %t234 = load i1, ptr %t233 - br label %logic.rend8723 -logic.rend8723: - br label %logic.end8722 -logic.end8722: - %t235 = phi i1 [ false, %logic.from8720 ], [ %t234, %logic.rend8723 ] - br label %logic.from8724 -logic.from8724: - br i1 %t235, label %logic.rhs8725, label %logic.end8726 -logic.rhs8725: + br label %logic.rend9082 +logic.rend9082: + br label %logic.end9081 +logic.end9081: + %t235 = phi i1 [ false, %logic.from9079 ], [ %t234, %logic.rend9082 ] + br label %logic.from9083 +logic.from9083: + br i1 %t235, label %logic.rhs9084, label %logic.end9085 +logic.rhs9084: %t236 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 3 %t237 = load i1, ptr %t236 %t238 = xor i1 %t237, true - br label %logic.rend8727 -logic.rend8727: - br label %logic.end8726 -logic.end8726: - %t239 = phi i1 [ false, %logic.from8724 ], [ %t238, %logic.rend8727 ] - br i1 %t239, label %then8728, label %endif8730 -then8728: + br label %logic.rend9086 +logic.rend9086: + br label %logic.end9085 +logic.end9085: + %t239 = phi i1 [ false, %logic.from9083 ], [ %t238, %logic.rend9086 ] + br i1 %t239, label %then9087, label %endif9089 +then9087: %t240 = getelementptr inbounds %S.platform.Target, ptr %a66, i32 0, i32 8 - store { ptr, i64, i64 } { ptr @.str.5798, i64 13, i64 0 }, ptr %t240 - br label %endif8730 -endif8730: - br label %endif8719 -endif8719: + store { ptr, i64, i64 } { ptr @.str.6264, i64 13, i64 0 }, ptr %t240 + br label %endif9089 +endif9089: + br label %endif9078 +endif9078: %t241 = load %S.platform.Target, ptr %a66 store %S.platform.Target %t241, ptr %a242 call void @finch.copy.S_platform_Target(ptr %a243, ptr %a242) @@ -77047,28 +81897,28 @@ entry: %t2 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 4 %t3 = load i1, ptr %t2 %t4 = xor i1 %t3, true - br label %logic.from8731 -logic.from8731: - br i1 %t4, label %logic.end8733, label %logic.rhs8732 -logic.rhs8732: + br label %logic.from9090 +logic.from9090: + br i1 %t4, label %logic.end9092, label %logic.rhs9091 +logic.rhs9091: %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 %t6 = load i1, ptr %t5 - br label %logic.rend8734 -logic.rend8734: - br label %logic.end8733 -logic.end8733: - %t7 = phi i1 [ true, %logic.from8731 ], [ %t6, %logic.rend8734 ] - br label %logic.from8735 -logic.from8735: - br i1 %t7, label %logic.end8737, label %logic.rhs8736 -logic.rhs8736: + br label %logic.rend9093 +logic.rend9093: + br label %logic.end9092 +logic.end9092: + %t7 = phi i1 [ true, %logic.from9090 ], [ %t6, %logic.rend9093 ] + br label %logic.from9094 +logic.from9094: + br i1 %t7, label %logic.end9096, label %logic.rhs9095 +logic.rhs9095: %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 %t9 = load i1, ptr %t8 - br label %logic.rend8738 -logic.rend8738: - br label %logic.end8737 -logic.end8737: - %t10 = phi i1 [ true, %logic.from8735 ], [ %t9, %logic.rend8738 ] + br label %logic.rend9097 +logic.rend9097: + br label %logic.end9096 +logic.end9096: + %t10 = phi i1 [ true, %logic.from9094 ], [ %t9, %logic.rend9097 ] ret i1 %t10 } @@ -77087,14 +81937,14 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 store i32 2166136261, ptr %a2 store i64 0, ptr %a3 - br label %each.cond8739 -each.cond8739: + br label %each.cond9098 +each.cond9098: %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t5 = load i64, ptr %t4 %t6 = load i64, ptr %a3 %t7 = icmp slt i64 %t6, %t5 - br i1 %t7, label %each.body8740, label %each.end8742 -each.body8740: + br i1 %t7, label %each.body9099, label %each.end9101 +each.body9099: %t8 = load ptr, ptr %a1 %t9 = getelementptr inbounds i8, ptr %t8, i64 %t6 %t10 = load i8, ptr %t9 @@ -77105,22 +81955,22 @@ each.body8740: %t15 = xor i32 %t12, %t14 %t16 = mul i32 %t15, 16777619 store i32 %t16, ptr %a2 - br label %each.step8741 -each.step8741: + br label %each.step9100 +each.step9100: %t17 = load i64, ptr %a3 %t18 = add i64 %t17, 1 store i64 %t18, ptr %a3 - br label %each.cond8739 -each.end8742: - store { ptr, i64, i64 } { ptr @.str.5799, i64 16, i64 0 }, ptr %a19 + br label %each.cond9098 +each.end9101: + store { ptr, i64, i64 } { ptr @.str.6265, i64 16, i64 0 }, ptr %a19 store { ptr, i64, i64 } zeroinitializer, ptr %a20 store i64 0, ptr %a21 - br label %for.cond8743 -for.cond8743: + br label %for.cond9102 +for.cond9102: %t22 = load i64, ptr %a21 %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body8744, label %for.end8746 -for.body8744: + br i1 %t23, label %for.body9103, label %for.end9105 +for.body9103: %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 %t25 = load i32, ptr %a2 %t26 = load i64, ptr %a21 @@ -77133,11 +81983,11 @@ for.body8744: %t33 = load { ptr, i64, i64 }, ptr %a19 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range8747, label %inrange8748 -range8747: - call void @finch_panic_index(ptr @.str.5800, i64 17, i64 %t32, i64 %t34) + br i1 %t35, label %range9106, label %inrange9107 +range9106: + call void @finch_panic_index(ptr @.str.6266, i64 17, i64 %t32, i64 %t34) unreachable -inrange8748: +inrange9107: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -77150,15 +82000,15 @@ inrange8748: %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 store { ptr, i64, i64 } %t40, ptr %t44 store i64 %t42, ptr %t24 - br label %for.step8745 -for.step8745: + br label %for.step9104 +for.step9104: %t45 = load i64, ptr %a21 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a21 - br label %for.cond8743 -for.end8746: + br label %for.cond9102 +for.end9105: %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5801, i64 0, i64 0 }, ptr %a48 + store { ptr, i64, i64 } { ptr @.str.6267, i64 0, i64 0 }, ptr %a48 call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) %t50 = load { ptr, i64, i64 }, ptr %a49 ret { ptr, i64, i64 } %t50 @@ -77180,16 +82030,16 @@ entry: store { ptr, i64, i64 } %p0, ptr %a1 %t2 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5804, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5805, i64 4, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6270, i64 1, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, ptr %a6 call void @finch_str_replace(ptr %a4, ptr %a3, ptr %a5, ptr %a6) %t7 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5802, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6268, i64 1, i64 0 }, ptr %a9 store { ptr, i64, i64 } %t7, ptr %a10 call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) %t11 = load { ptr, i64, i64 }, ptr %a8 store { ptr, i64, i64 } %t11, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.5806, i64 1, i64 0 }, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6272, i64 1, i64 0 }, ptr %a14 call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) %t15 = load { ptr, i64, i64 }, ptr %a12 ret { ptr, i64, i64 } %t15 @@ -77211,9 +82061,9 @@ entry: %a33 = alloca { ptr, i64, i64 }, align 16 %a34 = alloca { ptr, i64, i64 }, align 16 %a35 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.5807, i64 14, i64 0 }, 0 + %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6273, i64 14, i64 0 }, 0 %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.5808, ptr %t1 + %t3 = select i1 %t2, ptr @.str.6274, ptr %t1 %t4 = call ptr @getenv(ptr %t3) store { ptr, i64, i64 } zeroinitializer, ptr %a5 call void @finch_str_from_c(ptr %a5, ptr %t4) @@ -77225,18 +82075,18 @@ entry: %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 %t12 = load i64, ptr %t11 %t13 = icmp sgt i64 %t12, 0 - br i1 %t13, label %then8749, label %endif8751 -then8749: + br i1 %t13, label %then9108, label %endif9110 +then9108: %t14 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5809, i64 6, i64 0 }, ptr %a17 + store { ptr, i64, i64 } { ptr @.str.6275, i64 6, i64 0 }, ptr %a17 call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) %t18 = load { ptr, i64, i64 }, ptr %a15 ret { ptr, i64, i64 } %t18 -endif8751: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.5810, i64 4, i64 0 }, 0 +endif9110: + %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6276, i64 4, i64 0 }, 0 %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.5811, ptr %t19 + %t21 = select i1 %t20, ptr @.str.6277, ptr %t19 %t22 = call ptr @getenv(ptr %t21) store { ptr, i64, i64 } zeroinitializer, ptr %a23 call void @finch_str_from_c(ptr %a23, ptr %t22) @@ -77248,16 +82098,16 @@ endif8751: %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a28, i32 0, i32 1 %t30 = load i64, ptr %t29 %t31 = icmp sgt i64 %t30, 0 - br i1 %t31, label %then8752, label %endif8754 -then8752: + br i1 %t31, label %then9111, label %endif9113 +then9111: %t32 = load { ptr, i64, i64 }, ptr %a28 store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.5812, i64 13, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 ret { ptr, i64, i64 } %t36 -endif8754: - ret { ptr, i64, i64 } { ptr @.str.5813, i64 16, i64 0 } +endif9113: + ret { ptr, i64, i64 } { ptr @.str.6279, i64 16, i64 0 } } define internal { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %p0, %S.platform.Target %p1) { @@ -77311,39 +82161,39 @@ entry: store %S.platform.Target %p1, ptr %a2 %t3 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5815, i64 10, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6281, i64 10, i64 0 }, ptr %a6 %t7 = call i32 @finch_str_ends(ptr %a4, ptr %a6) %t8 = icmp ne i32 %t7, 0 - br i1 %t8, label %then8755, label %endif8757 -then8755: + br i1 %t8, label %then9114, label %endif9116 +then9114: %t9 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t9, ptr %a10 %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t13 = load i64, ptr %t12 %t14 = sub i64 %t13, 10 - call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.5817, i64 42) + call void @finch_str_sub(ptr %a11, ptr %a10, i64 0, i64 %t14, ptr @.str.6283, i64 42) %t15 = load { ptr, i64, i64 }, ptr %a11 %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } { ptr @.str.5816, i64 11, i64 0 }, ptr %a18 + store { ptr, i64, i64 } { ptr @.str.6282, i64 11, i64 0 }, ptr %a18 store { ptr, i64, i64 } %t16, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 ret { ptr, i64, i64 } %t20 -endif8757: +endif9116: %t21 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 %t22 = load i1, ptr %t21 %t23 = xor i1 %t22, true - br i1 %t23, label %then8758, label %endif8760 -then8758: - store { ptr, i64, i64 } { ptr @.str.5818, i64 24, i64 0 }, ptr %a24 + br i1 %t23, label %then9117, label %endif9119 +then9117: + store { ptr, i64, i64 } { ptr @.str.6284, i64 24, i64 0 }, ptr %a24 %t25 = load { ptr, i64, i64 }, ptr %a1 %t26 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t25) - store { ptr, i64, i64 } { ptr @.str.5819, i64 18, i64 0 }, ptr %a28 + store { ptr, i64, i64 } { ptr @.str.6285, i64 18, i64 0 }, ptr %a28 store { ptr, i64, i64 } %t26, ptr %a29 call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) %t30 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5820, i64 4, i64 0 }, ptr %a33 + store { ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, ptr %a33 call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) %t34 = load { ptr, i64, i64 }, ptr %a31 %t35 = load { ptr, i64, i64 }, ptr %a24 @@ -77352,7 +82202,7 @@ then8758: call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) %t39 = load { ptr, i64, i64 }, ptr %a36 store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5821, i64 14, i64 0 }, ptr %a42 + store { ptr, i64, i64 } { ptr @.str.6287, i64 14, i64 0 }, ptr %a42 call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) %t43 = load { ptr, i64, i64 }, ptr %a40 store { ptr, i64, i64 } %t43, ptr %a45 @@ -77361,21 +82211,21 @@ then8758: store i64 %t46, ptr %a47 %t48 = load i64, ptr %a47 %t49 = icmp eq i64 %t48, 0 - br label %logic.from8761 -logic.from8761: - br i1 %t49, label %logic.rhs8762, label %logic.end8763 -logic.rhs8762: + br label %logic.from9120 +logic.from9120: + br i1 %t49, label %logic.rhs9121, label %logic.end9122 +logic.rhs9121: %t50 = load { ptr, i64, i64 }, ptr %a24 store { ptr, i64, i64 } %t50, ptr %a51 %t52 = call i32 @finch_file_exists(ptr %a51) %t53 = icmp ne i32 %t52, 0 - br label %logic.rend8764 -logic.rend8764: - br label %logic.end8763 -logic.end8763: - %t54 = phi i1 [ false, %logic.from8761 ], [ %t53, %logic.rend8764 ] - br i1 %t54, label %then8765, label %endif8767 -then8765: + br label %logic.rend9123 +logic.rend9123: + br label %logic.end9122 +logic.end9122: + %t54 = phi i1 [ false, %logic.from9120 ], [ %t53, %logic.rend9123 ] + br i1 %t54, label %then9124, label %endif9126 +then9124: %t55 = load { ptr, i64, i64 }, ptr %a24 store { ptr, i64, i64 } %t55, ptr %a56 store { ptr, i64, i64 } zeroinitializer, ptr %a57 @@ -77384,27 +82234,27 @@ then8765: %t60 = icmp eq i32 %t59, 0 %t61 = load { ptr, i64, i64 }, ptr %a58 %t62 = load { ptr, i64, i64 }, ptr %a57 - br i1 %t60, label %or.failed8768, label %or.ok8769 -or.failed8768: + br i1 %t60, label %or.failed9127, label %or.ok9128 +or.failed9127: store { ptr, i64, i64 } %t61, ptr %a63 - br label %or.bend8770 -or.bend8770: - br label %or.end8771 -or.ok8769: - br label %or.end8771 -or.end8771: - %t64 = phi { ptr, i64, i64 } [ { ptr @.str.5822, i64 0, i64 0 }, %or.bend8770 ], [ %t62, %or.ok8769 ] + br label %or.bend9129 +or.bend9129: + br label %or.end9130 +or.ok9128: + br label %or.end9130 +or.end9130: + %t64 = phi { ptr, i64, i64 } [ { ptr @.str.6288, i64 0, i64 0 }, %or.bend9129 ], [ %t62, %or.ok9128 ] store { ptr, i64, i64 } %t64, ptr %a65 call void @finch_str_trim(ptr %a66, ptr %a65) %t67 = load { ptr, i64, i64 }, ptr %a66 store { ptr, i64, i64 } %t67, ptr %a68 %t69 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.5824, i64 7, i64 0 }, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.6290, i64 7, i64 0 }, ptr %a71 store { ptr, i64, i64 } %t69, ptr %a72 call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) %t73 = load { ptr, i64, i64 }, ptr %a70 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5825, i64 1, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6291, i64 1, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a79 @@ -77413,17 +82263,17 @@ or.end8771: %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a68, i32 0, i32 1 %t82 = load i64, ptr %t81 %t83 = icmp sgt i64 %t82, 0 - br i1 %t83, label %then8772, label %endif8774 -then8772: + br i1 %t83, label %then9131, label %endif9133 +then9131: %t84 = load { ptr, i64, i64 }, ptr %a68 ret { ptr, i64, i64 } %t84 -endif8774: - br label %endif8767 -endif8767: - br label %endif8760 -endif8760: +endif9133: + br label %endif9126 +endif9126: + br label %endif9119 +endif9119: %t85 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.5826, i64 2, i64 0 }, ptr %a87 + store { ptr, i64, i64 } { ptr @.str.6292, i64 2, i64 0 }, ptr %a87 store { ptr, i64, i64 } %t85, ptr %a88 call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) %t89 = load { ptr, i64, i64 }, ptr %a86 @@ -77462,140 +82312,140 @@ entry: store { ptr, i64, i64 } %t5, ptr %a6 %t7 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5828, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } { ptr @.str.6294, i64 1, i64 0 }, ptr %a10 %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) store i64 %t11, ptr %a12 - br label %while.cond8775 -while.cond8775: + br label %while.cond9134 +while.cond9134: %t13 = load i64, ptr %a12 %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body8776, label %while.end8777 -while.body8776: + br i1 %t14, label %while.body9135, label %while.end9136 +while.body9135: %t15 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t15, ptr %a16 %t18 = load i64, ptr %a12 %t19 = add i64 %t18, 1 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t21 = load i64, ptr %t20 - call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.5829, i64 63) + call void @finch_str_sub(ptr %a17, ptr %a16, i64 %t19, i64 %t21, ptr @.str.6295, i64 63) %t22 = load { ptr, i64, i64 }, ptr %a17 store { ptr, i64, i64 } %t22, ptr %a6 %t23 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.5831, i64 1, i64 0 }, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6297, i64 1, i64 0 }, ptr %a26 %t27 = call i64 @finch_str_find(ptr %a24, ptr %a26) store i64 %t27, ptr %a12 - br label %while.cond8775 -while.end8777: + br label %while.cond9134 +while.end9136: %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t29 = load i64, ptr %t28 store i64 %t29, ptr %a30 %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t32 = load i64, ptr %t31 store i64 0, ptr %a33 - br label %for.cond8778 -for.cond8778: + br label %for.cond9137 +for.cond9137: %t34 = load i64, ptr %a33 %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body8779, label %for.end8781 -for.body8779: + br i1 %t35, label %for.body9138, label %for.end9140 +for.body9138: %t36 = load i64, ptr %a33 %t37 = load { ptr, i64, i64 }, ptr %a6 %t38 = extractvalue { ptr, i64, i64 } %t37, 1 %t39 = icmp uge i64 %t36, %t38 - br i1 %t39, label %range8782, label %inrange8783 -range8782: - call void @finch_panic_index(ptr @.str.5832, i64 68, i64 %t36, i64 %t38) + br i1 %t39, label %range9141, label %inrange9142 +range9141: + call void @finch_panic_index(ptr @.str.6298, i64 68, i64 %t36, i64 %t38) unreachable -inrange8783: +inrange9142: %t40 = extractvalue { ptr, i64, i64 } %t37, 0 %t41 = getelementptr inbounds i8, ptr %t40, i64 %t36 %t42 = load i8, ptr %t41 %t43 = icmp eq i8 %t42, 46 - br i1 %t43, label %then8784, label %endif8786 -then8784: + br i1 %t43, label %then9143, label %endif9145 +then9143: %t44 = load i64, ptr %a33 store i64 %t44, ptr %a30 - br label %endif8786 -endif8786: - br label %for.step8780 -for.step8780: + br label %endif9145 +endif9145: + br label %for.step9139 +for.step9139: %t45 = load i64, ptr %a33 %t46 = add i64 %t45, 1 store i64 %t46, ptr %a33 - br label %for.cond8778 -for.end8781: + br label %for.cond9137 +for.end9140: %t47 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t47, ptr %a48 %t50 = load i64, ptr %a30 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.5833, i64 72) + call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.6299, i64 72) %t51 = load { ptr, i64, i64 }, ptr %a49 store { ptr, i64, i64 } %t51, ptr %a6 - br label %while.cond8787 -while.cond8787: + br label %while.cond9146 +while.cond9146: %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t53 = load i64, ptr %t52 %t54 = icmp sgt i64 %t53, 0 - br label %logic.from8790 -logic.from8790: - br i1 %t54, label %logic.rhs8791, label %logic.end8792 -logic.rhs8791: + br label %logic.from9149 +logic.from9149: + br i1 %t54, label %logic.rhs9150, label %logic.end9151 +logic.rhs9150: %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t56 = load i64, ptr %t55 %t57 = sub i64 %t56, 1 %t58 = load { ptr, i64, i64 }, ptr %a6 %t59 = extractvalue { ptr, i64, i64 } %t58, 1 %t60 = icmp uge i64 %t57, %t59 - br i1 %t60, label %range8793, label %inrange8794 -range8793: - call void @finch_panic_index(ptr @.str.5834, i64 73, i64 %t57, i64 %t59) + br i1 %t60, label %range9152, label %inrange9153 +range9152: + call void @finch_panic_index(ptr @.str.6300, i64 73, i64 %t57, i64 %t59) unreachable -inrange8794: +inrange9153: %t61 = extractvalue { ptr, i64, i64 } %t58, 0 %t62 = getelementptr inbounds i8, ptr %t61, i64 %t57 %t63 = load i8, ptr %t62 %t64 = icmp uge i8 %t63, 48 - br label %logic.rend8795 -logic.rend8795: - br label %logic.end8792 -logic.end8792: - %t65 = phi i1 [ false, %logic.from8790 ], [ %t64, %logic.rend8795 ] - br label %logic.from8796 -logic.from8796: - br i1 %t65, label %logic.rhs8797, label %logic.end8798 -logic.rhs8797: + br label %logic.rend9154 +logic.rend9154: + br label %logic.end9151 +logic.end9151: + %t65 = phi i1 [ false, %logic.from9149 ], [ %t64, %logic.rend9154 ] + br label %logic.from9155 +logic.from9155: + br i1 %t65, label %logic.rhs9156, label %logic.end9157 +logic.rhs9156: %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t67 = load i64, ptr %t66 %t68 = sub i64 %t67, 1 %t69 = load { ptr, i64, i64 }, ptr %a6 %t70 = extractvalue { ptr, i64, i64 } %t69, 1 %t71 = icmp uge i64 %t68, %t70 - br i1 %t71, label %range8799, label %inrange8800 -range8799: - call void @finch_panic_index(ptr @.str.5835, i64 73, i64 %t68, i64 %t70) + br i1 %t71, label %range9158, label %inrange9159 +range9158: + call void @finch_panic_index(ptr @.str.6301, i64 73, i64 %t68, i64 %t70) unreachable -inrange8800: +inrange9159: %t72 = extractvalue { ptr, i64, i64 } %t69, 0 %t73 = getelementptr inbounds i8, ptr %t72, i64 %t68 %t74 = load i8, ptr %t73 %t75 = icmp ule i8 %t74, 57 - br label %logic.rend8801 -logic.rend8801: - br label %logic.end8798 -logic.end8798: - %t76 = phi i1 [ false, %logic.from8796 ], [ %t75, %logic.rend8801 ] - br i1 %t76, label %while.body8788, label %while.end8789 -while.body8788: + br label %logic.rend9160 +logic.rend9160: + br label %logic.end9157 +logic.end9157: + %t76 = phi i1 [ false, %logic.from9155 ], [ %t75, %logic.rend9160 ] + br i1 %t76, label %while.body9147, label %while.end9148 +while.body9147: %t77 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t77, ptr %a78 %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 %t81 = load i64, ptr %t80 %t82 = sub i64 %t81, 1 - call void @finch_str_sub(ptr %a79, ptr %a78, i64 0, i64 %t82, ptr @.str.5836, i64 74) + call void @finch_str_sub(ptr %a79, ptr %a78, i64 0, i64 %t82, ptr @.str.6302, i64 74) %t83 = load { ptr, i64, i64 }, ptr %a79 store { ptr, i64, i64 } %t83, ptr %a6 - br label %while.cond8787 -while.end8789: + br label %while.cond9146 +while.end9148: %t84 = load { ptr, i64, i64 }, ptr %a6 store { ptr, i64, i64 } %t84, ptr %a85 call void @finch_str_lower(ptr %a86, ptr %a85) @@ -77616,10 +82466,10 @@ entry: %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t3 = load i64, ptr %t2 %t4 = icmp sgt i64 %t3, 0 - br label %logic.from8802 -logic.from8802: - br i1 %t4, label %logic.rhs8803, label %logic.end8804 -logic.rhs8803: + br label %logic.from9161 +logic.from9161: + br i1 %t4, label %logic.rhs9162, label %logic.end9163 +logic.rhs9162: %t5 = getelementptr inbounds %S.linker.Names, ptr %self, i32 0, i32 0 %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 %t7 = load { ptr, i64, i64 }, ptr %a1 @@ -77627,37 +82477,37 @@ logic.rhs8803: %t9 = load i64, ptr %t6 %t10 = load ptr, ptr %t5 store i64 0, ptr %a11 - br label %find.cond8805 -find.cond8805: + br label %find.cond9164 +find.cond9164: %t12 = load i64, ptr %a11 %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body8806, label %find.end8809 -find.body8806: + br i1 %t13, label %find.body9165, label %find.end9168 +find.body9165: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 %t15 = load { ptr, i64, i64 }, ptr %t14 store { ptr, i64, i64 } %t15, ptr %a16 store { ptr, i64, i64 } %t7, ptr %a17 %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %find.hit8807, label %find.next8808 -find.hit8807: + br i1 %t19, label %find.hit9166, label %find.next9167 +find.hit9166: store i64 %t12, ptr %a8 - br label %find.end8809 -find.next8808: + br label %find.end9168 +find.next9167: %t20 = add i64 %t12, 1 store i64 %t20, ptr %a11 - br label %find.cond8805 -find.end8809: + br label %find.cond9164 +find.end9168: %t21 = load i64, ptr %a8 %t22 = icmp sge i64 %t21, 0 %t23 = xor i1 %t22, true - br label %logic.rend8810 -logic.rend8810: - br label %logic.end8804 -logic.end8804: - %t24 = phi i1 [ false, %logic.from8802 ], [ %t23, %logic.rend8810 ] - br i1 %t24, label %then8811, label %endif8813 -then8811: + br label %logic.rend9169 +logic.rend9169: + br label %logic.end9163 +logic.end9163: + %t24 = phi i1 [ false, %logic.from9161 ], [ %t23, %logic.rend9169 ] + br i1 %t24, label %then9170, label %endif9172 +then9170: %t25 = getelementptr inbounds %S.linker.Names, ptr %self, i32 0, i32 0 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 %t27 = load { ptr, i64, i64 }, ptr %a1 @@ -77671,8 +82521,8 @@ then8811: %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 store { ptr, i64, i64 } %t30, ptr %t34 store i64 %t32, ptr %t26 - br label %endif8813 -endif8813: + br label %endif9172 +endif9172: ret void } @@ -77706,10 +82556,10 @@ entry: store i64 %t9, ptr %a10 %t11 = load i64, ptr %a10 %t12 = icmp slt i64 %t11, 0 - br i1 %t12, label %then8814, label %endif8816 -then8814: - ret { ptr, i64, i64 } { ptr @.str.5839, i64 0, i64 0 } -endif8816: + br i1 %t12, label %then9173, label %endif9175 +then9173: + ret { ptr, i64, i64 } { ptr @.str.6305, i64 0, i64 0 } +endif9175: %t13 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t13, ptr %a14 %t16 = load i64, ptr %a10 @@ -77718,31 +82568,31 @@ endif8816: %t19 = add i64 %t16, %t18 %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 %t21 = load i64, ptr %t20 - call void @finch_str_sub(ptr %a15, ptr %a14, i64 %t19, i64 %t21, ptr @.str.5840, i64 95) + call void @finch_str_sub(ptr %a15, ptr %a14, i64 %t19, i64 %t21, ptr @.str.6306, i64 95) %t22 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t22, ptr %a23 store i64 0, ptr %a24 - br label %while.cond8817 -while.cond8817: + br label %while.cond9176 +while.cond9176: %t25 = load i64, ptr %a24 %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 %t27 = load i64, ptr %t26 %t28 = icmp slt i64 %t25, %t27 - br label %logic.from8820 -logic.from8820: - br i1 %t28, label %logic.rhs8821, label %logic.end8822 -logic.rhs8821: + br label %logic.from9179 +logic.from9179: + br i1 %t28, label %logic.rhs9180, label %logic.end9181 +logic.rhs9180: %t29 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t29, ptr %a30 %t32 = load i64, ptr %a24 %t33 = load { ptr, i64, i64 }, ptr %a23 %t34 = extractvalue { ptr, i64, i64 } %t33, 1 %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range8823, label %inrange8824 -range8823: - call void @finch_panic_index(ptr @.str.5842, i64 97, i64 %t32, i64 %t34) + br i1 %t35, label %range9182, label %inrange9183 +range9182: + call void @finch_panic_index(ptr @.str.6308, i64 97, i64 %t32, i64 %t34) unreachable -inrange8824: +inrange9183: %t36 = extractvalue { ptr, i64, i64 } %t33, 0 %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 %t38 = load i8, ptr %t37 @@ -77752,22 +82602,22 @@ inrange8824: %t42 = call i64 @finch_str_find(ptr %a30, ptr %a41) %t43 = icmp sge i64 %t42, 0 %t44 = xor i1 %t43, true - br label %logic.rend8825 -logic.rend8825: - br label %logic.end8822 -logic.end8822: - %t45 = phi i1 [ false, %logic.from8820 ], [ %t44, %logic.rend8825 ] - br i1 %t45, label %while.body8818, label %while.end8819 -while.body8818: + br label %logic.rend9184 +logic.rend9184: + br label %logic.end9181 +logic.end9181: + %t45 = phi i1 [ false, %logic.from9179 ], [ %t44, %logic.rend9184 ] + br i1 %t45, label %while.body9177, label %while.end9178 +while.body9177: %t46 = load i64, ptr %a24 %t47 = add i64 %t46, 1 store i64 %t47, ptr %a24 - br label %while.cond8817 -while.end8819: + br label %while.cond9176 +while.end9178: %t48 = load { ptr, i64, i64 }, ptr %a23 store { ptr, i64, i64 } %t48, ptr %a49 %t51 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a50, ptr %a49, i64 0, i64 %t51, ptr @.str.5843, i64 100) + call void @finch_str_sub(ptr %a50, ptr %a49, i64 0, i64 %t51, ptr @.str.6309, i64 100) %t52 = load { ptr, i64, i64 }, ptr %a50 ret { ptr, i64, i64 } %t52 } @@ -77918,19 +82768,19 @@ entry: store %S.linker.Names zeroinitializer, ptr %a5 %t6 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t6, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.5845, i64 1, i64 0 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6311, i64 1, i64 0 }, ptr %a9 call void @finch_str_split(ptr %a10, ptr %a7, ptr %a9) %t11 = load { ptr, i64, i64 }, ptr %a10 store { ptr, i64, i64 } %t11, ptr %a12 store i64 0, ptr %a13 - br label %each.cond8826 -each.cond8826: + br label %each.cond9185 +each.cond9185: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a12, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = load i64, ptr %a13 %t17 = icmp slt i64 %t16, %t15 - br i1 %t17, label %each.body8827, label %each.end8829 -each.body8827: + br i1 %t17, label %each.body9186, label %each.end9188 +each.body9186: %t18 = load ptr, ptr %a12 %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 %t16 %t20 = load { ptr, i64, i64 }, ptr %t19 @@ -77942,295 +82792,295 @@ each.body8827: store { ptr, i64, i64 } %t25, ptr %a26 %t27 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5848, i64 24, i64 0 }, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6314, i64 24, i64 0 }, ptr %a30 %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) %t32 = icmp sge i64 %t31, 0 - br i1 %t32, label %then8830, label %else8831 -then8830: + br i1 %t32, label %then9189, label %else9190 +then9189: %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.5849, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5850, i64 1, i64 0 }) + %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6315, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6316, i64 1, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - br label %endif8832 -else8831: + br label %endif9191 +else9190: %t35 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5852, i64 18, i64 0 }, ptr %a38 + store { ptr, i64, i64 } { ptr @.str.6318, i64 18, i64 0 }, ptr %a38 %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) %t40 = icmp sge i64 %t39, 0 - br i1 %t40, label %then8833, label %else8834 -then8833: + br i1 %t40, label %then9192, label %else9193 +then9192: %t41 = load { ptr, i64, i64 }, ptr %a26 - %t42 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t41, { ptr, i64, i64 } { ptr @.str.5853, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.5854, i64 2, i64 0 }) + %t42 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t41, { ptr, i64, i64 } { ptr @.str.6319, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 2, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t42) - br label %endif8835 -else8834: + br label %endif9194 +else9193: %t43 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.5856, i64 27, i64 0 }, ptr %a46 + store { ptr, i64, i64 } { ptr @.str.6322, i64 27, i64 0 }, ptr %a46 %t47 = call i64 @finch_str_find(ptr %a44, ptr %a46) %t48 = icmp sge i64 %t47, 0 - br i1 %t48, label %then8836, label %else8837 -then8836: + br i1 %t48, label %then9195, label %else9196 +then9195: %t49 = load { ptr, i64, i64 }, ptr %a26 - %t50 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t49, { ptr, i64, i64 } { ptr @.str.5857, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }) + %t50 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t49, { ptr, i64, i64 } { ptr @.str.6323, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 3, i64 0 }) call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t50) - br label %endif8838 -else8837: + br label %endif9197 +else9196: %t51 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.5860, i64 14, i64 0 }, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.6326, i64 14, i64 0 }, ptr %a54 %t55 = call i64 @finch_str_find(ptr %a52, ptr %a54) %t56 = icmp sge i64 %t55, 0 - br i1 %t56, label %then8839, label %else8840 -then8839: + br i1 %t56, label %then9198, label %else9199 +then9198: %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t57, { ptr, i64, i64 } { ptr @.str.5861, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.5862, i64 4, i64 0 }) + %t58 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t57, { ptr, i64, i64 } { ptr @.str.6327, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6328, i64 4, i64 0 }) call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t58) - br label %endif8841 -else8840: + br label %endif9200 +else9199: %t59 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t59, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.5864, i64 24, i64 0 }, ptr %a62 + store { ptr, i64, i64 } { ptr @.str.6330, i64 24, i64 0 }, ptr %a62 %t63 = call i64 @finch_str_find(ptr %a60, ptr %a62) %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then8842, label %else8843 -then8842: + br i1 %t64, label %then9201, label %else9202 +then9201: %t65 = load { ptr, i64, i64 }, ptr %a26 - %t66 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.5865, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.5866, i64 4, i64 0 }) + %t66 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t65, { ptr, i64, i64 } { ptr @.str.6331, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 4, i64 0 }) call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t66) - br label %endif8844 -else8843: + br label %endif9203 +else9202: %t67 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5868, i64 13, i64 0 }, ptr %a70 + store { ptr, i64, i64 } { ptr @.str.6334, i64 13, i64 0 }, ptr %a70 %t71 = call i64 @finch_str_find(ptr %a68, ptr %a70) %t72 = icmp sge i64 %t71, 0 - br i1 %t72, label %then8845, label %else8846 -then8845: + br i1 %t72, label %then9204, label %else9205 +then9204: %t73 = load { ptr, i64, i64 }, ptr %a26 - %t74 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t73, { ptr, i64, i64 } { ptr @.str.5869, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.5870, i64 1, i64 0 }) + %t74 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t73, { ptr, i64, i64 } { ptr @.str.6335, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 1, i64 0 }) call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t74) - br label %endif8847 -else8846: + br label %endif9206 +else9205: %t75 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.5872, i64 11, i64 0 }, ptr %a78 + store { ptr, i64, i64 } { ptr @.str.6338, i64 11, i64 0 }, ptr %a78 %t79 = call i64 @finch_str_find(ptr %a76, ptr %a78) %t80 = icmp sge i64 %t79, 0 - br label %logic.from8848 -logic.from8848: - br i1 %t80, label %logic.rhs8849, label %logic.end8850 -logic.rhs8849: + br label %logic.from9207 +logic.from9207: + br i1 %t80, label %logic.rhs9208, label %logic.end9209 +logic.rhs9208: %t81 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.5874, i64 9, i64 0 }, ptr %a84 + store { ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, ptr %a84 %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) %t86 = icmp sge i64 %t85, 0 - br label %logic.rend8851 -logic.rend8851: - br label %logic.end8850 -logic.end8850: - %t87 = phi i1 [ false, %logic.from8848 ], [ %t86, %logic.rend8851 ] - br i1 %t87, label %then8852, label %else8853 -then8852: + br label %logic.rend9210 +logic.rend9210: + br label %logic.end9209 +logic.end9209: + %t87 = phi i1 [ false, %logic.from9207 ], [ %t86, %logic.rend9210 ] + br i1 %t87, label %then9211, label %else9212 +then9211: %t88 = load { ptr, i64, i64 }, ptr %a26 - %t89 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.5875, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.5876, i64 1, i64 0 }) + %t89 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t88, { ptr, i64, i64 } { ptr @.str.6341, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 1, i64 0 }) store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.5877, i64 10, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.6343, i64 10, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t93) - br label %endif8854 -else8853: + br label %endif9213 +else9212: %t94 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5879, i64 1, i64 0 }, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.6345, i64 1, i64 0 }, ptr %a97 %t98 = call i32 @finch_str_starts(ptr %a95, ptr %a97) %t99 = icmp ne i32 %t98, 0 - br label %logic.from8855 -logic.from8855: - br i1 %t99, label %logic.rhs8856, label %logic.end8857 -logic.rhs8856: + br label %logic.from9214 +logic.from9214: + br i1 %t99, label %logic.rhs9215, label %logic.end9216 +logic.rhs9215: %t100 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t100, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.5881, i64 19, i64 0 }, ptr %a103 + store { ptr, i64, i64 } { ptr @.str.6347, i64 19, i64 0 }, ptr %a103 %t104 = call i64 @finch_str_find(ptr %a101, ptr %a103) %t105 = icmp sge i64 %t104, 0 - br label %logic.rend8858 -logic.rend8858: - br label %logic.end8857 -logic.end8857: - %t106 = phi i1 [ false, %logic.from8855 ], [ %t105, %logic.rend8858 ] - br i1 %t106, label %then8859, label %endif8861 -then8859: + br label %logic.rend9217 +logic.rend9217: + br label %logic.end9216 +logic.end9216: + %t106 = phi i1 [ false, %logic.from9214 ], [ %t105, %logic.rend9217 ] + br i1 %t106, label %then9218, label %endif9220 +then9218: %t107 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t107, ptr %a108 %t110 = load { ptr, i64, i64 }, ptr %a26 store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5884, i64 19, i64 0 }, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.6350, i64 19, i64 0 }, ptr %a113 %t114 = call i64 @finch_str_find(ptr %a111, ptr %a113) - call void @finch_str_sub(ptr %a109, ptr %a108, i64 1, i64 %t114, ptr @.str.5882, i64 125) + call void @finch_str_sub(ptr %a109, ptr %a108, i64 1, i64 %t114, ptr @.str.6348, i64 125) %t115 = load { ptr, i64, i64 }, ptr %a109 store { ptr, i64, i64 } %t115, ptr %a116 %t117 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 %t118 = load i1, ptr %t117 - br label %logic.from8862 -logic.from8862: - br i1 %t118, label %logic.rhs8863, label %logic.end8864 -logic.rhs8863: + br label %logic.from9221 +logic.from9221: + br i1 %t118, label %logic.rhs9222, label %logic.end9223 +logic.rhs9222: %t119 = load { ptr, i64, i64 }, ptr %a116 store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.5886, i64 1, i64 0 }, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.6352, i64 1, i64 0 }, ptr %a122 %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) %t124 = icmp ne i32 %t123, 0 - br label %logic.rend8865 -logic.rend8865: - br label %logic.end8864 -logic.end8864: - %t125 = phi i1 [ false, %logic.from8862 ], [ %t124, %logic.rend8865 ] - br i1 %t125, label %then8866, label %endif8868 -then8866: + br label %logic.rend9224 +logic.rend9224: + br label %logic.end9223 +logic.end9223: + %t125 = phi i1 [ false, %logic.from9221 ], [ %t124, %logic.rend9224 ] + br i1 %t125, label %then9225, label %endif9227 +then9225: %t126 = load { ptr, i64, i64 }, ptr %a116 store { ptr, i64, i64 } %t126, ptr %a127 %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %a116, i32 0, i32 1 %t130 = load i64, ptr %t129 - call void @finch_str_sub(ptr %a128, ptr %a127, i64 1, i64 %t130, ptr @.str.5887, i64 127) + call void @finch_str_sub(ptr %a128, ptr %a127, i64 1, i64 %t130, ptr @.str.6353, i64 127) %t131 = load { ptr, i64, i64 }, ptr %a128 store { ptr, i64, i64 } %t131, ptr %a116 - br label %endif8868 -endif8868: + br label %endif9227 +endif9227: %t132 = load { ptr, i64, i64 }, ptr %a116 call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t132) - br label %endif8861 -endif8861: - br label %endif8854 -endif8854: - br label %endif8847 -endif8847: - br label %endif8844 -endif8844: - br label %endif8841 -endif8841: - br label %endif8838 -endif8838: - br label %endif8835 -endif8835: - br label %endif8832 -endif8832: - br label %each.step8828 -each.step8828: + br label %endif9220 +endif9220: + br label %endif9213 +endif9213: + br label %endif9206 +endif9206: + br label %endif9203 +endif9203: + br label %endif9200 +endif9200: + br label %endif9197 +endif9197: + br label %endif9194 +endif9194: + br label %endif9191 +endif9191: + br label %each.step9187 +each.step9187: %t133 = load i64, ptr %a13 %t134 = add i64 %t133, 1 store i64 %t134, ptr %a13 - br label %each.cond8826 -each.end8829: + br label %each.cond9185 +each.end9188: %t135 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 %t137 = load i64, ptr %t136 %t138 = icmp eq i64 %t137, 0 - br label %logic.from8869 -logic.from8869: - br i1 %t138, label %logic.rhs8870, label %logic.end8871 -logic.rhs8870: + br label %logic.from9228 +logic.from9228: + br i1 %t138, label %logic.rhs9229, label %logic.end9230 +logic.rhs9229: %t139 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t139, i32 0, i32 1 %t141 = load i64, ptr %t140 %t142 = icmp eq i64 %t141, 0 - br label %logic.rend8872 -logic.rend8872: - br label %logic.end8871 -logic.end8871: - %t143 = phi i1 [ false, %logic.from8869 ], [ %t142, %logic.rend8872 ] - br i1 %t143, label %then8873, label %endif8875 -then8873: + br label %logic.rend9231 +logic.rend9231: + br label %logic.end9230 +logic.end9230: + %t143 = phi i1 [ false, %logic.from9228 ], [ %t142, %logic.rend9231 ] + br i1 %t143, label %then9232, label %endif9234 +then9232: %t144 = load { ptr, i64, i64 }, ptr %a1 store { ptr, i64, i64 } %t144, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.5888, i64 21, i64 0 }, ptr %a147 + store { ptr, i64, i64 } { ptr @.str.6354, i64 21, i64 0 }, ptr %a147 call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) %t148 = load { ptr, i64, i64 }, ptr %a145 %t149 = extractvalue { ptr, i64, i64 } %t148, 1 %t150 = trunc i64 %t149 to i32 %t151 = extractvalue { ptr, i64, i64 } %t148, 0 %t152 = icmp eq ptr %t151, null - %t153 = select i1 %t152, ptr @.str.5889, ptr %t151 - %t154 = call i32 (ptr, ...) @printf(ptr @.str.5890, i32 %t150, ptr %t153) - %t155 = call i32 (ptr, ...) @printf(ptr @.str.5891) + %t153 = select i1 %t152, ptr @.str.6355, ptr %t151 + %t154 = call i32 (ptr, ...) @printf(ptr @.str.6356, i32 %t150, ptr %t153) + %t155 = call i32 (ptr, ...) @printf(ptr @.str.6357) ret i64 1 -endif8875: +endif9234: %t156 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 store i64 0, ptr %a157 - br label %each.cond8876 -each.cond8876: + br label %each.cond9235 +each.cond9235: %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 %t159 = load i64, ptr %t158 %t160 = load i64, ptr %a157 %t161 = icmp slt i64 %t160, %t159 - br i1 %t161, label %each.body8877, label %each.end8879 -each.body8877: + br i1 %t161, label %each.body9236, label %each.end9238 +each.body9236: %t162 = load ptr, ptr %t156 %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 %t164 = load { ptr, i64, i64 }, ptr %t163 store { ptr, i64, i64 } %t164, ptr %a165 %t166 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.5892, i64 20, i64 0 }, ptr %a168 + store { ptr, i64, i64 } { ptr @.str.6358, i64 20, i64 0 }, ptr %a168 store { ptr, i64, i64 } %t166, ptr %a169 call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) %t170 = load { ptr, i64, i64 }, ptr %a167 store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5893, i64 62, i64 0 }, ptr %a173 + store { ptr, i64, i64 } { ptr @.str.6359, i64 62, i64 0 }, ptr %a173 call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) %t174 = load { ptr, i64, i64 }, ptr %a171 %t175 = extractvalue { ptr, i64, i64 } %t174, 1 %t176 = trunc i64 %t175 to i32 %t177 = extractvalue { ptr, i64, i64 } %t174, 0 %t178 = icmp eq ptr %t177, null - %t179 = select i1 %t178, ptr @.str.5894, ptr %t177 - %t180 = call i32 (ptr, ...) @printf(ptr @.str.5895, i32 %t176, ptr %t179) - %t181 = call i32 (ptr, ...) @printf(ptr @.str.5896) - br label %each.step8878 -each.step8878: + %t179 = select i1 %t178, ptr @.str.6360, ptr %t177 + %t180 = call i32 (ptr, ...) @printf(ptr @.str.6361, i32 %t176, ptr %t179) + %t181 = call i32 (ptr, ...) @printf(ptr @.str.6362) + br label %each.step9237 +each.step9237: %t182 = load i64, ptr %a157 %t183 = add i64 %t182, 1 store i64 %t183, ptr %a157 - br label %each.cond8876 -each.end8879: + br label %each.cond9235 +each.end9238: store { ptr, i64, i64 } zeroinitializer, ptr %a184 store { ptr, i64, i64 } zeroinitializer, ptr %a185 %t186 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 store i64 0, ptr %a187 - br label %each.cond8880 -each.cond8880: + br label %each.cond9239 +each.cond9239: %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t186, i32 0, i32 1 %t189 = load i64, ptr %t188 %t190 = load i64, ptr %a187 %t191 = icmp slt i64 %t190, %t189 - br i1 %t191, label %each.body8881, label %each.end8883 -each.body8881: + br i1 %t191, label %each.body9240, label %each.end9242 +each.body9240: %t192 = load ptr, ptr %t186 %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 %t194 = load { ptr, i64, i64 }, ptr %t193 store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a196 + store { ptr, i64, i64 } { ptr @.str.6363, i64 0, i64 0 }, ptr %a196 %t197 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 %t198 = load { ptr, i64, i64 }, ptr %a195 store { ptr, i64, i64 } %t198, ptr %a199 %t200 = call i64 @finch_map_find(ptr %t197, ptr %a199, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t201 = icmp sge i64 %t200, 0 - br i1 %t201, label %then8884, label %endif8886 -then8884: + br i1 %t201, label %then9243, label %endif9245 +then9243: %t202 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 %t203 = load { ptr, i64, i64 }, ptr %a195 store { ptr, i64, i64 } %t203, ptr %a204 %t205 = call i64 @finch_map_find(ptr %t202, ptr %a204, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) %t206 = icmp slt i64 %t205, 0 - br i1 %t206, label %map.missing8887, label %map.found8888 -map.missing8887: + br i1 %t206, label %map.missing9246, label %map.found9247 +map.missing9246: store { ptr, i64, i64 } zeroinitializer, ptr %a207 store { ptr, i64, i64 } %t203, ptr %a208 call void @finch_buf_str(ptr %a207, ptr %a208, i32 1) - call void @finch_map_missing(ptr @.str.5898, i64 145, ptr %a207) + call void @finch_map_missing(ptr @.str.6364, i64 145, ptr %a207) unreachable -map.found8888: +map.found9247: %t209 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t202, i32 0, i32 0 %t210 = load ptr, ptr %t209 %t211 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t210, i64 %t205 @@ -78241,41 +83091,41 @@ map.found8888: call void @finch_str_copy(ptr %a216, ptr %a215) %t217 = load { ptr, i64, i64 }, ptr %a216 store { ptr, i64, i64 } %t217, ptr %a196 - br label %endif8886 -endif8886: + br label %endif9245 +endif9245: %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1 %t219 = load { ptr, i64, i64 }, ptr %a196 store i64 -1, ptr %a220 %t221 = load i64, ptr %t218 %t222 = load ptr, ptr %a184 store i64 0, ptr %a223 - br label %find.cond8889 -find.cond8889: + br label %find.cond9248 +find.cond9248: %t224 = load i64, ptr %a223 %t225 = icmp slt i64 %t224, %t221 - br i1 %t225, label %find.body8890, label %find.end8893 -find.body8890: + br i1 %t225, label %find.body9249, label %find.end9252 +find.body9249: %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 %t224 %t227 = load { ptr, i64, i64 }, ptr %t226 store { ptr, i64, i64 } %t227, ptr %a228 store { ptr, i64, i64 } %t219, ptr %a229 %t230 = call i32 @finch_str_eq(ptr %a228, ptr %a229) %t231 = icmp ne i32 %t230, 0 - br i1 %t231, label %find.hit8891, label %find.next8892 -find.hit8891: + br i1 %t231, label %find.hit9250, label %find.next9251 +find.hit9250: store i64 %t224, ptr %a220 - br label %find.end8893 -find.next8892: + br label %find.end9252 +find.next9251: %t232 = add i64 %t224, 1 store i64 %t232, ptr %a223 - br label %find.cond8889 -find.end8893: + br label %find.cond9248 +find.end9252: %t233 = load i64, ptr %a220 store i64 %t233, ptr %a234 %t235 = load i64, ptr %a234 %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %then8894, label %endif8896 -then8894: + br i1 %t236, label %then9253, label %endif9255 +then9253: %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1 %t238 = load { ptr, i64, i64 }, ptr %a196 store { ptr, i64, i64 } %t238, ptr %a239 @@ -78300,46 +83150,46 @@ then8894: %t252 = load i64, ptr %t251 %t253 = sub i64 %t252, 1 store i64 %t253, ptr %a234 - br label %endif8896 -endif8896: + br label %endif9255 +endif9255: %t254 = load i64, ptr %a234 %t255 = load { ptr, i64, i64 }, ptr %a185 %t256 = extractvalue { ptr, i64, i64 } %t255, 1 %t257 = icmp uge i64 %t254, %t256 - br i1 %t257, label %range8897, label %inrange8898 -range8897: - call void @finch_panic_index(ptr @.str.5899, i64 153, i64 %t254, i64 %t256) + br i1 %t257, label %range9256, label %inrange9257 +range9256: + call void @finch_panic_index(ptr @.str.6365, i64 153, i64 %t254, i64 %t256) unreachable -inrange8898: +inrange9257: %t258 = extractvalue { ptr, i64, i64 } %t255, 0 %t259 = getelementptr inbounds %S.linker.Names, ptr %t258, i64 %t254 %t260 = load { ptr, i64, i64 }, ptr %a195 call void @finch.linker.Names.add(ptr %t259, { ptr, i64, i64 } %t260) - br label %each.step8882 -each.step8882: + br label %each.step9241 +each.step9241: %t261 = load i64, ptr %a187 %t262 = add i64 %t261, 1 store i64 %t262, ptr %a187 - br label %each.cond8880 -each.end8883: + br label %each.cond9239 +each.end9242: %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %a184, i32 0, i32 1 %t264 = load i64, ptr %t263 store i64 0, ptr %a265 - br label %for.cond8899 -for.cond8899: + br label %for.cond9258 +for.cond9258: %t266 = load i64, ptr %a265 %t267 = icmp slt i64 %t266, %t264 - br i1 %t267, label %for.body8900, label %for.end8902 -for.body8900: + br i1 %t267, label %for.body9259, label %for.end9261 +for.body9259: %t268 = load i64, ptr %a265 %t269 = load { ptr, i64, i64 }, ptr %a185 %t270 = extractvalue { ptr, i64, i64 } %t269, 1 %t271 = icmp uge i64 %t268, %t270 - br i1 %t271, label %range8903, label %inrange8904 -range8903: - call void @finch_panic_index(ptr @.str.5900, i64 156, i64 %t268, i64 %t270) + br i1 %t271, label %range9262, label %inrange9263 +range9262: + call void @finch_panic_index(ptr @.str.6366, i64 156, i64 %t268, i64 %t270) unreachable -inrange8904: +inrange9263: %t272 = extractvalue { ptr, i64, i64 } %t269, 0 %t273 = getelementptr inbounds %S.linker.Names, ptr %t272, i64 %t268 %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i32 0, i32 0 @@ -78352,26 +83202,26 @@ inrange8904: %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1 %t282 = load i64, ptr %t281 store i64 0, ptr %a283 - br label %for.cond8905 -for.cond8905: + br label %for.cond9264 +for.cond9264: %t284 = load i64, ptr %a283 %t285 = icmp slt i64 %t284, %t282 - br i1 %t285, label %for.body8906, label %for.end8908 -for.body8906: + br i1 %t285, label %for.body9265, label %for.end9267 +for.body9265: %t286 = load i64, ptr %a283 %t287 = icmp slt i64 %t286, 3 - br i1 %t287, label %then8909, label %endif8911 -then8909: + br i1 %t287, label %then9268, label %endif9270 +then9268: %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1 %t289 = load i64, ptr %a283 %t290 = load { ptr, i64, i64 }, ptr %a279 %t291 = extractvalue { ptr, i64, i64 } %t290, 1 %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range8912, label %inrange8913 -range8912: - call void @finch_panic_index(ptr @.str.5901, i64 160, i64 %t289, i64 %t291) + br i1 %t292, label %range9271, label %inrange9272 +range9271: + call void @finch_panic_index(ptr @.str.6367, i64 160, i64 %t289, i64 %t291) unreachable -inrange8913: +inrange9272: %t293 = extractvalue { ptr, i64, i64 } %t290, 0 %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 %t295 = load { ptr, i64, i64 }, ptr %t294 @@ -78385,28 +83235,28 @@ inrange8913: %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t299 store { ptr, i64, i64 } %t298, ptr %t302 store i64 %t300, ptr %t288 - br label %endif8911 -endif8911: - br label %for.step8907 -for.step8907: + br label %endif9270 +endif9270: + br label %for.step9266 +for.step9266: %t303 = load i64, ptr %a283 %t304 = add i64 %t303, 1 store i64 %t304, ptr %a283 - br label %for.cond8905 -for.end8908: + br label %for.cond9264 +for.end9267: %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %a280, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.6368, i64 2, i64 0 }, ptr %a306 call void @finch_str_join(ptr %a307, ptr %a280, ptr %a306) %t308 = load { ptr, i64, i64 }, ptr %a307 store { ptr, i64, i64 } %t308, ptr %a309 %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1 %t311 = load i64, ptr %t310 %t312 = icmp sgt i64 %t311, 3 - br i1 %t312, label %then8914, label %endif8916 -then8914: + br i1 %t312, label %then9273, label %endif9275 +then9273: %t313 = load { ptr, i64, i64 }, ptr %a309 store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.5903, i64 5, i64 0 }, ptr %a316 + store { ptr, i64, i64 } { ptr @.str.6369, i64 5, i64 0 }, ptr %a316 call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) %t317 = load { ptr, i64, i64 }, ptr %a314 %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1 @@ -78419,30 +83269,30 @@ then8914: call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) %t326 = load { ptr, i64, i64 }, ptr %a323 store { ptr, i64, i64 } %t326, ptr %a328 - store { ptr, i64, i64 } { ptr @.str.5904, i64 5, i64 0 }, ptr %a329 + store { ptr, i64, i64 } { ptr @.str.6370, i64 5, i64 0 }, ptr %a329 call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) %t330 = load { ptr, i64, i64 }, ptr %a327 store { ptr, i64, i64 } %t330, ptr %a309 - br label %endif8916 -endif8916: + br label %endif9275 +endif9275: %t331 = load i64, ptr %a265 %t332 = load { ptr, i64, i64 }, ptr %a184 %t333 = extractvalue { ptr, i64, i64 } %t332, 1 %t334 = icmp uge i64 %t331, %t333 - br i1 %t334, label %range8917, label %inrange8918 -range8917: - call void @finch_panic_index(ptr @.str.5905, i64 167, i64 %t331, i64 %t333) + br i1 %t334, label %range9276, label %inrange9277 +range9276: + call void @finch_panic_index(ptr @.str.6371, i64 167, i64 %t331, i64 %t333) unreachable -inrange8918: +inrange9277: %t335 = extractvalue { ptr, i64, i64 } %t332, 0 %t336 = getelementptr inbounds { ptr, i64, i64 }, ptr %t335, i64 %t331 %t337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t336, i32 0, i32 1 %t338 = load i64, ptr %t337 %t339 = icmp eq i64 %t338, 0 - br i1 %t339, label %then8919, label %endif8921 -then8919: + br i1 %t339, label %then9278, label %endif9280 +then9278: %t340 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.5906, i64 25, i64 0 }, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.6372, i64 25, i64 0 }, ptr %a342 store { ptr, i64, i64 } %t340, ptr %a343 call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) %t344 = load { ptr, i64, i64 }, ptr %a341 @@ -78450,27 +83300,27 @@ then8919: %t346 = trunc i64 %t345 to i32 %t347 = extractvalue { ptr, i64, i64 } %t344, 0 %t348 = icmp eq ptr %t347, null - %t349 = select i1 %t348, ptr @.str.5907, ptr %t347 - %t350 = call i32 (ptr, ...) @printf(ptr @.str.5908, i32 %t346, ptr %t349) - %t351 = call i32 (ptr, ...) @printf(ptr @.str.5909) - br label %for.step8901 -endif8921: - store { ptr, i64, i64 } { ptr @.str.5910, i64 4, i64 0 }, ptr %a352 + %t349 = select i1 %t348, ptr @.str.6373, ptr %t347 + %t350 = call i32 (ptr, ...) @printf(ptr @.str.6374, i32 %t346, ptr %t349) + %t351 = call i32 (ptr, ...) @printf(ptr @.str.6375) + br label %for.step9260 +endif9280: + store { ptr, i64, i64 } { ptr @.str.6376, i64 4, i64 0 }, ptr %a352 %t353 = getelementptr inbounds { ptr, i64, i64 }, ptr %a279, i32 0, i32 1 %t354 = load i64, ptr %t353 %t355 = icmp eq i64 %t354, 1 - br i1 %t355, label %then8922, label %endif8924 -then8922: - store { ptr, i64, i64 } { ptr @.str.5911, i64 5, i64 0 }, ptr %a352 - br label %endif8924 -endif8924: + br i1 %t355, label %then9281, label %endif9283 +then9281: + store { ptr, i64, i64 } { ptr @.str.6377, i64 5, i64 0 }, ptr %a352 + br label %endif9283 +endif9283: %t356 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.5912, i64 7, i64 0 }, ptr %a358 + store { ptr, i64, i64 } { ptr @.str.6378, i64 7, i64 0 }, ptr %a358 store { ptr, i64, i64 } %t356, ptr %a359 call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) %t360 = load { ptr, i64, i64 }, ptr %a357 store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, ptr %a363 + store { ptr, i64, i64 } { ptr @.str.6379, i64 1, i64 0 }, ptr %a363 call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) %t364 = load { ptr, i64, i64 }, ptr %a361 %t365 = load { ptr, i64, i64 }, ptr %a352 @@ -78479,18 +83329,18 @@ endif8924: call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) %t369 = load { ptr, i64, i64 }, ptr %a366 store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.5914, i64 7, i64 0 }, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.6380, i64 7, i64 0 }, ptr %a372 call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) %t373 = load { ptr, i64, i64 }, ptr %a370 %t374 = load i64, ptr %a265 %t375 = load { ptr, i64, i64 }, ptr %a184 %t376 = extractvalue { ptr, i64, i64 } %t375, 1 %t377 = icmp uge i64 %t374, %t376 - br i1 %t377, label %range8925, label %inrange8926 -range8925: - call void @finch_panic_index(ptr @.str.5915, i64 175, i64 %t374, i64 %t376) + br i1 %t377, label %range9284, label %inrange9285 +range9284: + call void @finch_panic_index(ptr @.str.6381, i64 175, i64 %t374, i64 %t376) unreachable -inrange8926: +inrange9285: %t378 = extractvalue { ptr, i64, i64 } %t375, 0 %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i64 %t374 %t380 = load { ptr, i64, i64 }, ptr %t379 @@ -78499,79 +83349,79 @@ inrange8926: call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) %t384 = load { ptr, i64, i64 }, ptr %a381 store { ptr, i64, i64 } %t384, ptr %a386 - store { ptr, i64, i64 } { ptr @.str.5916, i64 31, i64 0 }, ptr %a387 + store { ptr, i64, i64 } { ptr @.str.6382, i64 31, i64 0 }, ptr %a387 call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) %t388 = load { ptr, i64, i64 }, ptr %a385 %t389 = extractvalue { ptr, i64, i64 } %t388, 1 %t390 = trunc i64 %t389 to i32 %t391 = extractvalue { ptr, i64, i64 } %t388, 0 %t392 = icmp eq ptr %t391, null - %t393 = select i1 %t392, ptr @.str.5917, ptr %t391 - %t394 = call i32 (ptr, ...) @printf(ptr @.str.5918, i32 %t390, ptr %t393) - %t395 = call i32 (ptr, ...) @printf(ptr @.str.5919) - %t396 = extractvalue { ptr, i64, i64 } { ptr @.str.5920, i64 74, i64 0 }, 1 + %t393 = select i1 %t392, ptr @.str.6383, ptr %t391 + %t394 = call i32 (ptr, ...) @printf(ptr @.str.6384, i32 %t390, ptr %t393) + %t395 = call i32 (ptr, ...) @printf(ptr @.str.6385) + %t396 = extractvalue { ptr, i64, i64 } { ptr @.str.6386, i64 74, i64 0 }, 1 %t397 = trunc i64 %t396 to i32 - %t398 = extractvalue { ptr, i64, i64 } { ptr @.str.5920, i64 74, i64 0 }, 0 + %t398 = extractvalue { ptr, i64, i64 } { ptr @.str.6386, i64 74, i64 0 }, 0 %t399 = icmp eq ptr %t398, null - %t400 = select i1 %t399, ptr @.str.5921, ptr %t398 - %t401 = call i32 (ptr, ...) @printf(ptr @.str.5922, i32 %t397, ptr %t400) - %t402 = call i32 (ptr, ...) @printf(ptr @.str.5923) - %t403 = extractvalue { ptr, i64, i64 } { ptr @.str.5924, i64 66, i64 0 }, 1 + %t400 = select i1 %t399, ptr @.str.6387, ptr %t398 + %t401 = call i32 (ptr, ...) @printf(ptr @.str.6388, i32 %t397, ptr %t400) + %t402 = call i32 (ptr, ...) @printf(ptr @.str.6389) + %t403 = extractvalue { ptr, i64, i64 } { ptr @.str.6390, i64 66, i64 0 }, 1 %t404 = trunc i64 %t403 to i32 - %t405 = extractvalue { ptr, i64, i64 } { ptr @.str.5924, i64 66, i64 0 }, 0 + %t405 = extractvalue { ptr, i64, i64 } { ptr @.str.6390, i64 66, i64 0 }, 0 %t406 = icmp eq ptr %t405, null - %t407 = select i1 %t406, ptr @.str.5925, ptr %t405 - %t408 = call i32 (ptr, ...) @printf(ptr @.str.5926, i32 %t404, ptr %t407) - %t409 = call i32 (ptr, ...) @printf(ptr @.str.5927) - %t410 = extractvalue { ptr, i64, i64 } { ptr @.str.5928, i64 0, i64 0 }, 1 + %t407 = select i1 %t406, ptr @.str.6391, ptr %t405 + %t408 = call i32 (ptr, ...) @printf(ptr @.str.6392, i32 %t404, ptr %t407) + %t409 = call i32 (ptr, ...) @printf(ptr @.str.6393) + %t410 = extractvalue { ptr, i64, i64 } { ptr @.str.6394, i64 0, i64 0 }, 1 %t411 = trunc i64 %t410 to i32 - %t412 = extractvalue { ptr, i64, i64 } { ptr @.str.5928, i64 0, i64 0 }, 0 + %t412 = extractvalue { ptr, i64, i64 } { ptr @.str.6394, i64 0, i64 0 }, 0 %t413 = icmp eq ptr %t412, null - %t414 = select i1 %t413, ptr @.str.5929, ptr %t412 - %t415 = call i32 (ptr, ...) @printf(ptr @.str.5930, i32 %t411, ptr %t414) - %t416 = call i32 (ptr, ...) @printf(ptr @.str.5931) + %t414 = select i1 %t413, ptr @.str.6395, ptr %t412 + %t415 = call i32 (ptr, ...) @printf(ptr @.str.6396, i32 %t411, ptr %t414) + %t416 = call i32 (ptr, ...) @printf(ptr @.str.6397) %t417 = load i64, ptr %a265 %t418 = load { ptr, i64, i64 }, ptr %a184 %t419 = extractvalue { ptr, i64, i64 } %t418, 1 %t420 = icmp uge i64 %t417, %t419 - br i1 %t420, label %range8927, label %inrange8928 -range8927: - call void @finch_panic_index(ptr @.str.5933, i64 179, i64 %t417, i64 %t419) + br i1 %t420, label %range9286, label %inrange9287 +range9286: + call void @finch_panic_index(ptr @.str.6399, i64 179, i64 %t417, i64 %t419) unreachable -inrange8928: +inrange9287: %t421 = extractvalue { ptr, i64, i64 } %t418, 0 %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 %t417 %t423 = load { ptr, i64, i64 }, ptr %t422 %t424 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t423) - store { ptr, i64, i64 } { ptr @.str.5932, i64 12, i64 0 }, ptr %a426 + store { ptr, i64, i64 } { ptr @.str.6398, i64 12, i64 0 }, ptr %a426 store { ptr, i64, i64 } %t424, ptr %a427 call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) %t428 = load { ptr, i64, i64 }, ptr %a425 store { ptr, i64, i64 } %t428, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5934, i64 1, i64 0 }, ptr %a431 + store { ptr, i64, i64 } { ptr @.str.6400, i64 1, i64 0 }, ptr %a431 call void @finch_str_concat(ptr %a429, ptr %a430, ptr %a431) %t432 = load { ptr, i64, i64 }, ptr %a429 %t433 = extractvalue { ptr, i64, i64 } %t432, 1 %t434 = trunc i64 %t433 to i32 %t435 = extractvalue { ptr, i64, i64 } %t432, 0 %t436 = icmp eq ptr %t435, null - %t437 = select i1 %t436, ptr @.str.5935, ptr %t435 - %t438 = call i32 (ptr, ...) @printf(ptr @.str.5936, i32 %t434, ptr %t437) - %t439 = call i32 (ptr, ...) @printf(ptr @.str.5937) - %t440 = extractvalue { ptr, i64, i64 } { ptr @.str.5938, i64 0, i64 0 }, 1 + %t437 = select i1 %t436, ptr @.str.6401, ptr %t435 + %t438 = call i32 (ptr, ...) @printf(ptr @.str.6402, i32 %t434, ptr %t437) + %t439 = call i32 (ptr, ...) @printf(ptr @.str.6403) + %t440 = extractvalue { ptr, i64, i64 } { ptr @.str.6404, i64 0, i64 0 }, 1 %t441 = trunc i64 %t440 to i32 - %t442 = extractvalue { ptr, i64, i64 } { ptr @.str.5938, i64 0, i64 0 }, 0 + %t442 = extractvalue { ptr, i64, i64 } { ptr @.str.6404, i64 0, i64 0 }, 0 %t443 = icmp eq ptr %t442, null - %t444 = select i1 %t443, ptr @.str.5939, ptr %t442 - %t445 = call i32 (ptr, ...) @printf(ptr @.str.5940, i32 %t441, ptr %t444) - %t446 = call i32 (ptr, ...) @printf(ptr @.str.5941) - br label %for.step8901 -for.step8901: + %t444 = select i1 %t443, ptr @.str.6405, ptr %t442 + %t445 = call i32 (ptr, ...) @printf(ptr @.str.6406, i32 %t441, ptr %t444) + %t446 = call i32 (ptr, ...) @printf(ptr @.str.6407) + br label %for.step9260 +for.step9260: %t447 = load i64, ptr %a265 %t448 = add i64 %t447, 1 store i64 %t448, ptr %a265 - br label %for.cond8899 -for.end8902: + br label %for.cond9258 +for.end9261: ret i64 1 } @@ -78710,17 +83560,17 @@ entry: %t9 = icmp eq i32 %t8, 0 %t10 = load { ptr, i64, i64 }, ptr %a7 %t11 = load { ptr, i64, i64 }, ptr %a6 - br i1 %t9, label %try.failed8929, label %try.ok8930 -try.failed8929: + br i1 %t9, label %try.failed9288, label %try.ok9289 +try.failed9288: %t12 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t10, 2 ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t12 -try.ok8930: +try.ok9289: store { ptr, i64, i64 } %t11, ptr %a13 %t14 = call { ptr, i64, i64 } @finch.linker.cacheDir() store { ptr, i64, i64 } %t14, ptr %a15 %t16 = load { ptr, i64, i64 }, ptr %a15 store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.5942, i64 4, i64 0 }, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6408, i64 4, i64 0 }, ptr %a19 call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) %t20 = load { ptr, i64, i64 }, ptr %a17 %t21 = load { ptr, i64, i64 }, ptr %a13 @@ -78736,7 +83586,7 @@ try.ok8930: call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) %t32 = load { ptr, i64, i64 }, ptr %a29 store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.5943, i64 3, i64 0 }, ptr %a35 + store { ptr, i64, i64 } { ptr @.str.6409, i64 3, i64 0 }, ptr %a35 call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) %t36 = load { ptr, i64, i64 }, ptr %a33 %t37 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t36) @@ -78745,7 +83595,7 @@ try.ok8930: call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) %t41 = load { ptr, i64, i64 }, ptr %a38 store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.5944, i64 2, i64 0 }, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.6410, i64 2, i64 0 }, ptr %a44 call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) %t45 = load { ptr, i64, i64 }, ptr %a42 store { ptr, i64, i64 } %t45, ptr %a46 @@ -78753,8 +83603,8 @@ try.ok8930: store { ptr, i64, i64 } %t47, ptr %a48 %t49 = call i32 @finch_file_exists(ptr %a48) %t50 = icmp ne i32 %t49, 0 - br i1 %t50, label %then8931, label %endif8933 -then8931: + br i1 %t50, label %then9290, label %endif9292 +then9290: %t51 = load { ptr, i64, i64 }, ptr %a46 store { ptr, i64, i64 } %t51, ptr %a52 call void @finch_str_copy(ptr %a53, ptr %a52) @@ -78762,10 +83612,10 @@ then8931: %t55 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 %t56 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t55, { ptr, i64, i64 } %t54, 1 ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56 -endif8933: +endif9292: %t57 = load { ptr, i64, i64 }, ptr %a15 %t58 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } { ptr @.str.5945, i64 9, i64 0 }, ptr %a60 + store { ptr, i64, i64 } { ptr @.str.6411, i64 9, i64 0 }, ptr %a60 store { ptr, i64, i64 } %t58, ptr %a61 call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) %t62 = load { ptr, i64, i64 }, ptr %a59 @@ -78774,7 +83624,7 @@ endif8933: %t65 = call i64 @finch_shell(ptr %a63) %t66 = load { ptr, i64, i64 }, ptr %a46 store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5946, i64 5, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.6412, i64 5, i64 0 }, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 %t71 = call i32 @getpid() @@ -78786,23 +83636,23 @@ endif8933: call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) %t78 = load { ptr, i64, i64 }, ptr %a75 store { ptr, i64, i64 } %t78, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a80 + store { ptr, i64, i64 } { ptr @.str.6413, i64 6, i64 0 }, ptr %a80 %t81 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 %t82 = load i1, ptr %t81 - br i1 %t82, label %then8934, label %endif8936 -then8934: - store { ptr, i64, i64 } { ptr @.str.5948, i64 0, i64 0 }, ptr %a80 - br label %endif8936 -endif8936: + br i1 %t82, label %then9293, label %endif9295 +then9293: + store { ptr, i64, i64 } { ptr @.str.6414, i64 0, i64 0 }, ptr %a80 + br label %endif9295 +endif9295: %t83 = load { ptr, i64, i64 }, ptr %a79 store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.5949, i64 4, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.6415, i64 4, i64 0 }, ptr %a86 call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) %t87 = load { ptr, i64, i64 }, ptr %a84 store { ptr, i64, i64 } %t87, ptr %a88 %t89 = load { ptr, i64, i64 }, ptr %a3 store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.5950, i64 4, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.6416, i64 4, i64 0 }, ptr %a92 call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) %t93 = load { ptr, i64, i64 }, ptr %a90 %t94 = load { ptr, i64, i64 }, ptr %a80 @@ -78811,7 +83661,7 @@ endif8936: call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) %t98 = load { ptr, i64, i64 }, ptr %a95 store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.5951, i64 4, i64 0 }, ptr %a101 + store { ptr, i64, i64 } { ptr @.str.6417, i64 4, i64 0 }, ptr %a101 call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) %t102 = load { ptr, i64, i64 }, ptr %a99 %t103 = load { ptr, i64, i64 }, ptr %a1 @@ -78821,7 +83671,7 @@ endif8936: call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) %t108 = load { ptr, i64, i64 }, ptr %a105 store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a111 + store { ptr, i64, i64 } { ptr @.str.6418, i64 4, i64 0 }, ptr %a111 call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) %t112 = load { ptr, i64, i64 }, ptr %a109 %t113 = load { ptr, i64, i64 }, ptr %a79 @@ -78831,7 +83681,7 @@ endif8936: call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) %t118 = load { ptr, i64, i64 }, ptr %a115 store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.5953, i64 3, i64 0 }, ptr %a121 + store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %a121 call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) %t122 = load { ptr, i64, i64 }, ptr %a119 %t123 = load { ptr, i64, i64 }, ptr %a88 @@ -78841,7 +83691,7 @@ endif8936: call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) %t128 = load { ptr, i64, i64 }, ptr %a125 store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5954, i64 5, i64 0 }, ptr %a131 + store { ptr, i64, i64 } { ptr @.str.6420, i64 5, i64 0 }, ptr %a131 call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) %t132 = load { ptr, i64, i64 }, ptr %a129 store { ptr, i64, i64 } %t132, ptr %a134 @@ -78850,8 +83700,8 @@ endif8936: store i64 %t135, ptr %a136 %t137 = load i64, ptr %a136 %t138 = icmp ne i64 %t137, 0 - br i1 %t138, label %then8937, label %endif8939 -then8937: + br i1 %t138, label %then9296, label %endif9298 +then9296: %t139 = load { ptr, i64, i64 }, ptr %a88 store { ptr, i64, i64 } %t139, ptr %a140 store { ptr, i64, i64 } zeroinitializer, ptr %a141 @@ -78860,25 +83710,25 @@ then8937: %t144 = icmp eq i32 %t143, 0 %t145 = load { ptr, i64, i64 }, ptr %a142 %t146 = load { ptr, i64, i64 }, ptr %a141 - br i1 %t144, label %or.failed8940, label %or.ok8941 -or.failed8940: + br i1 %t144, label %or.failed9299, label %or.ok9300 +or.failed9299: store { ptr, i64, i64 } %t145, ptr %a147 - br label %or.bend8942 -or.bend8942: - br label %or.end8943 -or.ok8941: - br label %or.end8943 -or.end8943: - %t148 = phi { ptr, i64, i64 } [ { ptr @.str.5955, i64 0, i64 0 }, %or.bend8942 ], [ %t146, %or.ok8941 ] + br label %or.bend9301 +or.bend9301: + br label %or.end9302 +or.ok9300: + br label %or.end9302 +or.end9302: + %t148 = phi { ptr, i64, i64 } [ { ptr @.str.6421, i64 0, i64 0 }, %or.bend9301 ], [ %t146, %or.ok9300 ] store { ptr, i64, i64 } %t148, ptr %a149 %t150 = load { ptr, i64, i64 }, ptr %a79 %t151 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t150) - store { ptr, i64, i64 } { ptr @.str.5956, i64 6, i64 0 }, ptr %a153 + store { ptr, i64, i64 } { ptr @.str.6422, i64 6, i64 0 }, ptr %a153 store { ptr, i64, i64 } %t151, ptr %a154 call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) %t155 = load { ptr, i64, i64 }, ptr %a152 store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.5957, i64 1, i64 0 }, ptr %a158 + store { ptr, i64, i64 } { ptr @.str.6423, i64 1, i64 0 }, ptr %a158 call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) %t159 = load { ptr, i64, i64 }, ptr %a156 %t160 = load { ptr, i64, i64 }, ptr %a88 @@ -78892,7 +83742,7 @@ or.end8943: %t168 = call i64 @finch_shell(ptr %a166) %t169 = load { ptr, i64, i64 }, ptr %a149 store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5958, i64 46, i64 0 }, ptr %a172 + store { ptr, i64, i64 } { ptr @.str.6424, i64 46, i64 0 }, ptr %a172 call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) %t173 = load { ptr, i64, i64 }, ptr %a170 %t174 = load { ptr, i64, i64 }, ptr %a3 @@ -78901,20 +83751,20 @@ or.end8943: call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) %t178 = load { ptr, i64, i64 }, ptr %a175 store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5959, i64 30, i64 0 }, ptr %a181 + store { ptr, i64, i64 } { ptr @.str.6425, i64 30, i64 0 }, ptr %a181 call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) %t182 = load { ptr, i64, i64 }, ptr %a179 %t183 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t182, 2 ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t183 -endif8939: +endif9298: %t184 = load { ptr, i64, i64 }, ptr %a88 %t185 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a187 + store { ptr, i64, i64 } { ptr @.str.6426, i64 6, i64 0 }, ptr %a187 store { ptr, i64, i64 } %t185, ptr %a188 call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) %t189 = load { ptr, i64, i64 }, ptr %a186 store { ptr, i64, i64 } %t189, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.5961, i64 7, i64 0 }, ptr %a192 + store { ptr, i64, i64 } { ptr @.str.6427, i64 7, i64 0 }, ptr %a192 call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) %t193 = load { ptr, i64, i64 }, ptr %a190 %t194 = load { ptr, i64, i64 }, ptr %a79 @@ -78924,7 +83774,7 @@ endif8939: call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) %t199 = load { ptr, i64, i64 }, ptr %a196 store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.5962, i64 1, i64 0 }, ptr %a202 + store { ptr, i64, i64 } { ptr @.str.6428, i64 1, i64 0 }, ptr %a202 call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) %t203 = load { ptr, i64, i64 }, ptr %a200 %t204 = load { ptr, i64, i64 }, ptr %a46 @@ -79212,9 +84062,9 @@ entry: store %S.linker.Build %p0, ptr %a1 store %S.platform.Target %p1, ptr %a2 store %S.cimport.CImports %p2, ptr %a3 - %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.5963, i64 11, i64 0 }, 0 + %t4 = extractvalue { ptr, i64, i64 } { ptr @.str.6429, i64 11, i64 0 }, 0 %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.5964, ptr %t4 + %t6 = select i1 %t5, ptr @.str.6430, ptr %t4 %t7 = call ptr @getenv(ptr %t6) store { ptr, i64, i64 } zeroinitializer, ptr %a8 call void @finch_str_from_c(ptr %a8, ptr %t7) @@ -79226,11 +84076,11 @@ entry: %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 %t15 = load i64, ptr %t14 %t16 = icmp eq i64 %t15, 0 - br i1 %t16, label %then8944, label %endif8946 -then8944: - store { ptr, i64, i64 } { ptr @.str.5965, i64 5, i64 0 }, ptr %a13 - br label %endif8946 -endif8946: + br i1 %t16, label %then9303, label %endif9305 +then9303: + store { ptr, i64, i64 } { ptr @.str.6431, i64 5, i64 0 }, ptr %a13 + br label %endif9305 +endif9305: %t17 = load { ptr, i64, i64 }, ptr %a13 store { ptr, i64, i64 } %t17, ptr %a18 call void @finch_str_copy(ptr %a19, ptr %a18) @@ -79238,30 +84088,30 @@ endif8946: store { ptr, i64, i64 } %t20, ptr %a21 %t22 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 %t23 = load i1, ptr %t22 - br i1 %t23, label %then8947, label %else8948 -then8947: + br i1 %t23, label %then9306, label %else9307 +then9306: %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 %t25 = load { ptr, i64, i64 }, ptr %t24 store { ptr, i64, i64 } %t25, ptr %a26 call void @finch_str_copy(ptr %a27, ptr %a26) %t28 = load { ptr, i64, i64 }, ptr %a27 store { ptr, i64, i64 } %t28, ptr %a21 - br label %endif8949 -else8948: - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.5966, i64 8, i64 0 }, 0 + br label %endif9308 +else9307: + %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.6432, i64 8, i64 0 }, 0 %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.5967, ptr %t29 + %t31 = select i1 %t30, ptr @.str.6433, ptr %t29 %t32 = call ptr @getenv(ptr %t31) store { ptr, i64, i64 } zeroinitializer, ptr %a33 call void @finch_str_from_c(ptr %a33, ptr %t32) %t34 = load { ptr, i64, i64 }, ptr %a33 %t35 = extractvalue { ptr, i64, i64 } %t34, 1 %t36 = icmp sgt i64 %t35, 0 - br i1 %t36, label %then8950, label %endif8952 -then8950: - %t37 = extractvalue { ptr, i64, i64 } { ptr @.str.5968, i64 8, i64 0 }, 0 + br i1 %t36, label %then9309, label %endif9311 +then9309: + %t37 = extractvalue { ptr, i64, i64 } { ptr @.str.6434, i64 8, i64 0 }, 0 %t38 = icmp eq ptr %t37, null - %t39 = select i1 %t38, ptr @.str.5969, ptr %t37 + %t39 = select i1 %t38, ptr @.str.6435, ptr %t37 %t40 = call ptr @getenv(ptr %t39) store { ptr, i64, i64 } zeroinitializer, ptr %a41 call void @finch_str_from_c(ptr %a41, ptr %t40) @@ -79270,10 +84120,10 @@ then8950: call void @finch_str_copy(ptr %a44, ptr %a43) %t45 = load { ptr, i64, i64 }, ptr %a44 store { ptr, i64, i64 } %t45, ptr %a21 - br label %endif8952 -endif8952: - br label %endif8949 -endif8949: + br label %endif9311 +endif9311: + br label %endif9308 +endif9308: %t46 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 %t47 = load { ptr, i64, i64 }, ptr %t46 %t48 = load %S.platform.Target, ptr %a2 @@ -79283,31 +84133,31 @@ endif8949: %t52 = xor i1 %t51, true %t53 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 2 %t54 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t50, 1 - br i1 %t52, label %or.failed8953, label %or.ok8954 -or.failed8953: + br i1 %t52, label %or.failed9312, label %or.ok9313 +or.failed9312: store { ptr, i64, i64 } %t53, ptr %a55 %t56 = load { ptr, i64, i64 }, ptr %a55 %t57 = extractvalue { ptr, i64, i64 } %t56, 1 %t58 = trunc i64 %t57 to i32 %t59 = extractvalue { ptr, i64, i64 } %t56, 0 %t60 = icmp eq ptr %t59, null - %t61 = select i1 %t60, ptr @.str.5970, ptr %t59 - %t62 = call i32 (ptr, ...) @printf(ptr @.str.5971, i32 %t58, ptr %t61) - %t63 = call i32 (ptr, ...) @printf(ptr @.str.5972) + %t61 = select i1 %t60, ptr @.str.6436, ptr %t59 + %t62 = call i32 (ptr, ...) @printf(ptr @.str.6437, i32 %t58, ptr %t61) + %t63 = call i32 (ptr, ...) @printf(ptr @.str.6438) ret i64 1 -or.ok8954: +or.ok9313: store { ptr, i64, i64 } %t54, ptr %a64 %t65 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 %t66 = load { ptr, i64, i64 }, ptr %t65 store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.5973, i64 3, i64 0 }, ptr %a69 + store { ptr, i64, i64 } { ptr @.str.6439, i64 3, i64 0 }, ptr %a69 call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) %t70 = load { ptr, i64, i64 }, ptr %a67 store { ptr, i64, i64 } %t70, ptr %a71 %t72 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 %t73 = load { ptr, i64, i64 }, ptr %t72 store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5974, i64 2, i64 0 }, ptr %a76 + store { ptr, i64, i64 } { ptr @.str.6440, i64 2, i64 0 }, ptr %a76 call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) %t77 = load { ptr, i64, i64 }, ptr %a74 store { ptr, i64, i64 } %t77, ptr %a78 @@ -79318,24 +84168,24 @@ or.ok8954: store { ptr, i64, i64 } %t82, ptr %a83 %t84 = call i32 @finch_write_file(ptr %a80, ptr %a83) %t85 = icmp ne i32 %t84, 0 - store { ptr, i64, i64 } { ptr @.str.5975, i64 0, i64 0 }, ptr %a86 + store { ptr, i64, i64 } { ptr @.str.6441, i64 0, i64 0 }, ptr %a86 %t87 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 %t88 = load i1, ptr %t87 - br i1 %t88, label %then8955, label %endif8957 -then8955: + br i1 %t88, label %then9314, label %endif9316 +then9314: %t89 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.5976, i64 10, i64 0 }, ptr %a92 + store { ptr, i64, i64 } { ptr @.str.6442, i64 10, i64 0 }, ptr %a92 store { ptr, i64, i64 } %t90, ptr %a93 call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) %t94 = load { ptr, i64, i64 }, ptr %a91 store { ptr, i64, i64 } %t94, ptr %a86 - br label %endif8957 -endif8957: + br label %endif9316 +endif9316: %t95 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 %t96 = load { ptr, i64, i64 }, ptr %t95 store { ptr, i64, i64 } %t96, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.5977, i64 4, i64 0 }, ptr %a99 + store { ptr, i64, i64 } { ptr @.str.6443, i64 4, i64 0 }, ptr %a99 call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) %t100 = load { ptr, i64, i64 }, ptr %a97 store { ptr, i64, i64 } %t100, ptr %a101 @@ -79346,7 +84196,7 @@ endif8957: call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) %t107 = load { ptr, i64, i64 }, ptr %a104 store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.5978, i64 1, i64 0 }, ptr %a110 + store { ptr, i64, i64 } { ptr @.str.6444, i64 1, i64 0 }, ptr %a110 call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) %t111 = load { ptr, i64, i64 }, ptr %a108 %t112 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 @@ -79362,7 +84212,7 @@ endif8957: call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) %t123 = load { ptr, i64, i64 }, ptr %a120 store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.5979, i64 7, i64 0 }, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6445, i64 7, i64 0 }, ptr %a126 call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) %t127 = load { ptr, i64, i64 }, ptr %a124 %t128 = load { ptr, i64, i64 }, ptr %a71 @@ -79372,7 +84222,7 @@ endif8957: call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) %t133 = load { ptr, i64, i64 }, ptr %a130 store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6446, i64 4, i64 0 }, ptr %a136 call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) %t137 = load { ptr, i64, i64 }, ptr %a134 %t138 = load { ptr, i64, i64 }, ptr %a78 @@ -79382,7 +84232,7 @@ endif8957: call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) %t143 = load { ptr, i64, i64 }, ptr %a140 store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5981, i64 3, i64 0 }, ptr %a146 + store { ptr, i64, i64 } { ptr @.str.6447, i64 3, i64 0 }, ptr %a146 call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) %t147 = load { ptr, i64, i64 }, ptr %a144 %t148 = load { ptr, i64, i64 }, ptr %a101 @@ -79392,7 +84242,7 @@ endif8957: call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) %t153 = load { ptr, i64, i64 }, ptr %a150 store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a156 + store { ptr, i64, i64 } { ptr @.str.6448, i64 5, i64 0 }, ptr %a156 call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) %t157 = load { ptr, i64, i64 }, ptr %a154 store { ptr, i64, i64 } %t157, ptr %a159 @@ -79401,7 +84251,7 @@ endif8957: store i64 %t160, ptr %a161 %t162 = load { ptr, i64, i64 }, ptr %a71 %t163 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t162) - store { ptr, i64, i64 } { ptr @.str.5983, i64 6, i64 0 }, ptr %a165 + store { ptr, i64, i64 } { ptr @.str.6449, i64 6, i64 0 }, ptr %a165 store { ptr, i64, i64 } %t163, ptr %a166 call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) %t167 = load { ptr, i64, i64 }, ptr %a164 @@ -79410,8 +84260,8 @@ endif8957: %t170 = call i64 @finch_shell(ptr %a168) %t171 = load i64, ptr %a161 %t172 = icmp ne i64 %t171, 0 - br i1 %t172, label %then8958, label %endif8960 -then8958: + br i1 %t172, label %then9317, label %endif9319 +then9317: %t173 = load { ptr, i64, i64 }, ptr %a101 store { ptr, i64, i64 } %t173, ptr %a174 store { ptr, i64, i64 } zeroinitializer, ptr %a175 @@ -79420,38 +84270,38 @@ then8958: %t178 = icmp eq i32 %t177, 0 %t179 = load { ptr, i64, i64 }, ptr %a176 %t180 = load { ptr, i64, i64 }, ptr %a175 - br i1 %t178, label %or.failed8961, label %or.ok8962 -or.failed8961: + br i1 %t178, label %or.failed9320, label %or.ok9321 +or.failed9320: store { ptr, i64, i64 } %t179, ptr %a181 - br label %or.bend8963 -or.bend8963: - br label %or.end8964 -or.ok8962: - br label %or.end8964 -or.end8964: - %t182 = phi { ptr, i64, i64 } [ { ptr @.str.5984, i64 0, i64 0 }, %or.bend8963 ], [ %t180, %or.ok8962 ] + br label %or.bend9322 +or.bend9322: + br label %or.end9323 +or.ok9321: + br label %or.end9323 +or.end9323: + %t182 = phi { ptr, i64, i64 } [ { ptr @.str.6450, i64 0, i64 0 }, %or.bend9322 ], [ %t180, %or.ok9321 ] %t183 = extractvalue { ptr, i64, i64 } %t182, 1 %t184 = trunc i64 %t183 to i32 %t185 = extractvalue { ptr, i64, i64 } %t182, 0 %t186 = icmp eq ptr %t185, null - %t187 = select i1 %t186, ptr @.str.5985, ptr %t185 - %t188 = call i32 (ptr, ...) @printf(ptr @.str.5986, i32 %t184, ptr %t187) - %t189 = call i32 (ptr, ...) @printf(ptr @.str.5987) - %t190 = extractvalue { ptr, i64, i64 } { ptr @.str.5988, i64 46, i64 0 }, 1 + %t187 = select i1 %t186, ptr @.str.6451, ptr %t185 + %t188 = call i32 (ptr, ...) @printf(ptr @.str.6452, i32 %t184, ptr %t187) + %t189 = call i32 (ptr, ...) @printf(ptr @.str.6453) + %t190 = extractvalue { ptr, i64, i64 } { ptr @.str.6454, i64 46, i64 0 }, 1 %t191 = trunc i64 %t190 to i32 - %t192 = extractvalue { ptr, i64, i64 } { ptr @.str.5988, i64 46, i64 0 }, 0 + %t192 = extractvalue { ptr, i64, i64 } { ptr @.str.6454, i64 46, i64 0 }, 0 %t193 = icmp eq ptr %t192, null - %t194 = select i1 %t193, ptr @.str.5989, ptr %t192 - %t195 = call i32 (ptr, ...) @printf(ptr @.str.5990, i32 %t191, ptr %t194) - %t196 = call i32 (ptr, ...) @printf(ptr @.str.5991) + %t194 = select i1 %t193, ptr @.str.6455, ptr %t192 + %t195 = call i32 (ptr, ...) @printf(ptr @.str.6456, i32 %t191, ptr %t194) + %t196 = call i32 (ptr, ...) @printf(ptr @.str.6457) %t197 = load { ptr, i64, i64 }, ptr %a78 %t198 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t197) - store { ptr, i64, i64 } { ptr @.str.5992, i64 6, i64 0 }, ptr %a200 + store { ptr, i64, i64 } { ptr @.str.6458, i64 6, i64 0 }, ptr %a200 store { ptr, i64, i64 } %t198, ptr %a201 call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) %t202 = load { ptr, i64, i64 }, ptr %a199 store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5993, i64 1, i64 0 }, ptr %a205 + store { ptr, i64, i64 } { ptr @.str.6459, i64 1, i64 0 }, ptr %a205 call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) %t206 = load { ptr, i64, i64 }, ptr %a203 %t207 = load { ptr, i64, i64 }, ptr %a101 @@ -79464,10 +84314,10 @@ or.end8964: call void @finch_str_copy(ptr %a213, ptr %a214) %t215 = call i64 @finch_shell(ptr %a213) ret i64 1 -endif8960: +endif9319: %t216 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.5994, i64 1, i64 0 }, ptr %a219 + store { ptr, i64, i64 } { ptr @.str.6460, i64 1, i64 0 }, ptr %a219 call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) %t220 = load { ptr, i64, i64 }, ptr %a217 %t221 = load { ptr, i64, i64 }, ptr %a78 @@ -79477,7 +84327,7 @@ endif8960: call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) %t226 = load { ptr, i64, i64 }, ptr %a223 store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5995, i64 1, i64 0 }, ptr %a229 + store { ptr, i64, i64 } { ptr @.str.6461, i64 1, i64 0 }, ptr %a229 call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) %t230 = load { ptr, i64, i64 }, ptr %a227 %t231 = load { ptr, i64, i64 }, ptr %a64 @@ -79487,7 +84337,7 @@ endif8960: call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) %t236 = load { ptr, i64, i64 }, ptr %a233 store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5996, i64 4, i64 0 }, ptr %a239 + store { ptr, i64, i64 } { ptr @.str.6462, i64 4, i64 0 }, ptr %a239 call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) %t240 = load { ptr, i64, i64 }, ptr %a237 %t241 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 @@ -79501,68 +84351,68 @@ endif8960: %t249 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 %t250 = load i1, ptr %t249 %t251 = xor i1 %t250, true - br i1 %t251, label %then8965, label %endif8967 -then8965: + br i1 %t251, label %then9324, label %endif9326 +then9324: %t252 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t252, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.5997, i64 4, i64 0 }, ptr %a255 + store { ptr, i64, i64 } { ptr @.str.6463, i64 4, i64 0 }, ptr %a255 call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) %t256 = load { ptr, i64, i64 }, ptr %a253 store { ptr, i64, i64 } %t256, ptr %a248 - br label %endif8967 -endif8967: + br label %endif9326 +endif9326: %t257 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 %t258 = load i1, ptr %t257 - br i1 %t258, label %then8968, label %endif8970 -then8968: + br i1 %t258, label %then9327, label %endif9329 +then9327: %t259 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 %t260 = load i1, ptr %t259 - br i1 %t260, label %then8971, label %else8972 -then8971: + br i1 %t260, label %then9330, label %else9331 +then9330: %t261 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5998, i64 12, i64 0 }, ptr %a264 + store { ptr, i64, i64 } { ptr @.str.6464, i64 12, i64 0 }, ptr %a264 call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) %t265 = load { ptr, i64, i64 }, ptr %a262 store { ptr, i64, i64 } %t265, ptr %a248 - br label %endif8973 -else8972: + br label %endif9332 +else9331: %t266 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5999, i64 8, i64 0 }, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.6465, i64 8, i64 0 }, ptr %a269 call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) %t270 = load { ptr, i64, i64 }, ptr %a267 store { ptr, i64, i64 } %t270, ptr %a248 - br label %endif8973 -endif8973: - br label %endif8970 -endif8970: + br label %endif9332 +endif9332: + br label %endif9329 +endif9329: store { ptr, i64, i64 } zeroinitializer, ptr %a271 %t272 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 store i64 0, ptr %a273 - br label %each.cond8974 -each.cond8974: + br label %each.cond9333 +each.cond9333: %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t272, i32 0, i32 1 %t275 = load i64, ptr %t274 %t276 = load i64, ptr %a273 %t277 = icmp slt i64 %t276, %t275 - br i1 %t277, label %each.body8975, label %each.end8977 -each.body8975: + br i1 %t277, label %each.body9334, label %each.end9336 +each.body9334: %t278 = load ptr, ptr %t272 %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 %t276 %t280 = load { ptr, i64, i64 }, ptr %t279 store { ptr, i64, i64 } %t280, ptr %a281 %t282 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t282, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.6001, i64 2, i64 0 }, ptr %a285 + store { ptr, i64, i64 } { ptr @.str.6467, i64 2, i64 0 }, ptr %a285 %t286 = call i32 @finch_str_ends(ptr %a283, ptr %a285) %t287 = icmp ne i32 %t286, 0 - br i1 %t287, label %then8978, label %else8979 -then8978: + br i1 %t287, label %then9337, label %else9338 +then9337: %t288 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 %t289 = load { ptr, i64, i64 }, ptr %t288 store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.6002, i64 1, i64 0 }, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.6468, i64 1, i64 0 }, ptr %a292 call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) %t293 = load { ptr, i64, i64 }, ptr %a290 %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1 @@ -79574,21 +84424,21 @@ then8978: call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) %t301 = load { ptr, i64, i64 }, ptr %a298 store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.6003, i64 2, i64 0 }, ptr %a304 + store { ptr, i64, i64 } { ptr @.str.6469, i64 2, i64 0 }, ptr %a304 call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) %t305 = load { ptr, i64, i64 }, ptr %a302 store { ptr, i64, i64 } %t305, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.6004, i64 6, i64 0 }, ptr %a307 + store { ptr, i64, i64 } { ptr @.str.6470, i64 6, i64 0 }, ptr %a307 %t308 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 %t309 = load i1, ptr %t308 - br i1 %t309, label %then8981, label %endif8983 -then8981: - store { ptr, i64, i64 } { ptr @.str.6005, i64 0, i64 0 }, ptr %a307 - br label %endif8983 -endif8983: + br i1 %t309, label %then9340, label %endif9342 +then9340: + store { ptr, i64, i64 } { ptr @.str.6471, i64 0, i64 0 }, ptr %a307 + br label %endif9342 +endif9342: %t310 = load { ptr, i64, i64 }, ptr %a21 store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.6006, i64 4, i64 0 }, ptr %a313 + store { ptr, i64, i64 } { ptr @.str.6472, i64 4, i64 0 }, ptr %a313 call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) %t314 = load { ptr, i64, i64 }, ptr %a311 %t315 = load { ptr, i64, i64 }, ptr %a307 @@ -79597,7 +84447,7 @@ endif8983: call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) %t319 = load { ptr, i64, i64 }, ptr %a316 store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.6007, i64 4, i64 0 }, ptr %a322 + store { ptr, i64, i64 } { ptr @.str.6473, i64 4, i64 0 }, ptr %a322 call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) %t323 = load { ptr, i64, i64 }, ptr %a320 %t324 = load { ptr, i64, i64 }, ptr %a281 @@ -79607,7 +84457,7 @@ endif8983: call void @finch_str_concat(ptr %a326, ptr %a327, ptr %a328) %t329 = load { ptr, i64, i64 }, ptr %a326 store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.6008, i64 4, i64 0 }, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.6474, i64 4, i64 0 }, ptr %a332 call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) %t333 = load { ptr, i64, i64 }, ptr %a330 %t334 = load { ptr, i64, i64 }, ptr %a306 @@ -79617,7 +84467,7 @@ endif8983: call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) %t339 = load { ptr, i64, i64 }, ptr %a336 store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.6009, i64 3, i64 0 }, ptr %a342 + store { ptr, i64, i64 } { ptr @.str.6475, i64 3, i64 0 }, ptr %a342 call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) %t343 = load { ptr, i64, i64 }, ptr %a340 %t344 = load { ptr, i64, i64 }, ptr %a101 @@ -79627,7 +84477,7 @@ endif8983: call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) %t349 = load { ptr, i64, i64 }, ptr %a346 store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.6010, i64 5, i64 0 }, ptr %a352 + store { ptr, i64, i64 } { ptr @.str.6476, i64 5, i64 0 }, ptr %a352 call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) %t353 = load { ptr, i64, i64 }, ptr %a350 store { ptr, i64, i64 } %t353, ptr %a355 @@ -79636,8 +84486,8 @@ endif8983: store i64 %t356, ptr %a357 %t358 = load i64, ptr %a357 %t359 = icmp ne i64 %t358, 0 - br i1 %t359, label %then8984, label %endif8986 -then8984: + br i1 %t359, label %then9343, label %endif9345 +then9343: %t360 = load { ptr, i64, i64 }, ptr %a101 store { ptr, i64, i64 } %t360, ptr %a361 store { ptr, i64, i64 } zeroinitializer, ptr %a362 @@ -79646,18 +84496,18 @@ then8984: %t365 = icmp eq i32 %t364, 0 %t366 = load { ptr, i64, i64 }, ptr %a363 %t367 = load { ptr, i64, i64 }, ptr %a362 - br i1 %t365, label %or.failed8987, label %or.ok8988 -or.failed8987: + br i1 %t365, label %or.failed9346, label %or.ok9347 +or.failed9346: store { ptr, i64, i64 } %t366, ptr %a368 - br label %or.bend8989 -or.bend8989: - br label %or.end8990 -or.ok8988: - br label %or.end8990 -or.end8990: - %t369 = phi { ptr, i64, i64 } [ { ptr @.str.6011, i64 0, i64 0 }, %or.bend8989 ], [ %t367, %or.ok8988 ] + br label %or.bend9348 +or.bend9348: + br label %or.end9349 +or.ok9347: + br label %or.end9349 +or.end9349: + %t369 = phi { ptr, i64, i64 } [ { ptr @.str.6477, i64 0, i64 0 }, %or.bend9348 ], [ %t367, %or.ok9347 ] store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.6012, i64 24, i64 0 }, ptr %a372 + store { ptr, i64, i64 } { ptr @.str.6478, i64 24, i64 0 }, ptr %a372 call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) %t373 = load { ptr, i64, i64 }, ptr %a370 %t374 = load { ptr, i64, i64 }, ptr %a281 @@ -79669,17 +84519,17 @@ or.end8990: %t380 = trunc i64 %t379 to i32 %t381 = extractvalue { ptr, i64, i64 } %t378, 0 %t382 = icmp eq ptr %t381, null - %t383 = select i1 %t382, ptr @.str.6013, ptr %t381 - %t384 = call i32 (ptr, ...) @printf(ptr @.str.6014, i32 %t380, ptr %t383) - %t385 = call i32 (ptr, ...) @printf(ptr @.str.6015) + %t383 = select i1 %t382, ptr @.str.6479, ptr %t381 + %t384 = call i32 (ptr, ...) @printf(ptr @.str.6480, i32 %t380, ptr %t383) + %t385 = call i32 (ptr, ...) @printf(ptr @.str.6481) %t386 = load { ptr, i64, i64 }, ptr %a78 %t387 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t386) - store { ptr, i64, i64 } { ptr @.str.6016, i64 6, i64 0 }, ptr %a389 + store { ptr, i64, i64 } { ptr @.str.6482, i64 6, i64 0 }, ptr %a389 store { ptr, i64, i64 } %t387, ptr %a390 call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) %t391 = load { ptr, i64, i64 }, ptr %a388 store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.6017, i64 1, i64 0 }, ptr %a394 + store { ptr, i64, i64 } { ptr @.str.6483, i64 1, i64 0 }, ptr %a394 call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) %t395 = load { ptr, i64, i64 }, ptr %a392 %t396 = load { ptr, i64, i64 }, ptr %a101 @@ -79689,7 +84539,7 @@ or.end8990: call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) %t401 = load { ptr, i64, i64 }, ptr %a398 store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.6018, i64 1, i64 0 }, ptr %a404 + store { ptr, i64, i64 } { ptr @.str.6484, i64 1, i64 0 }, ptr %a404 call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) %t405 = load { ptr, i64, i64 }, ptr %a402 %t406 = load { ptr, i64, i64 }, ptr %a306 @@ -79702,7 +84552,7 @@ or.end8990: call void @finch_str_copy(ptr %a412, ptr %a413) %t414 = call i64 @finch_shell(ptr %a412) ret i64 1 -endif8986: +endif9345: %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1 %t416 = load { ptr, i64, i64 }, ptr %a306 store { ptr, i64, i64 } %t416, ptr %a417 @@ -79717,7 +84567,7 @@ endif8986: store i64 %t421, ptr %t415 %t424 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t424, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.6019, i64 1, i64 0 }, ptr %a427 + store { ptr, i64, i64 } { ptr @.str.6485, i64 1, i64 0 }, ptr %a427 call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) %t428 = load { ptr, i64, i64 }, ptr %a425 %t429 = load { ptr, i64, i64 }, ptr %a306 @@ -79727,32 +84577,32 @@ endif8986: call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) %t434 = load { ptr, i64, i64 }, ptr %a431 store { ptr, i64, i64 } %t434, ptr %a248 - br label %endif8980 -else8979: + br label %endif9339 +else9338: %t435 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t435, ptr %a436 - store { ptr, i64, i64 } { ptr @.str.6021, i64 2, i64 0 }, ptr %a438 + store { ptr, i64, i64 } { ptr @.str.6487, i64 2, i64 0 }, ptr %a438 %t439 = call i32 @finch_str_ends(ptr %a436, ptr %a438) %t440 = icmp ne i32 %t439, 0 - br label %logic.from8991 -logic.from8991: - br i1 %t440, label %logic.end8993, label %logic.rhs8992 -logic.rhs8992: + br label %logic.from9350 +logic.from9350: + br i1 %t440, label %logic.end9352, label %logic.rhs9351 +logic.rhs9351: %t441 = load { ptr, i64, i64 }, ptr %a281 store { ptr, i64, i64 } %t441, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.6023, i64 2, i64 0 }, ptr %a444 + store { ptr, i64, i64 } { ptr @.str.6489, i64 2, i64 0 }, ptr %a444 %t445 = call i32 @finch_str_ends(ptr %a442, ptr %a444) %t446 = icmp ne i32 %t445, 0 - br label %logic.rend8994 -logic.rend8994: - br label %logic.end8993 -logic.end8993: - %t447 = phi i1 [ true, %logic.from8991 ], [ %t446, %logic.rend8994 ] - br i1 %t447, label %then8995, label %else8996 -then8995: + br label %logic.rend9353 +logic.rend9353: + br label %logic.end9352 +logic.end9352: + %t447 = phi i1 [ true, %logic.from9350 ], [ %t446, %logic.rend9353 ] + br i1 %t447, label %then9354, label %else9355 +then9354: %t448 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t448, ptr %a450 - store { ptr, i64, i64 } { ptr @.str.6024, i64 1, i64 0 }, ptr %a451 + store { ptr, i64, i64 } { ptr @.str.6490, i64 1, i64 0 }, ptr %a451 call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) %t452 = load { ptr, i64, i64 }, ptr %a449 %t453 = load { ptr, i64, i64 }, ptr %a281 @@ -79762,11 +84612,11 @@ then8995: call void @finch_str_concat(ptr %a455, ptr %a456, ptr %a457) %t458 = load { ptr, i64, i64 }, ptr %a455 store { ptr, i64, i64 } %t458, ptr %a248 - br label %endif8997 -else8996: + br label %endif9356 +else9355: %t459 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t459, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.6025, i64 1, i64 0 }, ptr %a462 + store { ptr, i64, i64 } { ptr @.str.6491, i64 1, i64 0 }, ptr %a462 call void @finch_str_concat(ptr %a460, ptr %a461, ptr %a462) %t463 = load { ptr, i64, i64 }, ptr %a460 %t464 = load { ptr, i64, i64 }, ptr %a281 @@ -79777,20 +84627,20 @@ else8996: call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) %t470 = load { ptr, i64, i64 }, ptr %a467 store { ptr, i64, i64 } %t470, ptr %a248 - br label %endif8997 -endif8997: - br label %endif8980 -endif8980: - br label %each.step8976 -each.step8976: + br label %endif9356 +endif9356: + br label %endif9339 +endif9339: + br label %each.step9335 +each.step9335: %t471 = load i64, ptr %a273 %t472 = add i64 %t471, 1 store i64 %t472, ptr %a273 - br label %each.cond8974 -each.end8977: + br label %each.cond9333 +each.end9336: %t473 = load { ptr, i64, i64 }, ptr %a248 store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.6026, i64 3, i64 0 }, ptr %a476 + store { ptr, i64, i64 } { ptr @.str.6492, i64 3, i64 0 }, ptr %a476 call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) %t477 = load { ptr, i64, i64 }, ptr %a474 %t478 = load { ptr, i64, i64 }, ptr %a101 @@ -79800,7 +84650,7 @@ each.end8977: call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) %t483 = load { ptr, i64, i64 }, ptr %a480 store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6027, i64 5, i64 0 }, ptr %a486 + store { ptr, i64, i64 } { ptr @.str.6493, i64 5, i64 0 }, ptr %a486 call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) %t487 = load { ptr, i64, i64 }, ptr %a484 store { ptr, i64, i64 } %t487, ptr %a489 @@ -79815,25 +84665,25 @@ each.end8977: %t497 = icmp eq i32 %t496, 0 %t498 = load { ptr, i64, i64 }, ptr %a495 %t499 = load { ptr, i64, i64 }, ptr %a494 - br i1 %t497, label %or.failed8998, label %or.ok8999 -or.failed8998: + br i1 %t497, label %or.failed9357, label %or.ok9358 +or.failed9357: store { ptr, i64, i64 } %t498, ptr %a500 - br label %or.bend9000 -or.bend9000: - br label %or.end9001 -or.ok8999: - br label %or.end9001 -or.end9001: - %t501 = phi { ptr, i64, i64 } [ { ptr @.str.6028, i64 0, i64 0 }, %or.bend9000 ], [ %t499, %or.ok8999 ] + br label %or.bend9359 +or.bend9359: + br label %or.end9360 +or.ok9358: + br label %or.end9360 +or.end9360: + %t501 = phi { ptr, i64, i64 } [ { ptr @.str.6494, i64 0, i64 0 }, %or.bend9359 ], [ %t499, %or.ok9358 ] store { ptr, i64, i64 } %t501, ptr %a502 %t503 = load { ptr, i64, i64 }, ptr %a78 %t504 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t503) - store { ptr, i64, i64 } { ptr @.str.6029, i64 6, i64 0 }, ptr %a506 + store { ptr, i64, i64 } { ptr @.str.6495, i64 6, i64 0 }, ptr %a506 store { ptr, i64, i64 } %t504, ptr %a507 call void @finch_str_concat(ptr %a505, ptr %a506, ptr %a507) %t508 = load { ptr, i64, i64 }, ptr %a505 store { ptr, i64, i64 } %t508, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.6030, i64 1, i64 0 }, ptr %a511 + store { ptr, i64, i64 } { ptr @.str.6496, i64 1, i64 0 }, ptr %a511 call void @finch_str_concat(ptr %a509, ptr %a510, ptr %a511) %t512 = load { ptr, i64, i64 }, ptr %a509 %t513 = load { ptr, i64, i64 }, ptr %a101 @@ -79846,84 +84696,10338 @@ or.end9001: call void @finch_str_copy(ptr %a519, ptr %a520) %t521 = call i64 @finch_shell(ptr %a519) store i64 0, ptr %a522 - br label %each.cond9002 -each.cond9002: + br label %each.cond9361 +each.cond9361: %t523 = getelementptr inbounds { ptr, i64, i64 }, ptr %a271, i32 0, i32 1 %t524 = load i64, ptr %t523 %t525 = load i64, ptr %a522 %t526 = icmp slt i64 %t525, %t524 - br i1 %t526, label %each.body9003, label %each.end9005 -each.body9003: + br i1 %t526, label %each.body9362, label %each.end9364 +each.body9362: %t527 = load ptr, ptr %a271 %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t527, i64 %t525 %t529 = load { ptr, i64, i64 }, ptr %t528 store { ptr, i64, i64 } %t529, ptr %a530 %t531 = load { ptr, i64, i64 }, ptr %a530 %t532 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t531) - store { ptr, i64, i64 } { ptr @.str.6031, i64 6, i64 0 }, ptr %a534 + store { ptr, i64, i64 } { ptr @.str.6497, i64 6, i64 0 }, ptr %a534 store { ptr, i64, i64 } %t532, ptr %a535 call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) %t536 = load { ptr, i64, i64 }, ptr %a533 store { ptr, i64, i64 } %t536, ptr %a538 call void @finch_str_copy(ptr %a537, ptr %a538) %t539 = call i64 @finch_shell(ptr %a537) - br label %each.step9004 -each.step9004: + br label %each.step9363 +each.step9363: %t540 = load i64, ptr %a522 %t541 = add i64 %t540, 1 store i64 %t541, ptr %a522 - br label %each.cond9002 -each.end9005: + br label %each.cond9361 +each.end9364: %t542 = load i64, ptr %a491 %t543 = icmp eq i64 %t542, 127 - br i1 %t543, label %then9006, label %endif9008 -then9006: + br i1 %t543, label %then9365, label %endif9367 +then9365: %t544 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.6032, i64 42, i64 0 }, ptr %a546 + store { ptr, i64, i64 } { ptr @.str.6498, i64 42, i64 0 }, ptr %a546 store { ptr, i64, i64 } %t544, ptr %a547 call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) %t548 = load { ptr, i64, i64 }, ptr %a545 store { ptr, i64, i64 } %t548, ptr %a550 - store { ptr, i64, i64 } { ptr @.str.6033, i64 32, i64 0 }, ptr %a551 + store { ptr, i64, i64 } { ptr @.str.6499, i64 32, i64 0 }, ptr %a551 call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) %t552 = load { ptr, i64, i64 }, ptr %a549 %t553 = extractvalue { ptr, i64, i64 } %t552, 1 %t554 = trunc i64 %t553 to i32 %t555 = extractvalue { ptr, i64, i64 } %t552, 0 %t556 = icmp eq ptr %t555, null - %t557 = select i1 %t556, ptr @.str.6034, ptr %t555 - %t558 = call i32 (ptr, ...) @printf(ptr @.str.6035, i32 %t554, ptr %t557) - %t559 = call i32 (ptr, ...) @printf(ptr @.str.6036) + %t557 = select i1 %t556, ptr @.str.6500, ptr %t555 + %t558 = call i32 (ptr, ...) @printf(ptr @.str.6501, i32 %t554, ptr %t557) + %t559 = call i32 (ptr, ...) @printf(ptr @.str.6502) ret i64 1 -endif9008: +endif9367: %t560 = load i64, ptr %a491 %t561 = icmp ne i64 %t560, 0 - br i1 %t561, label %then9009, label %endif9011 -then9009: + br i1 %t561, label %then9368, label %endif9370 +then9368: %t562 = load { ptr, i64, i64 }, ptr %a502 %t563 = load %S.cimport.CImports, ptr %a3 %t564 = load %S.platform.Target, ptr %a2 %t565 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t562, %S.cimport.CImports %t563, %S.platform.Target %t564) ret i64 %t565 -endif9011: +endif9370: %t566 = getelementptr inbounds { ptr, i64, i64 }, ptr %a502, i32 0, i32 1 %t567 = load i64, ptr %t566 %t568 = icmp sgt i64 %t567, 0 - br i1 %t568, label %then9012, label %endif9014 -then9012: + br i1 %t568, label %then9371, label %endif9373 +then9371: %t569 = load { ptr, i64, i64 }, ptr %a502 %t570 = extractvalue { ptr, i64, i64 } %t569, 1 %t571 = trunc i64 %t570 to i32 %t572 = extractvalue { ptr, i64, i64 } %t569, 0 %t573 = icmp eq ptr %t572, null - %t574 = select i1 %t573, ptr @.str.6037, ptr %t572 - %t575 = call i32 (ptr, ...) @printf(ptr @.str.6038, i32 %t571, ptr %t574) - %t576 = call i32 (ptr, ...) @printf(ptr @.str.6039) - br label %endif9014 -endif9014: + %t574 = select i1 %t573, ptr @.str.6503, ptr %t572 + %t575 = call i32 (ptr, ...) @printf(ptr @.str.6504, i32 %t571, ptr %t574) + %t576 = call i32 (ptr, ...) @printf(ptr @.str.6505) + br label %endif9373 +endif9373: ret i64 0 } +define internal i64 @finch.lsp.hexval(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 48 + br label %logic.from9374 +logic.from9374: + br i1 %t3, label %logic.rhs9375, label %logic.end9376 +logic.rhs9375: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 57 + br label %logic.rend9377 +logic.rend9377: + br label %logic.end9376 +logic.end9376: + %t6 = phi i1 [ false, %logic.from9374 ], [ %t5, %logic.rend9377 ] + br i1 %t6, label %then9378, label %endif9380 +then9378: + %t7 = load i8, ptr %a1 + %t8 = zext i8 %t7 to i64 + %t9 = zext i8 48 to i64 + %t10 = sub i64 %t8, %t9 + ret i64 %t10 +endif9380: + %t11 = load i8, ptr %a1 + %t12 = icmp uge i8 %t11, 97 + br label %logic.from9381 +logic.from9381: + br i1 %t12, label %logic.rhs9382, label %logic.end9383 +logic.rhs9382: + %t13 = load i8, ptr %a1 + %t14 = icmp ule i8 %t13, 102 + br label %logic.rend9384 +logic.rend9384: + br label %logic.end9383 +logic.end9383: + %t15 = phi i1 [ false, %logic.from9381 ], [ %t14, %logic.rend9384 ] + br i1 %t15, label %then9385, label %endif9387 +then9385: + %t16 = load i8, ptr %a1 + %t17 = zext i8 %t16 to i64 + %t18 = zext i8 97 to i64 + %t19 = sub i64 %t17, %t18 + %t20 = add i64 %t19, 10 + ret i64 %t20 +endif9387: + %t21 = load i8, ptr %a1 + %t22 = icmp uge i8 %t21, 65 + br label %logic.from9388 +logic.from9388: + br i1 %t22, label %logic.rhs9389, label %logic.end9390 +logic.rhs9389: + %t23 = load i8, ptr %a1 + %t24 = icmp ule i8 %t23, 70 + br label %logic.rend9391 +logic.rend9391: + br label %logic.end9390 +logic.end9390: + %t25 = phi i1 [ false, %logic.from9388 ], [ %t24, %logic.rend9391 ] + br i1 %t25, label %then9392, label %endif9394 +then9392: + %t26 = load i8, ptr %a1 + %t27 = zext i8 %t26 to i64 + %t28 = zext i8 65 to i64 + %t29 = sub i64 %t27, %t28 + %t30 = add i64 %t29, 10 + ret i64 %t30 +endif9394: + ret i64 -1 +} + +define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t7, ptr %a8 + store { ptr, i64, i64 } { ptr @.str.6507, i64 7, i64 0 }, ptr %a10 + %t11 = call i32 @finch_str_starts(ptr %a8, ptr %a10) + %t12 = icmp ne i32 %t11, 0 + br i1 %t12, label %then9395, label %endif9397 +then9395: + %t13 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t13, ptr %a14 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t17 = load i64, ptr %t16 + call void @finch_str_sub(ptr %a15, ptr %a14, i64 7, i64 %t17, ptr @.str.6508, i64 114) + %t18 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t18, ptr %a6 + br label %endif9397 +endif9397: + store { ptr, i64, i64 } zeroinitializer, ptr %a19 + store i64 0, ptr %a20 + br label %while.cond9398 +while.cond9398: + %t21 = load i64, ptr %a20 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp slt i64 %t21, %t23 + br i1 %t24, label %while.body9399, label %while.end9400 +while.body9399: + %t25 = load i64, ptr %a20 + %t26 = load { ptr, i64, i64 }, ptr %a6 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range9401, label %inrange9402 +range9401: + call void @finch_panic_index(ptr @.str.6509, i64 119, i64 %t25, i64 %t27) + unreachable +inrange9402: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds i8, ptr %t29, i64 %t25 + %t31 = load i8, ptr %t30 + %t32 = icmp eq i8 %t31, 37 + br label %logic.from9403 +logic.from9403: + br i1 %t32, label %logic.rhs9404, label %logic.end9405 +logic.rhs9404: + %t33 = load i64, ptr %a20 + %t34 = add i64 %t33, 2 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t36, 0 + %t38 = icmp slt i64 %t34, %t37 + br label %logic.rend9406 +logic.rend9406: + br label %logic.end9405 +logic.end9405: + %t39 = phi i1 [ false, %logic.from9403 ], [ %t38, %logic.rend9406 ] + br label %logic.from9407 +logic.from9407: + br i1 %t39, label %logic.rhs9408, label %logic.end9409 +logic.rhs9408: + %t40 = load i64, ptr %a20 + %t41 = add i64 %t40, 1 + %t42 = load { ptr, i64, i64 }, ptr %a6 + %t43 = extractvalue { ptr, i64, i64 } %t42, 1 + %t44 = icmp uge i64 %t41, %t43 + br i1 %t44, label %range9410, label %inrange9411 +range9410: + call void @finch_panic_index(ptr @.str.6510, i64 119, i64 %t41, i64 %t43) + unreachable +inrange9411: + %t45 = extractvalue { ptr, i64, i64 } %t42, 0 + %t46 = getelementptr inbounds i8, ptr %t45, i64 %t41 + %t47 = load i8, ptr %t46 + %t48 = call i64 @finch.lsp.hexval(i8 %t47) + %t49 = icmp sge i64 %t48, 0 + br label %logic.rend9412 +logic.rend9412: + br label %logic.end9409 +logic.end9409: + %t50 = phi i1 [ false, %logic.from9407 ], [ %t49, %logic.rend9412 ] + br label %logic.from9413 +logic.from9413: + br i1 %t50, label %logic.rhs9414, label %logic.end9415 +logic.rhs9414: + %t51 = load i64, ptr %a20 + %t52 = add i64 %t51, 2 + %t53 = load { ptr, i64, i64 }, ptr %a6 + %t54 = extractvalue { ptr, i64, i64 } %t53, 1 + %t55 = icmp uge i64 %t52, %t54 + br i1 %t55, label %range9416, label %inrange9417 +range9416: + call void @finch_panic_index(ptr @.str.6511, i64 119, i64 %t52, i64 %t54) + unreachable +inrange9417: + %t56 = extractvalue { ptr, i64, i64 } %t53, 0 + %t57 = getelementptr inbounds i8, ptr %t56, i64 %t52 + %t58 = load i8, ptr %t57 + %t59 = call i64 @finch.lsp.hexval(i8 %t58) + %t60 = icmp sge i64 %t59, 0 + br label %logic.rend9418 +logic.rend9418: + br label %logic.end9415 +logic.end9415: + %t61 = phi i1 [ false, %logic.from9413 ], [ %t60, %logic.rend9418 ] + br i1 %t61, label %then9419, label %else9420 +then9419: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t63 = load i64, ptr %a20 + %t64 = add i64 %t63, 1 + %t65 = load { ptr, i64, i64 }, ptr %a6 + %t66 = extractvalue { ptr, i64, i64 } %t65, 1 + %t67 = icmp uge i64 %t64, %t66 + br i1 %t67, label %range9422, label %inrange9423 +range9422: + call void @finch_panic_index(ptr @.str.6512, i64 120, i64 %t64, i64 %t66) + unreachable +inrange9423: + %t68 = extractvalue { ptr, i64, i64 } %t65, 0 + %t69 = getelementptr inbounds i8, ptr %t68, i64 %t64 + %t70 = load i8, ptr %t69 + %t71 = call i64 @finch.lsp.hexval(i8 %t70) + %t72 = mul i64 %t71, 16 + %t73 = load i64, ptr %a20 + %t74 = add i64 %t73, 2 + %t75 = load { ptr, i64, i64 }, ptr %a6 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 %t74, %t76 + br i1 %t77, label %range9424, label %inrange9425 +range9424: + call void @finch_panic_index(ptr @.str.6513, i64 120, i64 %t74, i64 %t76) + unreachable +inrange9425: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds i8, ptr %t78, i64 %t74 + %t80 = load i8, ptr %t79 + %t81 = call i64 @finch.lsp.hexval(i8 %t80) + %t82 = add i64 %t72, %t81 + %t83 = trunc i64 %t82 to i8 + %t84 = load i64, ptr %t62 + %t85 = add i64 %t84, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t85, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t86 = load ptr, ptr %a19 + %t87 = getelementptr inbounds i8, ptr %t86, i64 %t84 + store i8 %t83, ptr %t87 + store i64 %t85, ptr %t62 + %t88 = load i64, ptr %a20 + %t89 = add i64 %t88, 3 + store i64 %t89, ptr %a20 + br label %endif9421 +else9420: + %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t91 = load i64, ptr %a20 + %t92 = load { ptr, i64, i64 }, ptr %a6 + %t93 = extractvalue { ptr, i64, i64 } %t92, 1 + %t94 = icmp uge i64 %t91, %t93 + br i1 %t94, label %range9426, label %inrange9427 +range9426: + call void @finch_panic_index(ptr @.str.6514, i64 123, i64 %t91, i64 %t93) + unreachable +inrange9427: + %t95 = extractvalue { ptr, i64, i64 } %t92, 0 + %t96 = getelementptr inbounds i8, ptr %t95, i64 %t91 + %t97 = load i8, ptr %t96 + %t98 = load i64, ptr %t90 + %t99 = add i64 %t98, 1 + call void @finch_arr_reserve(ptr %a19, i64 %t99, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t100 = load ptr, ptr %a19 + %t101 = getelementptr inbounds i8, ptr %t100, i64 %t98 + store i8 %t97, ptr %t101 + store i64 %t99, ptr %t90 + %t102 = load i64, ptr %a20 + %t103 = add i64 %t102, 1 + store i64 %t103, ptr %a20 + br label %endif9421 +endif9421: + br label %while.cond9398 +while.end9400: + %t104 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } zeroinitializer, ptr %a105 + store { ptr, i64, i64 } %t104, ptr %a106 + call void @finch_str_from_bytes(ptr %a105, ptr %a106) + %t107 = load { ptr, i64, i64 }, ptr %a105 + ret { ptr, i64, i64 } %t107 +} + +define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca i8, align 16 + %a21 = alloca i64, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a80 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }, ptr %a2 + %t3 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t4 = call ptr @finch_alloc(i64 %t3) + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 + store { ptr, i64, i64 } { ptr @.str.6516, i64 7, i64 0 }, ptr %t5 + %t6 = insertvalue { ptr, i64, i64 } undef, ptr %t4, 0 + %t7 = insertvalue { ptr, i64, i64 } %t6, i64 1, 1 + %t8 = insertvalue { ptr, i64, i64 } %t7, i64 1, 2 + store { ptr, i64, i64 } %t8, ptr %a9 + store i64 0, ptr %a10 + br label %each.cond9428 +each.cond9428: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body9429, label %each.end9431 +each.body9429: + %t15 = load ptr, ptr %a1 + %t16 = getelementptr inbounds i8, ptr %t15, i64 %t13 + %t17 = load i8, ptr %t16 + store i8 %t17, ptr %a18 + %t19 = load i8, ptr %a18 + %t20 = zext i8 %t19 to i64 + store i64 %t20, ptr %a21 + %t22 = load i8, ptr %a18 + %t23 = icmp uge i8 %t22, 97 + br label %logic.from9432 +logic.from9432: + br i1 %t23, label %logic.rhs9433, label %logic.end9434 +logic.rhs9433: + %t24 = load i8, ptr %a18 + %t25 = icmp ule i8 %t24, 122 + br label %logic.rend9435 +logic.rend9435: + br label %logic.end9434 +logic.end9434: + %t26 = phi i1 [ false, %logic.from9432 ], [ %t25, %logic.rend9435 ] + br label %logic.from9436 +logic.from9436: + br i1 %t26, label %logic.end9438, label %logic.rhs9437 +logic.rhs9437: + %t27 = load i8, ptr %a18 + %t28 = icmp uge i8 %t27, 65 + br label %logic.from9439 +logic.from9439: + br i1 %t28, label %logic.rhs9440, label %logic.end9441 +logic.rhs9440: + %t29 = load i8, ptr %a18 + %t30 = icmp ule i8 %t29, 90 + br label %logic.rend9442 +logic.rend9442: + br label %logic.end9441 +logic.end9441: + %t31 = phi i1 [ false, %logic.from9439 ], [ %t30, %logic.rend9442 ] + br label %logic.rend9443 +logic.rend9443: + br label %logic.end9438 +logic.end9438: + %t32 = phi i1 [ true, %logic.from9436 ], [ %t31, %logic.rend9443 ] + br label %logic.from9444 +logic.from9444: + br i1 %t32, label %logic.end9446, label %logic.rhs9445 +logic.rhs9445: + %t33 = load i8, ptr %a18 + %t34 = icmp uge i8 %t33, 48 + br label %logic.from9447 +logic.from9447: + br i1 %t34, label %logic.rhs9448, label %logic.end9449 +logic.rhs9448: + %t35 = load i8, ptr %a18 + %t36 = icmp ule i8 %t35, 57 + br label %logic.rend9450 +logic.rend9450: + br label %logic.end9449 +logic.end9449: + %t37 = phi i1 [ false, %logic.from9447 ], [ %t36, %logic.rend9450 ] + br label %logic.rend9451 +logic.rend9451: + br label %logic.end9446 +logic.end9446: + %t38 = phi i1 [ true, %logic.from9444 ], [ %t37, %logic.rend9451 ] + br label %logic.from9452 +logic.from9452: + br i1 %t38, label %logic.end9454, label %logic.rhs9453 +logic.rhs9453: + store { ptr, i64, i64 } { ptr @.str.6517, i64 5, i64 0 }, ptr %a39 + %t41 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a42, i8 signext %t41) + %t43 = load { ptr, i64, i64 }, ptr %a42 + store { ptr, i64, i64 } %t43, ptr %a44 + %t45 = call i64 @finch_str_find(ptr %a39, ptr %a44) + %t46 = icmp sge i64 %t45, 0 + br label %logic.rend9455 +logic.rend9455: + br label %logic.end9454 +logic.end9454: + %t47 = phi i1 [ true, %logic.from9452 ], [ %t46, %logic.rend9455 ] + br i1 %t47, label %then9456, label %else9457 +then9456: + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t49 = load i8, ptr %a18 + call void @finch_str_from_char(ptr %a50, i8 signext %t49) + %t51 = load { ptr, i64, i64 }, ptr %a50 + %t52 = load i64, ptr %t48 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a9 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } %t51, ptr %t55 + store i64 %t53, ptr %t48 + br label %endif9458 +else9457: + %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t57 = load i64, ptr %a21 + %t58 = sdiv i64 %t57, 16 + %t59 = srem i64 %t58, 16 + %t60 = load { ptr, i64, i64 }, ptr %a2 + %t61 = extractvalue { ptr, i64, i64 } %t60, 1 + %t62 = icmp uge i64 %t59, %t61 + br i1 %t62, label %range9459, label %inrange9460 +range9459: + call void @finch_panic_index(ptr @.str.6520, i64 138, i64 %t59, i64 %t61) + unreachable +inrange9460: + %t63 = extractvalue { ptr, i64, i64 } %t60, 0 + %t64 = getelementptr inbounds i8, ptr %t63, i64 %t59 + %t65 = load i8, ptr %t64 + call void @finch_str_from_char(ptr %a66, i8 signext %t65) + %t67 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } { ptr @.str.6519, i64 1, i64 0 }, ptr %a69 + store { ptr, i64, i64 } %t67, ptr %a70 + call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) + %t71 = load { ptr, i64, i64 }, ptr %a68 + %t72 = load i64, ptr %a21 + %t73 = srem i64 %t72, 16 + %t74 = load { ptr, i64, i64 }, ptr %a2 + %t75 = extractvalue { ptr, i64, i64 } %t74, 1 + %t76 = icmp uge i64 %t73, %t75 + br i1 %t76, label %range9461, label %inrange9462 +range9461: + call void @finch_panic_index(ptr @.str.6521, i64 138, i64 %t73, i64 %t75) + unreachable +inrange9462: + %t77 = extractvalue { ptr, i64, i64 } %t74, 0 + %t78 = getelementptr inbounds i8, ptr %t77, i64 %t73 + %t79 = load i8, ptr %t78 + call void @finch_str_from_char(ptr %a80, i8 signext %t79) + %t81 = load { ptr, i64, i64 }, ptr %a80 + store { ptr, i64, i64 } %t71, ptr %a83 + store { ptr, i64, i64 } %t81, ptr %a84 + call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) + %t85 = load { ptr, i64, i64 }, ptr %a82 + %t86 = load i64, ptr %t56 + %t87 = add i64 %t86, 1 + call void @finch_arr_reserve(ptr %a9, i64 %t87, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t88 = load ptr, ptr %a9 + %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i64 %t86 + store { ptr, i64, i64 } %t85, ptr %t89 + store i64 %t87, ptr %t56 + br label %endif9458 +endif9458: + br label %each.step9430 +each.step9430: + %t90 = load i64, ptr %a10 + %t91 = add i64 %t90, 1 + store i64 %t91, ptr %a10 + br label %each.cond9428 +each.end9431: + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6522, i64 0, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %a9, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + ret { ptr, i64, i64 } %t95 +} + +define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + store i64 0, ptr %a3 + br label %while.cond9463 +while.cond9463: + %t4 = load i64, ptr %a3 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = icmp slt i64 %t4, %t6 + br i1 %t7, label %while.body9464, label %while.end9465 +while.body9464: + %t8 = load i64, ptr %a3 + %t9 = load { ptr, i64, i64 }, ptr %a1 + %t10 = extractvalue { ptr, i64, i64 } %t9, 1 + %t11 = icmp uge i64 %t8, %t10 + br i1 %t11, label %range9466, label %inrange9467 +range9466: + call void @finch_panic_index(ptr @.str.6523, i64 149, i64 %t8, i64 %t10) + unreachable +inrange9467: + %t12 = extractvalue { ptr, i64, i64 } %t9, 0 + %t13 = getelementptr inbounds i8, ptr %t12, i64 %t8 + %t14 = load i8, ptr %t13 + %t15 = icmp eq i8 %t14, 92 + br label %logic.from9468 +logic.from9468: + br i1 %t15, label %logic.rhs9469, label %logic.end9470 +logic.rhs9469: + %t16 = load i64, ptr %a3 + %t17 = add i64 %t16, 1 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t19 = load i64, ptr %t18 + %t20 = icmp slt i64 %t17, %t19 + br label %logic.rend9471 +logic.rend9471: + br label %logic.end9470 +logic.end9470: + %t21 = phi i1 [ false, %logic.from9468 ], [ %t20, %logic.rend9471 ] + br i1 %t21, label %then9472, label %else9473 +then9472: + %t22 = load i64, ptr %a3 + %t23 = add i64 %t22, 1 + %t24 = load { ptr, i64, i64 }, ptr %a1 + %t25 = extractvalue { ptr, i64, i64 } %t24, 1 + %t26 = icmp uge i64 %t23, %t25 + br i1 %t26, label %range9475, label %inrange9476 +range9475: + call void @finch_panic_index(ptr @.str.6524, i64 150, i64 %t23, i64 %t25) + unreachable +inrange9476: + %t27 = extractvalue { ptr, i64, i64 } %t24, 0 + %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 + %t29 = load i8, ptr %t28 + %t30 = icmp eq i8 %t29, 110 + br i1 %t30, label %then9477, label %else9478 +then9477: + %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = add i64 %t32, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t33, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t34 = load ptr, ptr %a2 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i64 %t32 + store { ptr, i64, i64 } { ptr @.str.6525, i64 1, i64 0 }, ptr %t35 + store i64 %t33, ptr %t31 + br label %endif9479 +else9478: + %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t37 = load i64, ptr %a3 + %t38 = add i64 %t37, 1 + %t39 = load { ptr, i64, i64 }, ptr %a1 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range9480, label %inrange9481 +range9480: + call void @finch_panic_index(ptr @.str.6526, i64 153, i64 %t38, i64 %t40) + unreachable +inrange9481: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + call void @finch_str_from_char(ptr %a45, i8 signext %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load i64, ptr %t36 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a2 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t36 + br label %endif9479 +endif9479: + %t51 = load i64, ptr %a3 + %t52 = add i64 %t51, 2 + store i64 %t52, ptr %a3 + br label %endif9474 +else9473: + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t54 = load i64, ptr %a3 + %t55 = load { ptr, i64, i64 }, ptr %a1 + %t56 = extractvalue { ptr, i64, i64 } %t55, 1 + %t57 = icmp uge i64 %t54, %t56 + br i1 %t57, label %range9482, label %inrange9483 +range9482: + call void @finch_panic_index(ptr @.str.6527, i64 157, i64 %t54, i64 %t56) + unreachable +inrange9483: + %t58 = extractvalue { ptr, i64, i64 } %t55, 0 + %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 + %t60 = load i8, ptr %t59 + call void @finch_str_from_char(ptr %a61, i8 signext %t60) + %t62 = load { ptr, i64, i64 }, ptr %a61 + %t63 = load i64, ptr %t53 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %a2 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } %t62, ptr %t66 + store i64 %t64, ptr %t53 + %t67 = load i64, ptr %a3 + %t68 = add i64 %t67, 1 + store i64 %t68, ptr %a3 + br label %endif9474 +endif9474: + br label %while.cond9463 +while.end9465: + %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6528, i64 0, i64 0 }, ptr %a70 + call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) + %t72 = load { ptr, i64, i64 }, ptr %a71 + ret { ptr, i64, i64 } %t72 +} + +define internal { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %p0, i64 %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6530, i64 1, i64 0 }, ptr %a6 + call void @finch_str_split(ptr %a7, ptr %a4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load i64, ptr %a2 + %t11 = icmp sge i64 %t10, 1 + br label %logic.from9484 +logic.from9484: + br i1 %t11, label %logic.rhs9485, label %logic.end9486 +logic.rhs9485: + %t12 = load i64, ptr %a2 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sle i64 %t12, %t14 + br label %logic.rend9487 +logic.rend9487: + br label %logic.end9486 +logic.end9486: + %t16 = phi i1 [ false, %logic.from9484 ], [ %t15, %logic.rend9487 ] + br i1 %t16, label %then9488, label %endif9490 +then9488: + %t17 = load i64, ptr %a2 + %t18 = sub i64 %t17, 1 + %t19 = load { ptr, i64, i64 }, ptr %a9 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range9491, label %inrange9492 +range9491: + call void @finch_panic_index(ptr @.str.6531, i64 167, i64 %t18, i64 %t20) + unreachable +inrange9492: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + ret { ptr, i64, i64 } %t27 +endif9490: + ret { ptr, i64, i64 } { ptr @.str.6532, i64 0, i64 0 } +} + +define internal { ptr, i64, i64 } @finch.lsp.readLine() { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i32, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } zeroinitializer, ptr %a1 + br label %while.cond9493 +while.cond9493: + br label %while.body9494 +while.body9494: + %t2 = call i32 @getchar() + store i32 %t2, ptr %a3 + %t4 = load i32, ptr %a3 + %t5 = icmp slt i32 %t4, 0 + br i1 %t5, label %then9496, label %endif9498 +then9496: + ret { ptr, i64, i64 } { ptr @.str.6533, i64 0, i64 0 } +endif9498: + %t6 = load i32, ptr %a3 + %t7 = icmp eq i32 %t6, 10 + br i1 %t7, label %then9499, label %endif9501 +then9499: + br label %while.end9495 +endif9501: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t9 = load i32, ptr %a3 + %t10 = trunc i32 %t9 to i8 + %t11 = load i64, ptr %t8 + %t12 = add i64 %t11, 1 + call void @finch_arr_reserve(ptr %a1, i64 %t12, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t13 = load ptr, ptr %a1 + %t14 = getelementptr inbounds i8, ptr %t13, i64 %t11 + store i8 %t10, ptr %t14 + store i64 %t12, ptr %t8 + br label %while.cond9493 +while.end9495: + %t15 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a16 + store { ptr, i64, i64 } %t15, ptr %a17 + call void @finch_str_from_bytes(ptr %a16, ptr %a17) + %t18 = load { ptr, i64, i64 }, ptr %a16 + store { ptr, i64, i64 } %t18, ptr %a19 + %t20 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t20, ptr %a21 + store { ptr, i64, i64 } { ptr @.str.6535, i64 1, i64 0 }, ptr %a23 + %t24 = call i32 @finch_str_ends(ptr %a21, ptr %a23) + %t25 = icmp ne i32 %t24, 0 + br i1 %t25, label %then9502, label %endif9504 +then9502: + %t26 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t26, ptr %a27 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = sub i64 %t30, 1 + call void @finch_str_sub(ptr %a28, ptr %a27, i64 0, i64 %t31, ptr @.str.6536, i64 188) + %t32 = load { ptr, i64, i64 }, ptr %a28 + store { ptr, i64, i64 } %t32, ptr %a19 + br label %endif9504 +endif9504: + %t33 = load { ptr, i64, i64 }, ptr %a19 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_copy(ptr %a35, ptr %a34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + ret { ptr, i64, i64 } %t36 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { +entry: + %a1 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca i64, align 16 + %a43 = alloca i32, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + store i64 0, ptr %a1 + br label %while.cond9505 +while.cond9505: + br label %while.body9506 +while.body9506: + %t2 = call { ptr, i64, i64 } @finch.lsp.readLine() + store { ptr, i64, i64 } %t2, ptr %a3 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = icmp eq i64 %t5, 0 + br i1 %t6, label %then9508, label %endif9510 +then9508: + %t7 = load i64, ptr %a1 + %t8 = icmp sgt i64 %t7, 0 + br i1 %t8, label %then9511, label %endif9513 +then9511: + br label %while.end9507 +endif9513: + %t9 = load ptr, ptr @stdin + %t10 = call i32 @feof(ptr %t9) + %t11 = icmp ne i32 %t10, 0 + br i1 %t11, label %then9514, label %endif9516 +then9514: + %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6537, i64 32, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 +endif9516: + br label %while.cond9505 +endif9510: + %t13 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6539, i64 15, i64 0 }, ptr %a16 + %t17 = call i32 @finch_str_starts(ptr %a14, ptr %a16) + %t18 = icmp ne i32 %t17, 0 + br i1 %t18, label %then9517, label %endif9519 +then9517: + %t19 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t23 = load i64, ptr %t22 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 15, i64 %t23, ptr @.str.6540, i64 208) + %t24 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_trim(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } zeroinitializer, ptr %a28 + store i64 0, ptr %a29 + store { ptr, i64, i64 } %t27, ptr %a30 + %t31 = call i32 @finch_str_try_int(ptr %a30, ptr %a29, ptr %a28) + %t32 = icmp eq i32 %t31, 0 + %t33 = load { ptr, i64, i64 }, ptr %a28 + %t34 = load i64, ptr %a29 + br i1 %t32, label %or.failed9520, label %or.ok9521 +or.failed9520: + store { ptr, i64, i64 } %t33, ptr %a35 + br label %or.bend9522 +or.bend9522: + br label %or.end9523 +or.ok9521: + br label %or.end9523 +or.end9523: + %t36 = phi i64 [ 0, %or.bend9522 ], [ %t34, %or.ok9521 ] + store i64 %t36, ptr %a1 + br label %endif9519 +endif9519: + br label %while.cond9505 +while.end9507: + store { ptr, i64, i64 } zeroinitializer, ptr %a37 + %t38 = load i64, ptr %a1 + store i64 0, ptr %a39 + br label %for.cond9524 +for.cond9524: + %t40 = load i64, ptr %a39 + %t41 = icmp slt i64 %t40, %t38 + br i1 %t41, label %for.body9525, label %for.end9527 +for.body9525: + %t42 = call i32 @getchar() + store i32 %t42, ptr %a43 + %t44 = load i32, ptr %a43 + %t45 = icmp slt i32 %t44, 0 + br i1 %t45, label %then9528, label %endif9530 +then9528: + %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6542, i64 25, i64 0 }, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 +endif9530: + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a37, i32 0, i32 1 + %t48 = load i32, ptr %a43 + %t49 = trunc i32 %t48 to i8 + %t50 = load i64, ptr %t47 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %a37, i64 %t51, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %a37 + %t53 = getelementptr inbounds i8, ptr %t52, i64 %t50 + store i8 %t49, ptr %t53 + store i64 %t51, ptr %t47 + br label %for.step9526 +for.step9526: + %t54 = load i64, ptr %a39 + %t55 = add i64 %t54, 1 + store i64 %t55, ptr %a39 + br label %for.cond9524 +for.end9527: + %t56 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } zeroinitializer, ptr %a57 + store { ptr, i64, i64 } %t56, ptr %a58 + call void @finch_str_from_bytes(ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a57 + %t60 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t59) + %t61 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 0 + %t62 = xor i1 %t61, true + %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 2 + %t64 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t60, 1 + br i1 %t62, label %try.failed9531, label %try.ok9532 +try.failed9531: + %t65 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t63, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t65 +try.ok9532: + %t66 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t67 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t66, %S.json.Json %t64, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t67 +} + +define internal void @finch.lsp.send(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = load %S.json.Json, ptr %a1 + %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) + store { ptr, i64, i64 } %t3, ptr %a4 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t6 = load i64, ptr %t5 + call void @finch_str_from_int(ptr %a7, i64 %t6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.6543, i64 16, i64 0 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6544, i64 4, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + store { ptr, i64, i64 } %t16, ptr %a17 + %t18 = load { ptr, i64, i64 }, ptr %a17 + %t19 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t18, ptr %a21 + store { ptr, i64, i64 } %t19, ptr %a22 + call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) + %t23 = load { ptr, i64, i64 }, ptr %a20 + store { ptr, i64, i64 } %t23, ptr %a24 + %t25 = load { ptr, i64, i64 }, ptr %a24 + %t26 = extractvalue { ptr, i64, i64 } %t25, 0 + %t27 = icmp eq ptr %t26, null + %t28 = select i1 %t27, ptr @.str.6545, ptr %t26 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a24, i32 0, i32 1 + %t30 = load i64, ptr %t29 + %t31 = load ptr, ptr @stdout + %t32 = call i64 @fwrite(ptr %t28, i64 1, i64 %t30, ptr %t31) + %t33 = load ptr, ptr @stdout + %t34 = call i32 @fflush(ptr %t33) + ret void +} + +define internal void @finch.lsp.reply(%S.json.Json %p0, %S.json.Json %p1) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Json, align 16 + %a4 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6547, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6546, i64 7, i64 0 }, %S.json.Json %t5) + %t6 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6548, i64 2, i64 0 }, %S.json.Json %t6) + %t7 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6549, i64 6, i64 0 }, %S.json.Json %t7) + %t8 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t8) + ret void +} + +define internal void @finch.lsp.notify({ ptr, i64, i64 } %p0, %S.json.Json %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.json.Json, align 16 + %a4 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6551, i64 3, i64 0 }) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6550, i64 7, i64 0 }, %S.json.Json %t5) + %t6 = load { ptr, i64, i64 }, ptr %a1 + %t7 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t6) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6552, i64 6, i64 0 }, %S.json.Json %t7) + %t8 = load %S.json.Json, ptr %a2 + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6553, i64 6, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + call void @finch.lsp.send(%S.json.Json %t9) + ret void +} + +define internal %S.json.Json @finch.lsp.num(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + store i64 %p0, ptr %a1 + %t2 = load i64, ptr %a1 + %t3 = sitofp i64 %t2 to double + %t4 = call %S.json.Json @finch.json.new_number(double %t3) + ret %S.json.Json %t4 +} + +define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9533 +n.cond9533: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9534, label %n.end9535 +n.body9534: + %t8 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.json.Json, ptr %t2, i64 %t6 + call void @finch.copy.S_json_Json(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9533 +n.end9535: + ret void +} + +define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.json.Json, ptr %src + store %S.json.Json %t1, ptr %dst + %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 + %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 + %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t6, ptr %t7) + ret void +} + +define internal %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca i64, align 16 + %a4 = alloca %S.json.Json, align 16 + %a10 = alloca %S.json.Json, align 16 + %a11 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + store i64 %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t3, ptr %a4 + %t5 = load i64, ptr %a1 + %t6 = call %S.json.Json @finch.lsp.num(i64 %t5) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6554, i64 4, i64 0 }, %S.json.Json %t6) + %t7 = load i64, ptr %a2 + %t8 = call %S.json.Json @finch.lsp.num(i64 %t7) + call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6555, i64 9, i64 0 }, %S.json.Json %t8) + %t9 = load %S.json.Json, ptr %a4 + store %S.json.Json %t9, ptr %a10 + call void @finch.copy.S_json_Json(ptr %a11, ptr %a10) + %t12 = load %S.json.Json, ptr %a11 + ret %S.json.Json %t12 +} + +define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a5 = alloca %S.json.Json, align 16 + %a13 = alloca %S.json.Json, align 16 + %a14 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + store i64 %p1, ptr %a2 + store i64 %p2, ptr %a3 + %t4 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t4, ptr %a5 + %t6 = load i64, ptr %a1 + %t7 = load i64, ptr %a2 + %t8 = call %S.json.Json @finch.lsp.position(i64 %t6, i64 %t7) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6556, i64 5, i64 0 }, %S.json.Json %t8) + %t9 = load i64, ptr %a1 + %t10 = load i64, ptr %a3 + %t11 = call %S.json.Json @finch.lsp.position(i64 %t9, i64 %t10) + call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.6557, i64 3, i64 0 }, %S.json.Json %t11) + %t12 = load %S.json.Json, ptr %a5 + store %S.json.Json %t12, ptr %a13 + call void @finch.copy.S_json_Json(ptr %a14, ptr %a13) + %t15 = load %S.json.Json, ptr %a14 + ret %S.json.Json %t15 +} + +define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6559, i64 1, i64 0 }, ptr %a5 + call void @finch_str_split(ptr %a6, ptr %a3, ptr %a5) + %t7 = load { ptr, i64, i64 }, ptr %a6 + ret { ptr, i64, i64 } %t7 +} + +define internal i64 @finch.lsp.intOf({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a3 + store i64 0, ptr %a4 + store { ptr, i64, i64 } %t2, ptr %a5 + %t6 = call i32 @finch_str_try_int(ptr %a5, ptr %a4, ptr %a3) + %t7 = icmp eq i32 %t6, 0 + %t8 = load { ptr, i64, i64 }, ptr %a3 + %t9 = load i64, ptr %a4 + br i1 %t7, label %or.failed9536, label %or.ok9537 +or.failed9536: + store { ptr, i64, i64 } %t8, ptr %a10 + br label %or.bend9538 +or.bend9538: + br label %or.end9539 +or.ok9537: + br label %or.end9539 +or.end9539: + %t11 = phi i64 [ 0, %or.bend9538 ], [ %t9, %or.ok9537 ] + ret i64 %t11 +} + +define internal %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca i64, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca i64, align 16 + %a56 = alloca i64, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca i64, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + store { ptr, i64, i64 } { ptr @.str.6561, i64 9, i64 0 }, ptr %a5 + %t6 = call i64 @finch_str_find(ptr %a3, ptr %a5) + store i64 %t6, ptr %a7 + %t8 = load i64, ptr %a7 + %t9 = icmp slt i64 %t8, 0 + br i1 %t9, label %then9540, label %endif9542 +then9540: + ret %S.lsp.Diag zeroinitializer +endif9542: + %t10 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t10, ptr %a11 + %t13 = load i64, ptr %a7 + call void @finch_str_sub(ptr %a12, ptr %a11, i64 0, i64 %t13, ptr @.str.6562, i64 280) + %t14 = load { ptr, i64, i64 }, ptr %a12 + store { ptr, i64, i64 } %t14, ptr %a15 + %t16 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t16, ptr %a17 + %t19 = load i64, ptr %a7 + %t20 = add i64 %t19, 9 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t22 = load i64, ptr %t21 + call void @finch_str_sub(ptr %a18, ptr %a17, i64 %t20, i64 %t22, ptr @.str.6563, i64 281) + %t23 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t23, ptr %a24 + %t25 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t25, ptr %a26 + store { ptr, i64, i64 } { ptr @.str.6565, i64 1, i64 0 }, ptr %a28 + call void @finch_str_split(ptr %a29, ptr %a26, ptr %a28) + %t30 = load { ptr, i64, i64 }, ptr %a29 + store { ptr, i64, i64 } %t30, ptr %a31 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t33 = load i64, ptr %t32 + %t34 = icmp slt i64 %t33, 3 + br i1 %t34, label %then9543, label %endif9545 +then9543: + ret %S.lsp.Diag zeroinitializer +endif9545: + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = sub i64 %t36, 1 + %t38 = load { ptr, i64, i64 }, ptr %a31 + %t39 = extractvalue { ptr, i64, i64 } %t38, 1 + %t40 = icmp uge i64 %t37, %t39 + br i1 %t40, label %range9546, label %inrange9547 +range9546: + call void @finch_panic_index(ptr @.str.6566, i64 287, i64 %t37, i64 %t39) + unreachable +inrange9547: + %t41 = extractvalue { ptr, i64, i64 } %t38, 0 + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t37 + %t43 = load { ptr, i64, i64 }, ptr %t42 + %t44 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t43) + store i64 %t44, ptr %a45 + %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t47 = load i64, ptr %t46 + %t48 = sub i64 %t47, 2 + %t49 = load { ptr, i64, i64 }, ptr %a31 + %t50 = extractvalue { ptr, i64, i64 } %t49, 1 + %t51 = icmp uge i64 %t48, %t50 + br i1 %t51, label %range9548, label %inrange9549 +range9548: + call void @finch_panic_index(ptr @.str.6567, i64 288, i64 %t48, i64 %t50) + unreachable +inrange9549: + %t52 = extractvalue { ptr, i64, i64 } %t49, 0 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t48 + %t54 = load { ptr, i64, i64 }, ptr %t53 + %t55 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t54) + store i64 %t55, ptr %a56 + store { ptr, i64, i64 } zeroinitializer, ptr %a57 + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a31, i32 0, i32 1 + %t59 = load i64, ptr %t58 + %t60 = sub i64 %t59, 2 + store i64 0, ptr %a61 + br label %for.cond9550 +for.cond9550: + %t62 = load i64, ptr %a61 + %t63 = icmp slt i64 %t62, %t60 + br i1 %t63, label %for.body9551, label %for.end9553 +for.body9551: + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a57, i32 0, i32 1 + %t65 = load i64, ptr %a61 + %t66 = load { ptr, i64, i64 }, ptr %a31 + %t67 = extractvalue { ptr, i64, i64 } %t66, 1 + %t68 = icmp uge i64 %t65, %t67 + br i1 %t68, label %range9554, label %inrange9555 +range9554: + call void @finch_panic_index(ptr @.str.6568, i64 291, i64 %t65, i64 %t67) + unreachable +inrange9555: + %t69 = extractvalue { ptr, i64, i64 } %t66, 0 + %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t65 + %t71 = load { ptr, i64, i64 }, ptr %t70 + store { ptr, i64, i64 } %t71, ptr %a72 + call void @finch_str_copy(ptr %a73, ptr %a72) + %t74 = load { ptr, i64, i64 }, ptr %a73 + %t75 = load i64, ptr %t64 + %t76 = add i64 %t75, 1 + call void @finch_arr_reserve(ptr %a57, i64 %t76, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t77 = load ptr, ptr %a57 + %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i64 %t75 + store { ptr, i64, i64 } %t74, ptr %t78 + store i64 %t76, ptr %t64 + br label %for.step9552 +for.step9552: + %t79 = load i64, ptr %a61 + %t80 = add i64 %t79, 1 + store i64 %t80, ptr %a61 + br label %for.cond9550 +for.end9553: + %t81 = insertvalue %S.lsp.Diag zeroinitializer, i1 true, 0 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %a57, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6569, i64 1, i64 0 }, ptr %a83 + call void @finch_str_join(ptr %a84, ptr %a57, ptr %a83) + %t85 = load { ptr, i64, i64 }, ptr %a84 + %t86 = insertvalue %S.lsp.Diag %t81, { ptr, i64, i64 } %t85, 1 + %t87 = load i64, ptr %a56 + %t88 = insertvalue %S.lsp.Diag %t86, i64 %t87, 2 + %t89 = load i64, ptr %a45 + %t90 = insertvalue %S.lsp.Diag %t88, i64 %t89, 3 + %t91 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t91, ptr %a92 + call void @finch_str_copy(ptr %a93, ptr %a92) + %t94 = load { ptr, i64, i64 }, ptr %a93 + %t95 = insertvalue %S.lsp.Diag %t90, { ptr, i64, i64 } %t94, 4 + ret %S.lsp.Diag %t95 +} + +define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Ref, ptr %src + store %S.lsp.Ref %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 + %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 + call void @finch_str_copy(ptr %t6, ptr %t7) + ret void +} + +define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9703 +n.cond9703: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9704, label %n.end9705 +n.body9704: + %t8 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.Ref, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_Ref(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9703 +n.end9705: + ret void +} + +define internal void @finch.copy.S_lsp_VarRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.VarRec, ptr %src + store %S.lsp.VarRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.VarRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.VarRec, ptr %src, i32 0, i32 5 + call void @finch_str_copy(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_S_lsp_VarRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.VarRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9706 +n.cond9706: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9707, label %n.end9708 +n.body9707: + %t8 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.VarRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_VarRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9706 +n.end9708: + ret void +} + +define internal void @finch.copy.S_lsp_FnRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.FnRec, ptr %src + store %S.lsp.FnRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 3 + call void @finch_str_copy(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 7 + %t11 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 7 + call void @finch_str_copy(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %dst, i32 0, i32 8 + %t13 = getelementptr inbounds %S.lsp.FnRec, ptr %src, i32 0, i32 8 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + ret void +} + +define internal void @finch.copy.arr_S_lsp_FnRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.FnRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9709 +n.cond9709: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9710, label %n.end9711 +n.body9710: + %t8 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.FnRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_FnRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9709 +n.end9711: + ret void +} + +define internal void @finch.copy.S_lsp_StructRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.StructRec, ptr %src + store %S.lsp.StructRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.StructRec, ptr %dst, i32 0, i32 6 + %t11 = getelementptr inbounds %S.lsp.StructRec, ptr %src, i32 0, i32 6 + call void @finch.copy.arr_str(ptr %t10, ptr %t11) + ret void +} + +define internal void @finch.copy.arr_S_lsp_StructRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.StructRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9712 +n.cond9712: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9713, label %n.end9714 +n.body9713: + %t8 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.StructRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_StructRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9712 +n.end9714: + ret void +} + +define internal void @finch.copy.S_lsp_EnumRec(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.EnumRec, ptr %src + store %S.lsp.EnumRec %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 0 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 2 + call void @finch_str_copy(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.EnumRec, ptr %dst, i32 0, i32 5 + %t9 = getelementptr inbounds %S.lsp.EnumRec, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t8, ptr %t9) + ret void +} + +define internal void @finch.copy.arr_S_lsp_EnumRec(ptr %dst, ptr %src) { +entry: + %a5 = alloca i64, align 16 + call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.EnumRec, ptr null, i32 1) to i64)) + %t1 = load ptr, ptr %dst + %t2 = load ptr, ptr %src + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 + %t4 = load i64, ptr %t3 + store i64 0, ptr %a5 + br label %n.cond9715 +n.cond9715: + %t6 = load i64, ptr %a5 + %t7 = icmp slt i64 %t6, %t4 + br i1 %t7, label %n.body9716, label %n.end9717 +n.body9716: + %t8 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t6 + %t9 = getelementptr inbounds %S.lsp.EnumRec, ptr %t2, i64 %t6 + call void @finch.copy.S_lsp_EnumRec(ptr %t8, ptr %t9) + %t10 = load i64, ptr %a5 + %t11 = add i64 %t10, 1 + store i64 %t11, ptr %a5 + br label %n.cond9715 +n.end9717: + ret void +} + +define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Diag, ptr %src + store %S.lsp.Diag %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 + %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 + call void @finch_str_copy(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 + %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 + call void @finch_str_copy(ptr %t4, ptr %t5) + ret void +} + +define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { +entry: + + %t1 = load %S.lsp.Analysis, ptr %src + store %S.lsp.Analysis %t1, ptr %dst + %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 + %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 + call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) + %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 + call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 + %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 + call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) + %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 + %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 + call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) + %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 + %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) + %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 + %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 + call void @finch.copy.arr_str(ptr %t12, ptr %t13) + %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 + %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 + call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) + ret void +} + +define internal %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.lsp.Analysis, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca i64, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a138 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a184 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a209 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca { ptr, i64, i64 }, align 16 + %a225 = alloca { ptr, i64, i64 }, align 16 + %a226 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a256 = alloca { ptr, i64, i64 }, align 16 + %a297 = alloca { ptr, i64, i64 }, align 16 + %a298 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a308 = alloca { ptr, i64, i64 }, align 16 + %a309 = alloca { ptr, i64, i64 }, align 16 + %a324 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a335 = alloca { ptr, i64, i64 }, align 16 + %a344 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a386 = alloca i64, align 16 + %a402 = alloca { ptr, i64, i64 }, align 16 + %a403 = alloca { ptr, i64, i64 }, align 16 + %a424 = alloca { ptr, i64, i64 }, align 16 + %a425 = alloca { ptr, i64, i64 }, align 16 + %a432 = alloca { ptr, i64, i64 }, align 16 + %a433 = alloca { ptr, i64, i64 }, align 16 + %a448 = alloca { ptr, i64, i64 }, align 16 + %a449 = alloca { ptr, i64, i64 }, align 16 + %a458 = alloca { ptr, i64, i64 }, align 16 + %a459 = alloca { ptr, i64, i64 }, align 16 + %a468 = alloca { ptr, i64, i64 }, align 16 + %a469 = alloca { ptr, i64, i64 }, align 16 + %a494 = alloca { ptr, i64, i64 }, align 16 + %a495 = alloca { ptr, i64, i64 }, align 16 + %a496 = alloca { ptr, i64, i64 }, align 16 + %a497 = alloca { ptr, i64, i64 }, align 16 + %a505 = alloca { ptr, i64, i64 }, align 16 + %a506 = alloca { ptr, i64, i64 }, align 16 + %a521 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a538 = alloca %S.lsp.Analysis, align 16 + %a539 = alloca %S.lsp.Analysis, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.lsp.Analysis zeroinitializer, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6571, i64 1, i64 0 }, ptr %a6 + call void @finch_str_split(ptr %a7, ptr %a4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + store { ptr, i64, i64 } %t8, ptr %a9 + store i64 0, ptr %a10 + br label %each.cond9556 +each.cond9556: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = load i64, ptr %a10 + %t14 = icmp slt i64 %t13, %t12 + br i1 %t14, label %each.body9557, label %each.end9559 +each.body9557: + %t15 = load ptr, ptr %a9 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 + %t17 = load { ptr, i64, i64 }, ptr %t16 + store { ptr, i64, i64 } %t17, ptr %a18 + %t19 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t19, ptr %a20 + store { ptr, i64, i64 } { ptr @.str.6573, i64 1, i64 0 }, ptr %a22 + %t23 = call i32 @finch_str_starts(ptr %a20, ptr %a22) + %t24 = icmp ne i32 %t23, 0 + br i1 %t24, label %then9560, label %else9561 +then9560: + %t25 = load { ptr, i64, i64 }, ptr %a18 + %t26 = call { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %t25) + store { ptr, i64, i64 } %t26, ptr %a27 + %t28 = load { ptr, i64, i64 }, ptr %a27 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 0, %t29 + br i1 %t30, label %range9563, label %inrange9564 +range9563: + call void @finch_panic_index(ptr @.str.6574, i64 301, i64 0, i64 %t29) + unreachable +inrange9564: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i64 0 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + call void @finch_str_copy(ptr %a35, ptr %a34) + %t36 = load { ptr, i64, i64 }, ptr %a35 + store { ptr, i64, i64 } %t36, ptr %a37 + %t38 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t38, ptr %a39 + store { ptr, i64, i64 } { ptr @.str.6575, i64 2, i64 0 }, ptr %a40 + %t41 = call i32 @finch_str_eq(ptr %a39, ptr %a40) + %t42 = icmp ne i32 %t41, 0 + br label %logic.from9565 +logic.from9565: + br i1 %t42, label %logic.rhs9566, label %logic.end9567 +logic.rhs9566: + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = icmp sge i64 %t44, 9 + br label %logic.rend9568 +logic.rend9568: + br label %logic.end9567 +logic.end9567: + %t46 = phi i1 [ false, %logic.from9565 ], [ %t45, %logic.rend9568 ] + br i1 %t46, label %then9569, label %else9570 +then9569: + %t47 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 0 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i32 0, i32 1 + %t49 = load { ptr, i64, i64 }, ptr %a27 + %t50 = extractvalue { ptr, i64, i64 } %t49, 1 + %t51 = icmp uge i64 1, %t50 + br i1 %t51, label %range9572, label %inrange9573 +range9572: + call void @finch_panic_index(ptr @.str.6576, i64 303, i64 1, i64 %t50) + unreachable +inrange9573: + %t52 = extractvalue { ptr, i64, i64 } %t49, 0 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 1 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + call void @finch_str_copy(ptr %a56, ptr %a55) + %t57 = load { ptr, i64, i64 }, ptr %a56 + %t58 = insertvalue %S.lsp.Ref zeroinitializer, { ptr, i64, i64 } %t57, 0 + %t59 = load { ptr, i64, i64 }, ptr %a27 + %t60 = extractvalue { ptr, i64, i64 } %t59, 1 + %t61 = icmp uge i64 2, %t60 + br i1 %t61, label %range9574, label %inrange9575 +range9574: + call void @finch_panic_index(ptr @.str.6577, i64 303, i64 2, i64 %t60) + unreachable +inrange9575: + %t62 = extractvalue { ptr, i64, i64 } %t59, 0 + %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i64 2 + %t64 = load { ptr, i64, i64 }, ptr %t63 + %t65 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t64) + %t66 = insertvalue %S.lsp.Ref %t58, i64 %t65, 1 + %t67 = load { ptr, i64, i64 }, ptr %a27 + %t68 = extractvalue { ptr, i64, i64 } %t67, 1 + %t69 = icmp uge i64 3, %t68 + br i1 %t69, label %range9576, label %inrange9577 +range9576: + call void @finch_panic_index(ptr @.str.6578, i64 303, i64 3, i64 %t68) + unreachable +inrange9577: + %t70 = extractvalue { ptr, i64, i64 } %t67, 0 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 3 + %t72 = load { ptr, i64, i64 }, ptr %t71 + %t73 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t72) + %t74 = insertvalue %S.lsp.Ref %t66, i64 %t73, 2 + %t75 = load { ptr, i64, i64 }, ptr %a27 + %t76 = extractvalue { ptr, i64, i64 } %t75, 1 + %t77 = icmp uge i64 4, %t76 + br i1 %t77, label %range9578, label %inrange9579 +range9578: + call void @finch_panic_index(ptr @.str.6579, i64 303, i64 4, i64 %t76) + unreachable +inrange9579: + %t78 = extractvalue { ptr, i64, i64 } %t75, 0 + %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 4 + %t80 = load { ptr, i64, i64 }, ptr %t79 + %t81 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t80) + %t82 = insertvalue %S.lsp.Ref %t74, i64 %t81, 3 + %t83 = load { ptr, i64, i64 }, ptr %a27 + %t84 = extractvalue { ptr, i64, i64 } %t83, 1 + %t85 = icmp uge i64 5, %t84 + br i1 %t85, label %range9580, label %inrange9581 +range9580: + call void @finch_panic_index(ptr @.str.6580, i64 303, i64 5, i64 %t84) + unreachable +inrange9581: + %t86 = extractvalue { ptr, i64, i64 } %t83, 0 + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 5 + %t88 = load { ptr, i64, i64 }, ptr %t87 + store { ptr, i64, i64 } %t88, ptr %a89 + call void @finch_str_copy(ptr %a90, ptr %a89) + %t91 = load { ptr, i64, i64 }, ptr %a90 + %t92 = insertvalue %S.lsp.Ref %t82, { ptr, i64, i64 } %t91, 4 + %t93 = load { ptr, i64, i64 }, ptr %a27 + %t94 = extractvalue { ptr, i64, i64 } %t93, 1 + %t95 = icmp uge i64 6, %t94 + br i1 %t95, label %range9582, label %inrange9583 +range9582: + call void @finch_panic_index(ptr @.str.6581, i64 303, i64 6, i64 %t94) + unreachable +inrange9583: + %t96 = extractvalue { ptr, i64, i64 } %t93, 0 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 6 + %t98 = load { ptr, i64, i64 }, ptr %t97 + %t99 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t98) + %t100 = insertvalue %S.lsp.Ref %t92, i64 %t99, 5 + %t101 = load { ptr, i64, i64 }, ptr %a27 + %t102 = extractvalue { ptr, i64, i64 } %t101, 1 + %t103 = icmp uge i64 7, %t102 + br i1 %t103, label %range9584, label %inrange9585 +range9584: + call void @finch_panic_index(ptr @.str.6582, i64 303, i64 7, i64 %t102) + unreachable +inrange9585: + %t104 = extractvalue { ptr, i64, i64 } %t101, 0 + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 7 + %t106 = load { ptr, i64, i64 }, ptr %t105 + %t107 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t106) + %t108 = insertvalue %S.lsp.Ref %t100, i64 %t107, 6 + %t109 = load { ptr, i64, i64 }, ptr %a27 + %t110 = extractvalue { ptr, i64, i64 } %t109, 1 + %t111 = icmp uge i64 8, %t110 + br i1 %t111, label %range9586, label %inrange9587 +range9586: + call void @finch_panic_index(ptr @.str.6583, i64 303, i64 8, i64 %t110) + unreachable +inrange9587: + %t112 = extractvalue { ptr, i64, i64 } %t109, 0 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 8 + %t114 = load { ptr, i64, i64 }, ptr %t113 + %t115 = call { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %t114) + %t116 = insertvalue %S.lsp.Ref %t108, { ptr, i64, i64 } %t115, 7 + %t117 = load i64, ptr %t48 + %t118 = add i64 %t117, 1 + call void @finch_arr_reserve(ptr %t47, i64 %t118, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) + %t119 = load ptr, ptr %t47 + %t120 = getelementptr inbounds %S.lsp.Ref, ptr %t119, i64 %t117 + store %S.lsp.Ref %t116, ptr %t120 + store i64 %t118, ptr %t48 + br label %endif9571 +else9570: + %t121 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t121, ptr %a122 + store { ptr, i64, i64 } { ptr @.str.6584, i64 2, i64 0 }, ptr %a123 + %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) + %t125 = icmp ne i32 %t124, 0 + br label %logic.from9588 +logic.from9588: + br i1 %t125, label %logic.rhs9589, label %logic.end9590 +logic.rhs9589: + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t127 = load i64, ptr %t126 + %t128 = icmp sge i64 %t127, 9 + br label %logic.rend9591 +logic.rend9591: + br label %logic.end9590 +logic.end9590: + %t129 = phi i1 [ false, %logic.from9588 ], [ %t128, %logic.rend9591 ] + br i1 %t129, label %then9592, label %else9593 +then9592: + %t130 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 1 + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i32 0, i32 1 + %t132 = load { ptr, i64, i64 }, ptr %a27 + %t133 = extractvalue { ptr, i64, i64 } %t132, 1 + %t134 = icmp uge i64 1, %t133 + br i1 %t134, label %range9595, label %inrange9596 +range9595: + call void @finch_panic_index(ptr @.str.6585, i64 305, i64 1, i64 %t133) + unreachable +inrange9596: + %t135 = extractvalue { ptr, i64, i64 } %t132, 0 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 1 + %t137 = load { ptr, i64, i64 }, ptr %t136 + store { ptr, i64, i64 } %t137, ptr %a138 + call void @finch_str_copy(ptr %a139, ptr %a138) + %t140 = load { ptr, i64, i64 }, ptr %a139 + %t141 = insertvalue %S.lsp.VarRec zeroinitializer, { ptr, i64, i64 } %t140, 0 + %t142 = load { ptr, i64, i64 }, ptr %a27 + %t143 = extractvalue { ptr, i64, i64 } %t142, 1 + %t144 = icmp uge i64 2, %t143 + br i1 %t144, label %range9597, label %inrange9598 +range9597: + call void @finch_panic_index(ptr @.str.6586, i64 305, i64 2, i64 %t143) + unreachable +inrange9598: + %t145 = extractvalue { ptr, i64, i64 } %t142, 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 2 + %t147 = load { ptr, i64, i64 }, ptr %t146 + store { ptr, i64, i64 } %t147, ptr %a148 + call void @finch_str_copy(ptr %a149, ptr %a148) + %t150 = load { ptr, i64, i64 }, ptr %a149 + %t151 = insertvalue %S.lsp.VarRec %t141, { ptr, i64, i64 } %t150, 1 + %t152 = load { ptr, i64, i64 }, ptr %a27 + %t153 = extractvalue { ptr, i64, i64 } %t152, 1 + %t154 = icmp uge i64 3, %t153 + br i1 %t154, label %range9599, label %inrange9600 +range9599: + call void @finch_panic_index(ptr @.str.6587, i64 305, i64 3, i64 %t153) + unreachable +inrange9600: + %t155 = extractvalue { ptr, i64, i64 } %t152, 0 + %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i64 3 + %t157 = load { ptr, i64, i64 }, ptr %t156 + store { ptr, i64, i64 } %t157, ptr %a158 + call void @finch_str_copy(ptr %a159, ptr %a158) + %t160 = load { ptr, i64, i64 }, ptr %a159 + %t161 = insertvalue %S.lsp.VarRec %t151, { ptr, i64, i64 } %t160, 2 + %t162 = load { ptr, i64, i64 }, ptr %a27 + %t163 = extractvalue { ptr, i64, i64 } %t162, 1 + %t164 = icmp uge i64 4, %t163 + br i1 %t164, label %range9601, label %inrange9602 +range9601: + call void @finch_panic_index(ptr @.str.6588, i64 305, i64 4, i64 %t163) + unreachable +inrange9602: + %t165 = extractvalue { ptr, i64, i64 } %t162, 0 + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t165, i64 4 + %t167 = load { ptr, i64, i64 }, ptr %t166 + %t168 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t167) + %t169 = insertvalue %S.lsp.VarRec %t161, i64 %t168, 3 + %t170 = load { ptr, i64, i64 }, ptr %a27 + %t171 = extractvalue { ptr, i64, i64 } %t170, 1 + %t172 = icmp uge i64 5, %t171 + br i1 %t172, label %range9603, label %inrange9604 +range9603: + call void @finch_panic_index(ptr @.str.6589, i64 305, i64 5, i64 %t171) + unreachable +inrange9604: + %t173 = extractvalue { ptr, i64, i64 } %t170, 0 + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 5 + %t175 = load { ptr, i64, i64 }, ptr %t174 + %t176 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t175) + %t177 = insertvalue %S.lsp.VarRec %t169, i64 %t176, 4 + %t178 = load { ptr, i64, i64 }, ptr %a27 + %t179 = extractvalue { ptr, i64, i64 } %t178, 1 + %t180 = icmp uge i64 6, %t179 + br i1 %t180, label %range9605, label %inrange9606 +range9605: + call void @finch_panic_index(ptr @.str.6590, i64 305, i64 6, i64 %t179) + unreachable +inrange9606: + %t181 = extractvalue { ptr, i64, i64 } %t178, 0 + %t182 = getelementptr inbounds { ptr, i64, i64 }, ptr %t181, i64 6 + %t183 = load { ptr, i64, i64 }, ptr %t182 + store { ptr, i64, i64 } %t183, ptr %a184 + call void @finch_str_copy(ptr %a185, ptr %a184) + %t186 = load { ptr, i64, i64 }, ptr %a185 + %t187 = insertvalue %S.lsp.VarRec %t177, { ptr, i64, i64 } %t186, 5 + %t188 = load { ptr, i64, i64 }, ptr %a27 + %t189 = extractvalue { ptr, i64, i64 } %t188, 1 + %t190 = icmp uge i64 7, %t189 + br i1 %t190, label %range9607, label %inrange9608 +range9607: + call void @finch_panic_index(ptr @.str.6591, i64 305, i64 7, i64 %t189) + unreachable +inrange9608: + %t191 = extractvalue { ptr, i64, i64 } %t188, 0 + %t192 = getelementptr inbounds { ptr, i64, i64 }, ptr %t191, i64 7 + %t193 = load { ptr, i64, i64 }, ptr %t192 + %t194 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t193) + %t195 = insertvalue %S.lsp.VarRec %t187, i64 %t194, 6 + %t196 = load { ptr, i64, i64 }, ptr %a27 + %t197 = extractvalue { ptr, i64, i64 } %t196, 1 + %t198 = icmp uge i64 8, %t197 + br i1 %t198, label %range9609, label %inrange9610 +range9609: + call void @finch_panic_index(ptr @.str.6592, i64 305, i64 8, i64 %t197) + unreachable +inrange9610: + %t199 = extractvalue { ptr, i64, i64 } %t196, 0 + %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 8 + %t201 = load { ptr, i64, i64 }, ptr %t200 + %t202 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t201) + %t203 = insertvalue %S.lsp.VarRec %t195, i64 %t202, 7 + %t204 = load i64, ptr %t131 + %t205 = add i64 %t204, 1 + call void @finch_arr_reserve(ptr %t130, i64 %t205, i64 ptrtoint (ptr getelementptr (%S.lsp.VarRec, ptr null, i32 1) to i64)) + %t206 = load ptr, ptr %t130 + %t207 = getelementptr inbounds %S.lsp.VarRec, ptr %t206, i64 %t204 + store %S.lsp.VarRec %t203, ptr %t207 + store i64 %t205, ptr %t131 + br label %endif9594 +else9593: + %t208 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t208, ptr %a209 + store { ptr, i64, i64 } { ptr @.str.6593, i64 2, i64 0 }, ptr %a210 + %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) + %t212 = icmp ne i32 %t211, 0 + br label %logic.from9611 +logic.from9611: + br i1 %t212, label %logic.rhs9612, label %logic.end9613 +logic.rhs9612: + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t214 = load i64, ptr %t213 + %t215 = icmp sge i64 %t214, 10 + br label %logic.rend9614 +logic.rend9614: + br label %logic.end9613 +logic.end9613: + %t216 = phi i1 [ false, %logic.from9611 ], [ %t215, %logic.rend9614 ] + br i1 %t216, label %then9615, label %else9616 +then9615: + %t217 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 2 + %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %t217, i32 0, i32 1 + %t219 = load { ptr, i64, i64 }, ptr %a27 + %t220 = extractvalue { ptr, i64, i64 } %t219, 1 + %t221 = icmp uge i64 1, %t220 + br i1 %t221, label %range9618, label %inrange9619 +range9618: + call void @finch_panic_index(ptr @.str.6594, i64 307, i64 1, i64 %t220) + unreachable +inrange9619: + %t222 = extractvalue { ptr, i64, i64 } %t219, 0 + %t223 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i64 1 + %t224 = load { ptr, i64, i64 }, ptr %t223 + store { ptr, i64, i64 } %t224, ptr %a225 + call void @finch_str_copy(ptr %a226, ptr %a225) + %t227 = load { ptr, i64, i64 }, ptr %a226 + %t228 = insertvalue %S.lsp.FnRec zeroinitializer, { ptr, i64, i64 } %t227, 0 + %t229 = load { ptr, i64, i64 }, ptr %a27 + %t230 = extractvalue { ptr, i64, i64 } %t229, 1 + %t231 = icmp uge i64 2, %t230 + br i1 %t231, label %range9620, label %inrange9621 +range9620: + call void @finch_panic_index(ptr @.str.6595, i64 307, i64 2, i64 %t230) + unreachable +inrange9621: + %t232 = extractvalue { ptr, i64, i64 } %t229, 0 + %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 2 + %t234 = load { ptr, i64, i64 }, ptr %t233 + store { ptr, i64, i64 } %t234, ptr %a235 + call void @finch_str_copy(ptr %a236, ptr %a235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + %t238 = insertvalue %S.lsp.FnRec %t228, { ptr, i64, i64 } %t237, 1 + %t239 = load { ptr, i64, i64 }, ptr %a27 + %t240 = extractvalue { ptr, i64, i64 } %t239, 1 + %t241 = icmp uge i64 3, %t240 + br i1 %t241, label %range9622, label %inrange9623 +range9622: + call void @finch_panic_index(ptr @.str.6596, i64 307, i64 3, i64 %t240) + unreachable +inrange9623: + %t242 = extractvalue { ptr, i64, i64 } %t239, 0 + %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 3 + %t244 = load { ptr, i64, i64 }, ptr %t243 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = insertvalue %S.lsp.FnRec %t238, { ptr, i64, i64 } %t247, 2 + %t249 = load { ptr, i64, i64 }, ptr %a27 + %t250 = extractvalue { ptr, i64, i64 } %t249, 1 + %t251 = icmp uge i64 4, %t250 + br i1 %t251, label %range9624, label %inrange9625 +range9624: + call void @finch_panic_index(ptr @.str.6597, i64 307, i64 4, i64 %t250) + unreachable +inrange9625: + %t252 = extractvalue { ptr, i64, i64 } %t249, 0 + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i64 4 + %t254 = load { ptr, i64, i64 }, ptr %t253 + store { ptr, i64, i64 } %t254, ptr %a255 + call void @finch_str_copy(ptr %a256, ptr %a255) + %t257 = load { ptr, i64, i64 }, ptr %a256 + %t258 = insertvalue %S.lsp.FnRec %t248, { ptr, i64, i64 } %t257, 3 + %t259 = load { ptr, i64, i64 }, ptr %a27 + %t260 = extractvalue { ptr, i64, i64 } %t259, 1 + %t261 = icmp uge i64 5, %t260 + br i1 %t261, label %range9626, label %inrange9627 +range9626: + call void @finch_panic_index(ptr @.str.6598, i64 307, i64 5, i64 %t260) + unreachable +inrange9627: + %t262 = extractvalue { ptr, i64, i64 } %t259, 0 + %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 5 + %t264 = load { ptr, i64, i64 }, ptr %t263 + %t265 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t264) + %t266 = insertvalue %S.lsp.FnRec %t258, i64 %t265, 4 + %t267 = load { ptr, i64, i64 }, ptr %a27 + %t268 = extractvalue { ptr, i64, i64 } %t267, 1 + %t269 = icmp uge i64 6, %t268 + br i1 %t269, label %range9628, label %inrange9629 +range9628: + call void @finch_panic_index(ptr @.str.6599, i64 307, i64 6, i64 %t268) + unreachable +inrange9629: + %t270 = extractvalue { ptr, i64, i64 } %t267, 0 + %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i64 6 + %t272 = load { ptr, i64, i64 }, ptr %t271 + %t273 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t272) + %t274 = insertvalue %S.lsp.FnRec %t266, i64 %t273, 5 + %t275 = load { ptr, i64, i64 }, ptr %a27 + %t276 = extractvalue { ptr, i64, i64 } %t275, 1 + %t277 = icmp uge i64 7, %t276 + br i1 %t277, label %range9630, label %inrange9631 +range9630: + call void @finch_panic_index(ptr @.str.6600, i64 307, i64 7, i64 %t276) + unreachable +inrange9631: + %t278 = extractvalue { ptr, i64, i64 } %t275, 0 + %t279 = getelementptr inbounds { ptr, i64, i64 }, ptr %t278, i64 7 + %t280 = load { ptr, i64, i64 }, ptr %t279 + %t281 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t280) + %t282 = insertvalue %S.lsp.FnRec %t274, i64 %t281, 6 + %t283 = load { ptr, i64, i64 }, ptr %a27 + %t284 = extractvalue { ptr, i64, i64 } %t283, 1 + %t285 = icmp uge i64 8, %t284 + br i1 %t285, label %range9632, label %inrange9633 +range9632: + call void @finch_panic_index(ptr @.str.6601, i64 307, i64 8, i64 %t284) + unreachable +inrange9633: + %t286 = extractvalue { ptr, i64, i64 } %t283, 0 + %t287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t286, i64 8 + %t288 = load { ptr, i64, i64 }, ptr %t287 + %t289 = call { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %t288) + %t290 = insertvalue %S.lsp.FnRec %t282, { ptr, i64, i64 } %t289, 7 + %t291 = load { ptr, i64, i64 }, ptr %a27 + %t292 = extractvalue { ptr, i64, i64 } %t291, 1 + %t293 = icmp uge i64 9, %t292 + br i1 %t293, label %range9634, label %inrange9635 +range9634: + call void @finch_panic_index(ptr @.str.6602, i64 307, i64 9, i64 %t292) + unreachable +inrange9635: + %t294 = extractvalue { ptr, i64, i64 } %t291, 0 + %t295 = getelementptr inbounds { ptr, i64, i64 }, ptr %t294, i64 9 + %t296 = load { ptr, i64, i64 }, ptr %t295 + store { ptr, i64, i64 } %t296, ptr %a297 + store { ptr, i64, i64 } { ptr @.str.6604, i64 1, i64 0 }, ptr %a299 + call void @finch_str_split(ptr %a300, ptr %a297, ptr %a299) + %t301 = load { ptr, i64, i64 }, ptr %a300 + %t302 = insertvalue %S.lsp.FnRec %t290, { ptr, i64, i64 } %t301, 8 + %t303 = load i64, ptr %t218 + %t304 = add i64 %t303, 1 + call void @finch_arr_reserve(ptr %t217, i64 %t304, i64 ptrtoint (ptr getelementptr (%S.lsp.FnRec, ptr null, i32 1) to i64)) + %t305 = load ptr, ptr %t217 + %t306 = getelementptr inbounds %S.lsp.FnRec, ptr %t305, i64 %t303 + store %S.lsp.FnRec %t302, ptr %t306 + store i64 %t304, ptr %t218 + br label %endif9617 +else9616: + %t307 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t307, ptr %a308 + store { ptr, i64, i64 } { ptr @.str.6605, i64 2, i64 0 }, ptr %a309 + %t310 = call i32 @finch_str_eq(ptr %a308, ptr %a309) + %t311 = icmp ne i32 %t310, 0 + br label %logic.from9636 +logic.from9636: + br i1 %t311, label %logic.rhs9637, label %logic.end9638 +logic.rhs9637: + %t312 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t313 = load i64, ptr %t312 + %t314 = icmp sge i64 %t313, 6 + br label %logic.rend9639 +logic.rend9639: + br label %logic.end9638 +logic.end9638: + %t315 = phi i1 [ false, %logic.from9636 ], [ %t314, %logic.rend9639 ] + br i1 %t315, label %then9640, label %else9641 +then9640: + %t316 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i32 0, i32 1 + %t318 = load { ptr, i64, i64 }, ptr %a27 + %t319 = extractvalue { ptr, i64, i64 } %t318, 1 + %t320 = icmp uge i64 1, %t319 + br i1 %t320, label %range9643, label %inrange9644 +range9643: + call void @finch_panic_index(ptr @.str.6606, i64 309, i64 1, i64 %t319) + unreachable +inrange9644: + %t321 = extractvalue { ptr, i64, i64 } %t318, 0 + %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i64 1 + %t323 = load { ptr, i64, i64 }, ptr %t322 + store { ptr, i64, i64 } %t323, ptr %a324 + call void @finch_str_copy(ptr %a325, ptr %a324) + %t326 = load { ptr, i64, i64 }, ptr %a325 + %t327 = insertvalue %S.lsp.StructRec zeroinitializer, { ptr, i64, i64 } %t326, 0 + %t328 = load { ptr, i64, i64 }, ptr %a27 + %t329 = extractvalue { ptr, i64, i64 } %t328, 1 + %t330 = icmp uge i64 2, %t329 + br i1 %t330, label %range9645, label %inrange9646 +range9645: + call void @finch_panic_index(ptr @.str.6607, i64 309, i64 2, i64 %t329) + unreachable +inrange9646: + %t331 = extractvalue { ptr, i64, i64 } %t328, 0 + %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i64 2 + %t333 = load { ptr, i64, i64 }, ptr %t332 + store { ptr, i64, i64 } %t333, ptr %a334 + call void @finch_str_copy(ptr %a335, ptr %a334) + %t336 = load { ptr, i64, i64 }, ptr %a335 + %t337 = insertvalue %S.lsp.StructRec %t327, { ptr, i64, i64 } %t336, 1 + %t338 = load { ptr, i64, i64 }, ptr %a27 + %t339 = extractvalue { ptr, i64, i64 } %t338, 1 + %t340 = icmp uge i64 3, %t339 + br i1 %t340, label %range9647, label %inrange9648 +range9647: + call void @finch_panic_index(ptr @.str.6608, i64 309, i64 3, i64 %t339) + unreachable +inrange9648: + %t341 = extractvalue { ptr, i64, i64 } %t338, 0 + %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 3 + %t343 = load { ptr, i64, i64 }, ptr %t342 + store { ptr, i64, i64 } %t343, ptr %a344 + call void @finch_str_copy(ptr %a345, ptr %a344) + %t346 = load { ptr, i64, i64 }, ptr %a345 + %t347 = insertvalue %S.lsp.StructRec %t337, { ptr, i64, i64 } %t346, 2 + %t348 = load { ptr, i64, i64 }, ptr %a27 + %t349 = extractvalue { ptr, i64, i64 } %t348, 1 + %t350 = icmp uge i64 4, %t349 + br i1 %t350, label %range9649, label %inrange9650 +range9649: + call void @finch_panic_index(ptr @.str.6609, i64 309, i64 4, i64 %t349) + unreachable +inrange9650: + %t351 = extractvalue { ptr, i64, i64 } %t348, 0 + %t352 = getelementptr inbounds { ptr, i64, i64 }, ptr %t351, i64 4 + %t353 = load { ptr, i64, i64 }, ptr %t352 + %t354 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t353) + %t355 = insertvalue %S.lsp.StructRec %t347, i64 %t354, 3 + %t356 = load { ptr, i64, i64 }, ptr %a27 + %t357 = extractvalue { ptr, i64, i64 } %t356, 1 + %t358 = icmp uge i64 5, %t357 + br i1 %t358, label %range9651, label %inrange9652 +range9651: + call void @finch_panic_index(ptr @.str.6610, i64 309, i64 5, i64 %t357) + unreachable +inrange9652: + %t359 = extractvalue { ptr, i64, i64 } %t356, 0 + %t360 = getelementptr inbounds { ptr, i64, i64 }, ptr %t359, i64 5 + %t361 = load { ptr, i64, i64 }, ptr %t360 + %t362 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t361) + %t363 = insertvalue %S.lsp.StructRec %t355, i64 %t362, 4 + %t364 = load i64, ptr %t317 + %t365 = add i64 %t364, 1 + call void @finch_arr_reserve(ptr %t316, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.lsp.StructRec, ptr null, i32 1) to i64)) + %t366 = load ptr, ptr %t316 + %t367 = getelementptr inbounds %S.lsp.StructRec, ptr %t366, i64 %t364 + store %S.lsp.StructRec %t363, ptr %t367 + store i64 %t365, ptr %t317 + br label %endif9642 +else9641: + %t368 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t368, ptr %a369 + store { ptr, i64, i64 } { ptr @.str.6611, i64 3, i64 0 }, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br label %logic.from9653 +logic.from9653: + br i1 %t372, label %logic.rhs9654, label %logic.end9655 +logic.rhs9654: + %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t374 = load i64, ptr %t373 + %t375 = icmp sge i64 %t374, 5 + br label %logic.rend9656 +logic.rend9656: + br label %logic.end9655 +logic.end9655: + %t376 = phi i1 [ false, %logic.from9653 ], [ %t375, %logic.rend9656 ] + br label %logic.from9657 +logic.from9657: + br i1 %t376, label %logic.rhs9658, label %logic.end9659 +logic.rhs9658: + %t377 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %t377, i32 0, i32 1 + %t379 = load i64, ptr %t378 + %t380 = icmp sgt i64 %t379, 0 + br label %logic.rend9660 +logic.rend9660: + br label %logic.end9659 +logic.end9659: + %t381 = phi i1 [ false, %logic.from9657 ], [ %t380, %logic.rend9660 ] + br i1 %t381, label %then9661, label %else9662 +then9661: + %t382 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %t382, i32 0, i32 1 + %t384 = load i64, ptr %t383 + %t385 = sub i64 %t384, 1 + store i64 %t385, ptr %a386 + %t387 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t388 = load i64, ptr %a386 + %t389 = load { ptr, i64, i64 }, ptr %t387 + %t390 = extractvalue { ptr, i64, i64 } %t389, 1 + %t391 = icmp uge i64 %t388, %t390 + br i1 %t391, label %range9664, label %inrange9665 +range9664: + call void @finch_panic_index(ptr @.str.6612, i64 312, i64 %t388, i64 %t390) + unreachable +inrange9665: + %t392 = extractvalue { ptr, i64, i64 } %t389, 0 + %t393 = getelementptr inbounds %S.lsp.StructRec, ptr %t392, i64 %t388 + %t394 = getelementptr inbounds %S.lsp.StructRec, ptr %t393, i32 0, i32 5 + %t395 = getelementptr inbounds { ptr, i64, i64 }, ptr %t394, i32 0, i32 1 + %t396 = load { ptr, i64, i64 }, ptr %a27 + %t397 = extractvalue { ptr, i64, i64 } %t396, 1 + %t398 = icmp uge i64 3, %t397 + br i1 %t398, label %range9666, label %inrange9667 +range9666: + call void @finch_panic_index(ptr @.str.6613, i64 312, i64 3, i64 %t397) + unreachable +inrange9667: + %t399 = extractvalue { ptr, i64, i64 } %t396, 0 + %t400 = getelementptr inbounds { ptr, i64, i64 }, ptr %t399, i64 3 + %t401 = load { ptr, i64, i64 }, ptr %t400 + store { ptr, i64, i64 } %t401, ptr %a402 + call void @finch_str_copy(ptr %a403, ptr %a402) + %t404 = load { ptr, i64, i64 }, ptr %a403 + %t405 = load i64, ptr %t395 + %t406 = add i64 %t405, 1 + call void @finch_arr_reserve(ptr %t394, i64 %t406, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t407 = load ptr, ptr %t394 + %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %t407, i64 %t405 + store { ptr, i64, i64 } %t404, ptr %t408 + store i64 %t406, ptr %t395 + %t409 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 3 + %t410 = load i64, ptr %a386 + %t411 = load { ptr, i64, i64 }, ptr %t409 + %t412 = extractvalue { ptr, i64, i64 } %t411, 1 + %t413 = icmp uge i64 %t410, %t412 + br i1 %t413, label %range9668, label %inrange9669 +range9668: + call void @finch_panic_index(ptr @.str.6614, i64 313, i64 %t410, i64 %t412) + unreachable +inrange9669: + %t414 = extractvalue { ptr, i64, i64 } %t411, 0 + %t415 = getelementptr inbounds %S.lsp.StructRec, ptr %t414, i64 %t410 + %t416 = getelementptr inbounds %S.lsp.StructRec, ptr %t415, i32 0, i32 6 + %t417 = getelementptr inbounds { ptr, i64, i64 }, ptr %t416, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %a27 + %t419 = extractvalue { ptr, i64, i64 } %t418, 1 + %t420 = icmp uge i64 4, %t419 + br i1 %t420, label %range9670, label %inrange9671 +range9670: + call void @finch_panic_index(ptr @.str.6615, i64 313, i64 4, i64 %t419) + unreachable +inrange9671: + %t421 = extractvalue { ptr, i64, i64 } %t418, 0 + %t422 = getelementptr inbounds { ptr, i64, i64 }, ptr %t421, i64 4 + %t423 = load { ptr, i64, i64 }, ptr %t422 + store { ptr, i64, i64 } %t423, ptr %a424 + call void @finch_str_copy(ptr %a425, ptr %a424) + %t426 = load { ptr, i64, i64 }, ptr %a425 + %t427 = load i64, ptr %t417 + %t428 = add i64 %t427, 1 + call void @finch_arr_reserve(ptr %t416, i64 %t428, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t429 = load ptr, ptr %t416 + %t430 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i64 %t427 + store { ptr, i64, i64 } %t426, ptr %t430 + store i64 %t428, ptr %t417 + br label %endif9663 +else9662: + %t431 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t431, ptr %a432 + store { ptr, i64, i64 } { ptr @.str.6616, i64 2, i64 0 }, ptr %a433 + %t434 = call i32 @finch_str_eq(ptr %a432, ptr %a433) + %t435 = icmp ne i32 %t434, 0 + br label %logic.from9672 +logic.from9672: + br i1 %t435, label %logic.rhs9673, label %logic.end9674 +logic.rhs9673: + %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t437 = load i64, ptr %t436 + %t438 = icmp sge i64 %t437, 7 + br label %logic.rend9675 +logic.rend9675: + br label %logic.end9674 +logic.end9674: + %t439 = phi i1 [ false, %logic.from9672 ], [ %t438, %logic.rend9675 ] + br i1 %t439, label %then9676, label %else9677 +then9676: + %t440 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 4 + %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t440, i32 0, i32 1 + %t442 = load { ptr, i64, i64 }, ptr %a27 + %t443 = extractvalue { ptr, i64, i64 } %t442, 1 + %t444 = icmp uge i64 1, %t443 + br i1 %t444, label %range9679, label %inrange9680 +range9679: + call void @finch_panic_index(ptr @.str.6617, i64 315, i64 1, i64 %t443) + unreachable +inrange9680: + %t445 = extractvalue { ptr, i64, i64 } %t442, 0 + %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t445, i64 1 + %t447 = load { ptr, i64, i64 }, ptr %t446 + store { ptr, i64, i64 } %t447, ptr %a448 + call void @finch_str_copy(ptr %a449, ptr %a448) + %t450 = load { ptr, i64, i64 }, ptr %a449 + %t451 = insertvalue %S.lsp.EnumRec zeroinitializer, { ptr, i64, i64 } %t450, 0 + %t452 = load { ptr, i64, i64 }, ptr %a27 + %t453 = extractvalue { ptr, i64, i64 } %t452, 1 + %t454 = icmp uge i64 2, %t453 + br i1 %t454, label %range9681, label %inrange9682 +range9681: + call void @finch_panic_index(ptr @.str.6618, i64 315, i64 2, i64 %t453) + unreachable +inrange9682: + %t455 = extractvalue { ptr, i64, i64 } %t452, 0 + %t456 = getelementptr inbounds { ptr, i64, i64 }, ptr %t455, i64 2 + %t457 = load { ptr, i64, i64 }, ptr %t456 + store { ptr, i64, i64 } %t457, ptr %a458 + call void @finch_str_copy(ptr %a459, ptr %a458) + %t460 = load { ptr, i64, i64 }, ptr %a459 + %t461 = insertvalue %S.lsp.EnumRec %t451, { ptr, i64, i64 } %t460, 1 + %t462 = load { ptr, i64, i64 }, ptr %a27 + %t463 = extractvalue { ptr, i64, i64 } %t462, 1 + %t464 = icmp uge i64 3, %t463 + br i1 %t464, label %range9683, label %inrange9684 +range9683: + call void @finch_panic_index(ptr @.str.6619, i64 315, i64 3, i64 %t463) + unreachable +inrange9684: + %t465 = extractvalue { ptr, i64, i64 } %t462, 0 + %t466 = getelementptr inbounds { ptr, i64, i64 }, ptr %t465, i64 3 + %t467 = load { ptr, i64, i64 }, ptr %t466 + store { ptr, i64, i64 } %t467, ptr %a468 + call void @finch_str_copy(ptr %a469, ptr %a468) + %t470 = load { ptr, i64, i64 }, ptr %a469 + %t471 = insertvalue %S.lsp.EnumRec %t461, { ptr, i64, i64 } %t470, 2 + %t472 = load { ptr, i64, i64 }, ptr %a27 + %t473 = extractvalue { ptr, i64, i64 } %t472, 1 + %t474 = icmp uge i64 4, %t473 + br i1 %t474, label %range9685, label %inrange9686 +range9685: + call void @finch_panic_index(ptr @.str.6620, i64 315, i64 4, i64 %t473) + unreachable +inrange9686: + %t475 = extractvalue { ptr, i64, i64 } %t472, 0 + %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %t475, i64 4 + %t477 = load { ptr, i64, i64 }, ptr %t476 + %t478 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t477) + %t479 = insertvalue %S.lsp.EnumRec %t471, i64 %t478, 3 + %t480 = load { ptr, i64, i64 }, ptr %a27 + %t481 = extractvalue { ptr, i64, i64 } %t480, 1 + %t482 = icmp uge i64 5, %t481 + br i1 %t482, label %range9687, label %inrange9688 +range9687: + call void @finch_panic_index(ptr @.str.6621, i64 315, i64 5, i64 %t481) + unreachable +inrange9688: + %t483 = extractvalue { ptr, i64, i64 } %t480, 0 + %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 5 + %t485 = load { ptr, i64, i64 }, ptr %t484 + %t486 = call i64 @finch.lsp.intOf({ ptr, i64, i64 } %t485) + %t487 = insertvalue %S.lsp.EnumRec %t479, i64 %t486, 4 + %t488 = load { ptr, i64, i64 }, ptr %a27 + %t489 = extractvalue { ptr, i64, i64 } %t488, 1 + %t490 = icmp uge i64 6, %t489 + br i1 %t490, label %range9689, label %inrange9690 +range9689: + call void @finch_panic_index(ptr @.str.6622, i64 315, i64 6, i64 %t489) + unreachable +inrange9690: + %t491 = extractvalue { ptr, i64, i64 } %t488, 0 + %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 6 + %t493 = load { ptr, i64, i64 }, ptr %t492 + store { ptr, i64, i64 } %t493, ptr %a494 + store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a496 + call void @finch_str_split(ptr %a497, ptr %a494, ptr %a496) + %t498 = load { ptr, i64, i64 }, ptr %a497 + %t499 = insertvalue %S.lsp.EnumRec %t487, { ptr, i64, i64 } %t498, 5 + %t500 = load i64, ptr %t441 + %t501 = add i64 %t500, 1 + call void @finch_arr_reserve(ptr %t440, i64 %t501, i64 ptrtoint (ptr getelementptr (%S.lsp.EnumRec, ptr null, i32 1) to i64)) + %t502 = load ptr, ptr %t440 + %t503 = getelementptr inbounds %S.lsp.EnumRec, ptr %t502, i64 %t500 + store %S.lsp.EnumRec %t499, ptr %t503 + store i64 %t501, ptr %t441 + br label %endif9678 +else9677: + %t504 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } %t504, ptr %a505 + store { ptr, i64, i64 } { ptr @.str.6625, i64 2, i64 0 }, ptr %a506 + %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) + %t508 = icmp ne i32 %t507, 0 + br label %logic.from9691 +logic.from9691: + br i1 %t508, label %logic.rhs9692, label %logic.end9693 +logic.rhs9692: + %t509 = getelementptr inbounds { ptr, i64, i64 }, ptr %a27, i32 0, i32 1 + %t510 = load i64, ptr %t509 + %t511 = icmp sge i64 %t510, 2 + br label %logic.rend9694 +logic.rend9694: + br label %logic.end9693 +logic.end9693: + %t512 = phi i1 [ false, %logic.from9691 ], [ %t511, %logic.rend9694 ] + br i1 %t512, label %then9695, label %endif9697 +then9695: + %t513 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 5 + %t514 = getelementptr inbounds { ptr, i64, i64 }, ptr %t513, i32 0, i32 1 + %t515 = load { ptr, i64, i64 }, ptr %a27 + %t516 = extractvalue { ptr, i64, i64 } %t515, 1 + %t517 = icmp uge i64 1, %t516 + br i1 %t517, label %range9698, label %inrange9699 +range9698: + call void @finch_panic_index(ptr @.str.6626, i64 317, i64 1, i64 %t516) + unreachable +inrange9699: + %t518 = extractvalue { ptr, i64, i64 } %t515, 0 + %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 1 + %t520 = load { ptr, i64, i64 }, ptr %t519 + store { ptr, i64, i64 } %t520, ptr %a521 + call void @finch_str_copy(ptr %a522, ptr %a521) + %t523 = load { ptr, i64, i64 }, ptr %a522 + %t524 = load i64, ptr %t514 + %t525 = add i64 %t524, 1 + call void @finch_arr_reserve(ptr %t513, i64 %t525, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t526 = load ptr, ptr %t513 + %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t526, i64 %t524 + store { ptr, i64, i64 } %t523, ptr %t527 + store i64 %t525, ptr %t514 + br label %endif9697 +endif9697: + br label %endif9678 +endif9678: + br label %endif9663 +endif9663: + br label %endif9642 +endif9642: + br label %endif9617 +endif9617: + br label %endif9594 +endif9594: + br label %endif9571 +endif9571: + br label %endif9562 +else9561: + %t528 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t529 = getelementptr inbounds %S.lsp.Diag, ptr %t528, i32 0, i32 0 + %t530 = load i1, ptr %t529 + %t531 = xor i1 %t530, true + br i1 %t531, label %then9700, label %endif9702 +then9700: + %t532 = load { ptr, i64, i64 }, ptr %a18 + %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) + %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + store %S.lsp.Diag %t533, ptr %t534 + br label %endif9702 +endif9702: + br label %endif9562 +endif9562: + br label %each.step9558 +each.step9558: + %t535 = load i64, ptr %a10 + %t536 = add i64 %t535, 1 + store i64 %t536, ptr %a10 + br label %each.cond9556 +each.end9559: + %t537 = load %S.lsp.Analysis, ptr %a2 + store %S.lsp.Analysis %t537, ptr %a538 + call void @finch.copy.S_lsp_Analysis(ptr %a539, ptr %a538) + %t540 = load %S.lsp.Analysis, ptr %a539 + ret %S.lsp.Analysis %t540 +} + +define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca i64, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a25 = alloca i64, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca i64, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a65 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a76 = alloca { ptr, i64, i64 }, align 16 + %a77 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a98 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca { ptr, i64, i64 }, align 16 + %a116 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca { ptr, i64, i64 }, align 16 + %a124 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca { ptr, i64, i64 }, align 16 + %a137 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a141 = alloca { ptr, i64, i64 }, align 16 + %a142 = alloca { ptr, i64, i64 }, align 16 + %a144 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a161 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca %S.lsp.Analysis, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca i32, align 16 + %a190 = alloca %S.lsp.Analysis, align 16 + %a191 = alloca %S.lsp.Analysis, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca { ptr, i64, i64 }, align 16 + %a203 = alloca { ptr, i64, i64 }, align 16 + %a204 = alloca { ptr, i64, i64 }, align 16 + %a210 = alloca %S.lsp.Analysis, align 16 + %a211 = alloca %S.lsp.Analysis, align 16 + %a213 = alloca %S.lsp.Analysis, align 16 + %a217 = alloca { ptr, i64, i64 }, align 16 + %a218 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a251 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca i32, align 16 + %a262 = alloca %S.lsp.Analysis, align 16 + %a263 = alloca %S.lsp.Analysis, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t3 = load { ptr, i64, i64 }, ptr %t2 + store { ptr, i64, i64 } { ptr @.str.6627, i64 10, i64 0 }, ptr %a5 + store { ptr, i64, i64 } %t3, ptr %a6 + call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) + %t7 = load { ptr, i64, i64 }, ptr %a4 + store { ptr, i64, i64 } %t7, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6628, i64 1, i64 0 }, ptr %a10 + call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) + %t11 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t11, ptr %a13 + call void @finch_str_copy(ptr %a12, ptr %a13) + %t14 = call i64 @finch_shell(ptr %a12) + store { ptr, i64, i64 } { ptr @.str.6629, i64 0, i64 0 }, ptr %a15 + store i64 0, ptr %a16 + %t17 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %a18 + %t19 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t20 = load i64, ptr %t19 + call void @finch_arr_make(ptr %a18, i64 %t20, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t21 = load ptr, ptr %a18 + store i64 0, ptr %a22 + %t23 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 2 + %t24 = load i64, ptr %t23 + store i64 0, ptr %a25 + br label %n.cond9718 +n.cond9718: + %t26 = load i64, ptr %a25 + %t27 = icmp slt i64 %t26, %t24 + br i1 %t27, label %n.body9719, label %n.end9720 +n.body9719: + %t28 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t17, i32 0, i32 0 + %t29 = load ptr, ptr %t28 + %t30 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t29, i64 %t26 + %t31 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t30, i32 0, i32 0 + %t32 = load i64, ptr %t31 + %t33 = icmp ne i64 %t32, 0 + br i1 %t33, label %entry.live9721, label %entry.next9722 +entry.live9721: + %t34 = load i64, ptr %a22 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i64 %t34 + %t36 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t30, i32 0, i32 1 + call void @finch_str_copy(ptr %t35, ptr %t36) + %t37 = add i64 %t34, 1 + store i64 %t37, ptr %a22 + br label %entry.next9722 +entry.next9722: + %t38 = load i64, ptr %a25 + %t39 = add i64 %t38, 1 + store i64 %t39, ptr %a25 + br label %n.cond9718 +n.end9720: + %t40 = load { ptr, i64, i64 }, ptr %a18 + store { ptr, i64, i64 } %t40, ptr %a41 + store i64 0, ptr %a42 + br label %each.cond9723 +each.cond9723: + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a41, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = load i64, ptr %a42 + %t46 = icmp slt i64 %t45, %t44 + br i1 %t46, label %each.body9724, label %each.end9726 +each.body9724: + %t47 = load ptr, ptr %a41 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + %t49 = load { ptr, i64, i64 }, ptr %t48 + store { ptr, i64, i64 } %t49, ptr %a50 + %t51 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t52 = load { ptr, i64, i64 }, ptr %t51 + store { ptr, i64, i64 } %t52, ptr %a54 + store { ptr, i64, i64 } { ptr @.str.6630, i64 4, i64 0 }, ptr %a55 + call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) + %t56 = load { ptr, i64, i64 }, ptr %a53 + %t57 = load i64, ptr %a16 + call void @finch_str_from_int(ptr %a58, i64 %t57) + %t59 = load { ptr, i64, i64 }, ptr %a58 + store { ptr, i64, i64 } %t56, ptr %a61 + store { ptr, i64, i64 } %t59, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + store { ptr, i64, i64 } %t63, ptr %a65 + store { ptr, i64, i64 } { ptr @.str.6631, i64 4, i64 0 }, ptr %a66 + call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) + %t67 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t67, ptr %a68 + %t69 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t69, ptr %a70 + %t71 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t72 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t72, ptr %a73 + %t74 = call i64 @finch_map_find(ptr %t71, ptr %a73, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t75 = icmp slt i64 %t74, 0 + br i1 %t75, label %map.missing9727, label %map.found9728 +map.missing9727: + store { ptr, i64, i64 } zeroinitializer, ptr %a76 + store { ptr, i64, i64 } %t72, ptr %a77 + call void @finch_buf_str(ptr %a76, ptr %a77, i32 1) + call void @finch_map_missing(ptr @.str.6632, i64 333, ptr %a76) + unreachable +map.found9728: + %t78 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t71, i32 0, i32 0 + %t79 = load ptr, ptr %t78 + %t80 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t79, i64 %t74 + %t81 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t80, i32 0, i32 2 + %t82 = load { ptr, i64, i64 }, ptr %t81 + store { ptr, i64, i64 } %t82, ptr %a83 + %t84 = call i32 @finch_write_file(ptr %a70, ptr %a83) + %t85 = icmp ne i32 %t84, 0 + %t86 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6633, i64 12, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = load { ptr, i64, i64 }, ptr %a50 + store { ptr, i64, i64 } %t90, ptr %a93 + store { ptr, i64, i64 } %t91, ptr %a94 + call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) + %t95 = load { ptr, i64, i64 }, ptr %a92 + store { ptr, i64, i64 } %t95, ptr %a97 + store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a98 + call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) + %t99 = load { ptr, i64, i64 }, ptr %a96 + %t100 = load { ptr, i64, i64 }, ptr %a68 + store { ptr, i64, i64 } %t99, ptr %a102 + store { ptr, i64, i64 } %t100, ptr %a103 + call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) + %t104 = load { ptr, i64, i64 }, ptr %a101 + store { ptr, i64, i64 } %t104, ptr %a106 + store { ptr, i64, i64 } { ptr @.str.6635, i64 1, i64 0 }, ptr %a107 + call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) + %t108 = load { ptr, i64, i64 }, ptr %a105 + store { ptr, i64, i64 } %t108, ptr %a15 + %t109 = load i64, ptr %a16 + %t110 = add i64 %t109, 1 + store i64 %t110, ptr %a16 + br label %each.step9725 +each.step9725: + %t111 = load i64, ptr %a42 + %t112 = add i64 %t111, 1 + store i64 %t112, ptr %a42 + br label %each.cond9723 +each.end9726: + %t113 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 + %t114 = load { ptr, i64, i64 }, ptr %t113 + store { ptr, i64, i64 } %t114, ptr %a116 + store { ptr, i64, i64 } { ptr @.str.6636, i64 8, i64 0 }, ptr %a117 + call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) + %t118 = load { ptr, i64, i64 }, ptr %a115 + store { ptr, i64, i64 } %t118, ptr %a119 + %t120 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 + %t121 = load { ptr, i64, i64 }, ptr %t120 + store { ptr, i64, i64 } { ptr @.str.6637, i64 1, i64 0 }, ptr %a123 + store { ptr, i64, i64 } %t121, ptr %a124 + call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) + %t125 = load { ptr, i64, i64 }, ptr %a122 + store { ptr, i64, i64 } %t125, ptr %a127 + store { ptr, i64, i64 } { ptr @.str.6638, i64 9, i64 0 }, ptr %a128 + call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) + %t129 = load { ptr, i64, i64 }, ptr %a126 + %t130 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t129, ptr %a132 + store { ptr, i64, i64 } %t130, ptr %a133 + call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) + %t134 = load { ptr, i64, i64 }, ptr %a131 + store { ptr, i64, i64 } %t134, ptr %a136 + store { ptr, i64, i64 } { ptr @.str.6639, i64 1, i64 0 }, ptr %a137 + call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) + %t138 = load { ptr, i64, i64 }, ptr %a135 + %t139 = load { ptr, i64, i64 }, ptr %a15 + store { ptr, i64, i64 } %t138, ptr %a141 + store { ptr, i64, i64 } %t139, ptr %a142 + call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) + %t143 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } %t143, ptr %a145 + store { ptr, i64, i64 } { ptr @.str.6640, i64 4, i64 0 }, ptr %a146 + call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) + %t147 = load { ptr, i64, i64 }, ptr %a144 + %t148 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t147, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.6641, i64 6, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + store { ptr, i64, i64 } %t156, ptr %a158 + call void @finch_str_copy(ptr %a157, ptr %a158) + %t159 = call i64 @finch_shell(ptr %a157) + %t160 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t160, ptr %a161 + store { ptr, i64, i64 } zeroinitializer, ptr %a162 + store { ptr, i64, i64 } zeroinitializer, ptr %a163 + %t164 = call i32 @finch_try_read_file(ptr %a162, ptr %a161, ptr %a163) + %t165 = icmp eq i32 %t164, 0 + %t166 = load { ptr, i64, i64 }, ptr %a163 + %t167 = load { ptr, i64, i64 }, ptr %a162 + br i1 %t165, label %or.failed9729, label %or.ok9730 +or.failed9729: + store { ptr, i64, i64 } %t166, ptr %a168 + br label %or.bend9731 +or.bend9731: + br label %or.end9732 +or.ok9730: + br label %or.end9732 +or.end9732: + %t169 = phi { ptr, i64, i64 } [ { ptr @.str.6642, i64 0, i64 0 }, %or.bend9731 ], [ %t167, %or.ok9730 ] + %t170 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t169) + store %S.lsp.Analysis %t170, ptr %a171 + %t172 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 6 + %t173 = getelementptr inbounds %S.lsp.Diag, ptr %t172, i32 0, i32 0 + %t174 = load i1, ptr %t173 + %t175 = xor i1 %t174, true + br i1 %t175, label %then9733, label %else9734 +then9733: + %t176 = load %S.lsp.Analysis, ptr %a171 + %t177 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t178 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t178, ptr %a179 + store i32 0, ptr %a180 + %t181 = call i64 @finch_map_slot(ptr %t177, ptr %a179, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a180) + %t182 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t177, i32 0, i32 0 + %t183 = load ptr, ptr %t182 + %t184 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t183, i64 %t181 + %t185 = load i32, ptr %a180 + %t186 = icmp ne i32 %t185, 0 + br i1 %t186, label %map.new9736, label %map.have9737 +map.new9736: + %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 1 + call void @finch_str_copy(ptr %t187, ptr %a179) + %t188 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t188 + br label %map.have9737 +map.have9737: + %t189 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t184, i32 0, i32 2 + store %S.lsp.Analysis %t176, ptr %a190 + call void @finch.copy.S_lsp_Analysis(ptr %a191, ptr %a190) + %t192 = load %S.lsp.Analysis, ptr %a191 + store %S.lsp.Analysis %t192, ptr %t189 + br label %endif9735 +else9734: + %t193 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t194 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t194, ptr %a195 + %t196 = call i64 @finch_map_find(ptr %t193, ptr %a195, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t197 = icmp sge i64 %t196, 0 + br i1 %t197, label %then9738, label %endif9740 +then9738: + %t198 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t199 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t199, ptr %a200 + %t201 = call i64 @finch_map_find(ptr %t198, ptr %a200, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t202 = icmp slt i64 %t201, 0 + br i1 %t202, label %map.missing9741, label %map.found9742 +map.missing9741: + store { ptr, i64, i64 } zeroinitializer, ptr %a203 + store { ptr, i64, i64 } %t199, ptr %a204 + call void @finch_buf_str(ptr %a203, ptr %a204, i32 1) + call void @finch_map_missing(ptr @.str.6643, i64 344, ptr %a203) + unreachable +map.found9742: + %t205 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t198, i32 0, i32 0 + %t206 = load ptr, ptr %t205 + %t207 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t206, i64 %t201 + %t208 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t207, i32 0, i32 2 + %t209 = load %S.lsp.Analysis, ptr %t208 + store %S.lsp.Analysis %t209, ptr %a210 + call void @finch.copy.S_lsp_Analysis(ptr %a211, ptr %a210) + %t212 = load %S.lsp.Analysis, ptr %a211 + store %S.lsp.Analysis %t212, ptr %a213 + %t214 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 2 + %t215 = load { ptr, i64, i64 }, ptr %t214 + %t216 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 2 + store { ptr, i64, i64 } %t215, ptr %a217 + call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) + %t219 = load { ptr, i64, i64 }, ptr %a218 + store { ptr, i64, i64 } %t219, ptr %t216 + %t220 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 + %t221 = load { ptr, i64, i64 }, ptr %t220 + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 3 + store { ptr, i64, i64 } %t221, ptr %a223 + call void @finch.copy.arr_S_lsp_StructRec(ptr %a224, ptr %a223) + %t225 = load { ptr, i64, i64 }, ptr %a224 + store { ptr, i64, i64 } %t225, ptr %t222 + %t226 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 + %t227 = load { ptr, i64, i64 }, ptr %t226 + %t228 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 4 + store { ptr, i64, i64 } %t227, ptr %a229 + call void @finch.copy.arr_S_lsp_EnumRec(ptr %a230, ptr %a229) + %t231 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t231, ptr %t228 + %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 1 + store { ptr, i64, i64 } %t233, ptr %a235 + call void @finch.copy.arr_S_lsp_VarRec(ptr %a236, ptr %a235) + %t237 = load { ptr, i64, i64 }, ptr %a236 + store { ptr, i64, i64 } %t237, ptr %t234 + %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 5 + %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 + %t240 = load i64, ptr %t239 + %t241 = icmp eq i64 %t240, 0 + br i1 %t241, label %then9743, label %endif9745 +then9743: + %t242 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 + %t243 = load { ptr, i64, i64 }, ptr %t242 + %t244 = getelementptr inbounds %S.lsp.Analysis, ptr %a171, i32 0, i32 5 + store { ptr, i64, i64 } %t243, ptr %a245 + call void @finch.copy.arr_str(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + store { ptr, i64, i64 } %t247, ptr %t244 + br label %endif9745 +endif9745: + br label %endif9740 +endif9740: + br label %endif9735 +endif9735: + %t248 = load %S.lsp.Analysis, ptr %a171 + %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t250 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t250, ptr %a251 + store i32 0, ptr %a252 + %t253 = call i64 @finch_map_slot(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a252) + %t254 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t249, i32 0, i32 0 + %t255 = load ptr, ptr %t254 + %t256 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t255, i64 %t253 + %t257 = load i32, ptr %a252 + %t258 = icmp ne i32 %t257, 0 + br i1 %t258, label %map.new9746, label %map.have9747 +map.new9746: + %t259 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 1 + call void @finch_str_copy(ptr %t259, ptr %a251) + %t260 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 2 + store %S.lsp.Analysis zeroinitializer, ptr %t260 + br label %map.have9747 +map.have9747: + %t261 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t256, i32 0, i32 2 + store %S.lsp.Analysis %t248, ptr %a262 + call void @finch.copy.S_lsp_Analysis(ptr %a263, ptr %a262) + %t264 = load %S.lsp.Analysis, ptr %a263 + store %S.lsp.Analysis %t264, ptr %t261 + %t265 = load { ptr, i64, i64 }, ptr %a1 + %t266 = load %S.lsp.Analysis, ptr %a171 + call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t265, %S.lsp.Analysis %t266) + ret void +} + +define internal void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %p0, %S.lsp.Analysis %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.lsp.Analysis, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca i64, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca i64, align 16 + %a29 = alloca i64, align 16 + %a34 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a54 = alloca i64, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca %S.json.Json, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a81 = alloca i64, align 16 + %a88 = alloca i64, align 16 + %a92 = alloca %S.json.Json, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a108 = alloca { ptr, i64, i64 }, align 16 + %a115 = alloca %S.json.Json, align 16 + %a125 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.lsp.Analysis %p1, ptr %a2 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + %t7 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t8 = call ptr @finch_alloc(i64 %t7) + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 0 + store { ptr, i64, i64 } %t6, ptr %t9 + %t10 = insertvalue { ptr, i64, i64 } undef, ptr %t8, 0 + %t11 = insertvalue { ptr, i64, i64 } %t10, i64 1, 1 + %t12 = insertvalue { ptr, i64, i64 } %t11, i64 1, 2 + store { ptr, i64, i64 } %t12, ptr %a13 + %t14 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store i64 0, ptr %a15 + br label %each.cond9748 +each.cond9748: + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = load i64, ptr %a15 + %t19 = icmp slt i64 %t18, %t17 + br i1 %t19, label %each.body9749, label %each.end9751 +each.body9749: + %t20 = load ptr, ptr %t14 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 + %t22 = load { ptr, i64, i64 }, ptr %t21 + store { ptr, i64, i64 } %t22, ptr %a23 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t25 = load { ptr, i64, i64 }, ptr %a23 + store i64 -1, ptr %a26 + %t27 = load i64, ptr %t24 + %t28 = load ptr, ptr %a13 + store i64 0, ptr %a29 + br label %find.cond9752 +find.cond9752: + %t30 = load i64, ptr %a29 + %t31 = icmp slt i64 %t30, %t27 + br i1 %t31, label %find.body9753, label %find.end9756 +find.body9753: + %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t30 + %t33 = load { ptr, i64, i64 }, ptr %t32 + store { ptr, i64, i64 } %t33, ptr %a34 + store { ptr, i64, i64 } %t25, ptr %a35 + %t36 = call i32 @finch_str_eq(ptr %a34, ptr %a35) + %t37 = icmp ne i32 %t36, 0 + br i1 %t37, label %find.hit9754, label %find.next9755 +find.hit9754: + store i64 %t30, ptr %a26 + br label %find.end9756 +find.next9755: + %t38 = add i64 %t30, 1 + store i64 %t38, ptr %a29 + br label %find.cond9752 +find.end9756: + %t39 = load i64, ptr %a26 + %t40 = icmp sge i64 %t39, 0 + %t41 = xor i1 %t40, true + br i1 %t41, label %then9757, label %endif9759 +then9757: + %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t43 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t43, ptr %a44 + call void @finch_str_copy(ptr %a45, ptr %a44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + %t47 = load i64, ptr %t42 + %t48 = add i64 %t47, 1 + call void @finch_arr_reserve(ptr %a13, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t49 = load ptr, ptr %a13 + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 + store { ptr, i64, i64 } %t46, ptr %t50 + store i64 %t48, ptr %t42 + br label %endif9759 +endif9759: + br label %each.step9750 +each.step9750: + %t51 = load i64, ptr %a15 + %t52 = add i64 %t51, 1 + store i64 %t52, ptr %a15 + br label %each.cond9748 +each.end9751: + store { ptr, i64, i64 } zeroinitializer, ptr %a53 + store i64 0, ptr %a54 + br label %each.cond9760 +each.cond9760: + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a13, i32 0, i32 1 + %t56 = load i64, ptr %t55 + %t57 = load i64, ptr %a54 + %t58 = icmp slt i64 %t57, %t56 + br i1 %t58, label %each.body9761, label %each.end9763 +each.body9761: + %t59 = load ptr, ptr %a13 + %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i64 %t57 + %t61 = load { ptr, i64, i64 }, ptr %t60 + store { ptr, i64, i64 } %t61, ptr %a62 + %t63 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t63, ptr %a64 + %t65 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t66 = getelementptr inbounds %S.lsp.Diag, ptr %t65, i32 0, i32 0 + %t67 = load i1, ptr %t66 + br label %logic.from9764 +logic.from9764: + br i1 %t67, label %logic.rhs9765, label %logic.end9766 +logic.rhs9765: + %t68 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t69 = getelementptr inbounds %S.lsp.Diag, ptr %t68, i32 0, i32 1 + %t70 = load { ptr, i64, i64 }, ptr %t69 + %t71 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t70, ptr %a72 + store { ptr, i64, i64 } %t71, ptr %a73 + %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) + %t75 = icmp ne i32 %t74, 0 + br label %logic.rend9767 +logic.rend9767: + br label %logic.end9766 +logic.end9766: + %t76 = phi i1 [ false, %logic.from9764 ], [ %t75, %logic.rend9767 ] + br i1 %t76, label %then9768, label %endif9770 +then9768: + %t77 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t78 = getelementptr inbounds %S.lsp.Diag, ptr %t77, i32 0, i32 2 + %t79 = load i64, ptr %t78 + %t80 = sub i64 %t79, 1 + store i64 %t80, ptr %a81 + %t82 = load i64, ptr %a81 + %t83 = icmp slt i64 %t82, 0 + br i1 %t83, label %then9771, label %endif9773 +then9771: + store i64 0, ptr %a81 + br label %endif9773 +endif9773: + %t84 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t85 = getelementptr inbounds %S.lsp.Diag, ptr %t84, i32 0, i32 3 + %t86 = load i64, ptr %t85 + %t87 = sub i64 %t86, 1 + store i64 %t87, ptr %a88 + %t89 = load i64, ptr %a88 + %t90 = icmp slt i64 %t89, 0 + br i1 %t90, label %then9774, label %endif9776 +then9774: + store i64 0, ptr %a88 + br label %endif9776 +endif9776: + %t91 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t91, ptr %a92 + %t93 = load i64, ptr %a81 + %t94 = load i64, ptr %a88 + %t95 = load i64, ptr %a88 + %t96 = add i64 %t95, 1 + %t97 = call %S.json.Json @finch.lsp.range(i64 %t93, i64 %t94, i64 %t96) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6644, i64 5, i64 0 }, %S.json.Json %t97) + %t98 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6645, i64 8, i64 0 }, %S.json.Json %t98) + %t99 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6647, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6646, i64 6, i64 0 }, %S.json.Json %t99) + %t100 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 + %t101 = getelementptr inbounds %S.lsp.Diag, ptr %t100, i32 0, i32 4 + %t102 = load { ptr, i64, i64 }, ptr %t101 + %t103 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t102) + call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.6648, i64 7, i64 0 }, %S.json.Json %t103) + %t104 = load %S.json.Json, ptr %a92 + call void @finch.json.Json.push(ptr %a64, %S.json.Json %t104) + %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 + %t106 = load { ptr, i64, i64 }, ptr %a62 + store { ptr, i64, i64 } %t106, ptr %a107 + call void @finch_str_copy(ptr %a108, ptr %a107) + %t109 = load { ptr, i64, i64 }, ptr %a108 + %t110 = load i64, ptr %t105 + %t111 = add i64 %t110, 1 + call void @finch_arr_reserve(ptr %a53, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t112 = load ptr, ptr %a53 + %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 + store { ptr, i64, i64 } %t109, ptr %t113 + store i64 %t111, ptr %t105 + br label %endif9770 +endif9770: + %t114 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t114, ptr %a115 + %t116 = load { ptr, i64, i64 }, ptr %a62 + %t117 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t116) + %t118 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t117) + call void @finch.json.Json.set(ptr %a115, { ptr, i64, i64 } { ptr @.str.6649, i64 3, i64 0 }, %S.json.Json %t118) + %t119 = load %S.json.Json, ptr %a64 + call void @finch.json.Json.set(ptr %a115, { ptr, i64, i64 } { ptr @.str.6650, i64 11, i64 0 }, %S.json.Json %t119) + %t120 = load %S.json.Json, ptr %a115 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6651, i64 31, i64 0 }, %S.json.Json %t120) + br label %each.step9762 +each.step9762: + %t121 = load i64, ptr %a54 + %t122 = add i64 %t121, 1 + store i64 %t122, ptr %a54 + br label %each.cond9760 +each.end9763: + %t123 = load { ptr, i64, i64 }, ptr %a53 + %t124 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 + store { ptr, i64, i64 } %t123, ptr %a125 + call void @finch.copy.arr_str(ptr %a126, ptr %a125) + %t127 = load { ptr, i64, i64 }, ptr %a126 + store { ptr, i64, i64 } %t127, ptr %t124 + ret void +} + +define internal i64 @finch.lsp.refAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a19 = alloca %S.lsp.Ref, align 16 + %a20 = alloca %S.lsp.Ref, align 16 + %a22 = alloca %S.lsp.Ref, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond9777 +for.cond9777: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body9778, label %for.end9780 +for.body9778: + %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t12 = load i64, ptr %a8 + %t13 = load { ptr, i64, i64 }, ptr %t11 + %t14 = extractvalue { ptr, i64, i64 } %t13, 1 + %t15 = icmp uge i64 %t12, %t14 + br i1 %t15, label %range9781, label %inrange9782 +range9781: + call void @finch_panic_index(ptr @.str.6652, i64 397, i64 %t12, i64 %t14) + unreachable +inrange9782: + %t16 = extractvalue { ptr, i64, i64 } %t13, 0 + %t17 = getelementptr inbounds %S.lsp.Ref, ptr %t16, i64 %t12 + %t18 = load %S.lsp.Ref, ptr %t17 + store %S.lsp.Ref %t18, ptr %a19 + call void @finch.copy.S_lsp_Ref(ptr %a20, ptr %a19) + %t21 = load %S.lsp.Ref, ptr %a20 + store %S.lsp.Ref %t21, ptr %a22 + %t23 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = load i64, ptr %a3 + %t26 = icmp eq i64 %t24, %t25 + br label %logic.from9783 +logic.from9783: + br i1 %t26, label %logic.rhs9784, label %logic.end9785 +logic.rhs9784: + %t27 = load i64, ptr %a4 + %t28 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 + %t29 = load i64, ptr %t28 + %t30 = icmp sge i64 %t27, %t29 + br label %logic.rend9786 +logic.rend9786: + br label %logic.end9785 +logic.end9785: + %t31 = phi i1 [ false, %logic.from9783 ], [ %t30, %logic.rend9786 ] + br label %logic.from9787 +logic.from9787: + br i1 %t31, label %logic.rhs9788, label %logic.end9789 +logic.rhs9788: + %t32 = load i64, ptr %a4 + %t33 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 2 + %t34 = load i64, ptr %t33 + %t35 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 3 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t34, %t36 + %t38 = icmp sle i64 %t32, %t37 + br label %logic.rend9790 +logic.rend9790: + br label %logic.end9789 +logic.end9789: + %t39 = phi i1 [ false, %logic.from9787 ], [ %t38, %logic.rend9790 ] + br label %logic.from9791 +logic.from9791: + br i1 %t39, label %logic.rhs9792, label %logic.end9793 +logic.rhs9792: + %t40 = getelementptr inbounds %S.lsp.Ref, ptr %a22, i32 0, i32 0 + %t41 = load { ptr, i64, i64 }, ptr %t40 + %t42 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t41, ptr %a43 + store { ptr, i64, i64 } %t42, ptr %a44 + %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) + %t46 = icmp ne i32 %t45, 0 + br label %logic.rend9794 +logic.rend9794: + br label %logic.end9793 +logic.end9793: + %t47 = phi i1 [ false, %logic.from9791 ], [ %t46, %logic.rend9794 ] + br i1 %t47, label %then9795, label %endif9797 +then9795: + %t48 = load i64, ptr %a8 + ret i64 %t48 +endif9797: + br label %for.step9779 +for.step9779: + %t49 = load i64, ptr %a8 + %t50 = add i64 %t49, 1 + store i64 %t50, ptr %a8 + br label %for.cond9777 +for.end9780: + ret i64 -1 +} + +define internal %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a10 = alloca i64, align 16 + %a15 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 + %a32 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = load %S.lsp.Analysis, ptr %a1 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a3 + %t8 = load i64, ptr %a4 + %t9 = call i64 @finch.lsp.refAt(%S.lsp.Analysis %t5, { ptr, i64, i64 } %t6, i64 %t7, i64 %t8) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, 0 + br i1 %t12, label %then9798, label %endif9800 +then9798: + %t13 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t13 +endif9800: + %t14 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t14, ptr %a15 + %t16 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6654, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6653, i64 4, i64 0 }, %S.json.Json %t16) + %t17 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t18 = load i64, ptr %a10 + %t19 = load { ptr, i64, i64 }, ptr %t17 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range9801, label %inrange9802 +range9801: + call void @finch_panic_index(ptr @.str.6656, i64 412, i64 %t18, i64 %t20) + unreachable +inrange9802: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds %S.lsp.Ref, ptr %t22, i64 %t18 + %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i32 0, i32 7 + %t25 = load { ptr, i64, i64 }, ptr %t24 + %t26 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t25) + call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.6655, i64 5, i64 0 }, %S.json.Json %t26) + %t27 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t27, ptr %a28 + %t29 = load %S.json.Json, ptr %a15 + call void @finch.json.Json.set(ptr %a28, { ptr, i64, i64 } { ptr @.str.6657, i64 8, i64 0 }, %S.json.Json %t29) + %t30 = load %S.json.Json, ptr %a28 + store %S.json.Json %t30, ptr %a31 + call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) + %t33 = load %S.json.Json, ptr %a32 + ret %S.json.Json %t33 +} + +define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a10 = alloca i64, align 16 + %a34 = alloca %S.lsp.Ref, align 16 + %a35 = alloca %S.lsp.Ref, align 16 + %a37 = alloca %S.lsp.Ref, align 16 + %a39 = alloca %S.json.Json, align 16 + %a55 = alloca %S.json.Json, align 16 + %a56 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + %t5 = load %S.lsp.Analysis, ptr %a1 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a3 + %t8 = load i64, ptr %a4 + %t9 = call i64 @finch.lsp.refAt(%S.lsp.Analysis %t5, { ptr, i64, i64 } %t6, i64 %t7, i64 %t8) + store i64 %t9, ptr %a10 + %t11 = load i64, ptr %a10 + %t12 = icmp slt i64 %t11, 0 + br label %logic.from9803 +logic.from9803: + br i1 %t12, label %logic.end9805, label %logic.rhs9804 +logic.rhs9804: + %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t14 = load i64, ptr %a10 + %t15 = load { ptr, i64, i64 }, ptr %t13 + %t16 = extractvalue { ptr, i64, i64 } %t15, 1 + %t17 = icmp uge i64 %t14, %t16 + br i1 %t17, label %range9806, label %inrange9807 +range9806: + call void @finch_panic_index(ptr @.str.6658, i64 420, i64 %t14, i64 %t16) + unreachable +inrange9807: + %t18 = extractvalue { ptr, i64, i64 } %t15, 0 + %t19 = getelementptr inbounds %S.lsp.Ref, ptr %t18, i64 %t14 + %t20 = getelementptr inbounds %S.lsp.Ref, ptr %t19, i32 0, i32 4 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = icmp eq i64 %t22, 0 + br label %logic.rend9808 +logic.rend9808: + br label %logic.end9805 +logic.end9805: + %t24 = phi i1 [ true, %logic.from9803 ], [ %t23, %logic.rend9808 ] + br i1 %t24, label %then9809, label %endif9811 +then9809: + %t25 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t25 +endif9811: + %t26 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 + %t27 = load i64, ptr %a10 + %t28 = load { ptr, i64, i64 }, ptr %t26 + %t29 = extractvalue { ptr, i64, i64 } %t28, 1 + %t30 = icmp uge i64 %t27, %t29 + br i1 %t30, label %range9812, label %inrange9813 +range9812: + call void @finch_panic_index(ptr @.str.6659, i64 423, i64 %t27, i64 %t29) + unreachable +inrange9813: + %t31 = extractvalue { ptr, i64, i64 } %t28, 0 + %t32 = getelementptr inbounds %S.lsp.Ref, ptr %t31, i64 %t27 + %t33 = load %S.lsp.Ref, ptr %t32 + store %S.lsp.Ref %t33, ptr %a34 + call void @finch.copy.S_lsp_Ref(ptr %a35, ptr %a34) + %t36 = load %S.lsp.Ref, ptr %a35 + store %S.lsp.Ref %t36, ptr %a37 + %t38 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t38, ptr %a39 + %t40 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 4 + %t41 = load { ptr, i64, i64 }, ptr %t40 + %t42 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t41) + %t43 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t42) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6660, i64 3, i64 0 }, %S.json.Json %t43) + %t44 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 + %t45 = load i64, ptr %t44 + %t46 = sub i64 %t45, 1 + %t47 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t48 = load i64, ptr %t47 + %t49 = sub i64 %t48, 1 + %t50 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 + %t51 = load i64, ptr %t50 + %t52 = sub i64 %t51, 1 + %t53 = call %S.json.Json @finch.lsp.range(i64 %t46, i64 %t49, i64 %t52) + call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.6661, i64 5, i64 0 }, %S.json.Json %t53) + %t54 = load %S.json.Json, ptr %a39 + store %S.json.Json %t54, ptr %a55 + call void @finch.copy.S_json_Json(ptr %a56, ptr %a55) + %t57 = load %S.json.Json, ptr %a56 + ret %S.json.Json %t57 +} + +define internal %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca %S.json.Json, align 16 + %a6 = alloca i64, align 16 + %a14 = alloca %S.lsp.FnRec, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a22 = alloca i64, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a42 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca i64, align 16 + %a65 = alloca %S.lsp.StructRec, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca i64, align 16 + %a98 = alloca %S.lsp.EnumRec, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca %S.json.Json, align 16 + %a124 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t3, ptr %a4 + %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a6 + br label %each.cond9814 +each.cond9814: + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t8 = load i64, ptr %t7 + %t9 = load i64, ptr %a6 + %t10 = icmp slt i64 %t9, %t8 + br i1 %t10, label %each.body9815, label %each.end9817 +each.body9815: + %t11 = load ptr, ptr %t5 + %t12 = getelementptr inbounds %S.lsp.FnRec, ptr %t11, i64 %t9 + %t13 = load %S.lsp.FnRec, ptr %t12 + store %S.lsp.FnRec %t13, ptr %a14 + %t15 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 3 + %t16 = load { ptr, i64, i64 }, ptr %t15 + %t17 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t16, ptr %a18 + store { ptr, i64, i64 } %t17, ptr %a19 + %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) + %t21 = icmp eq i32 %t20, 0 + br i1 %t21, label %then9818, label %endif9820 +then9818: + br label %each.step9816 +endif9820: + store i64 12, ptr %a22 + %t23 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 + %t24 = load { ptr, i64, i64 }, ptr %t23 + store { ptr, i64, i64 } %t24, ptr %a25 + call void @finch_str_copy(ptr %a26, ptr %a25) + %t27 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t27, ptr %a28 + %t29 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 2 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = icmp sgt i64 %t31, 0 + br i1 %t32, label %then9821, label %endif9823 +then9821: + store i64 6, ptr %a22 + %t33 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 2 + %t34 = load { ptr, i64, i64 }, ptr %t33 + store { ptr, i64, i64 } %t34, ptr %a36 + store { ptr, i64, i64 } { ptr @.str.6662, i64 1, i64 0 }, ptr %a37 + call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) + %t38 = load { ptr, i64, i64 }, ptr %a35 + %t39 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 1 + %t40 = load { ptr, i64, i64 }, ptr %t39 + store { ptr, i64, i64 } %t38, ptr %a42 + store { ptr, i64, i64 } %t40, ptr %a43 + call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) + %t44 = load { ptr, i64, i64 }, ptr %a41 + store { ptr, i64, i64 } %t44, ptr %a28 + br label %endif9823 +endif9823: + %t45 = load { ptr, i64, i64 }, ptr %a28 + %t46 = load i64, ptr %a22 + %t47 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 + %t48 = load i64, ptr %t47 + %t49 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 + %t50 = load i64, ptr %t49 + %t51 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 + %t52 = load i64, ptr %t51 + %t53 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t45, i64 %t46, i64 %t48, i64 %t50, i64 %t52) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t53) + br label %each.step9816 +each.step9816: + %t54 = load i64, ptr %a6 + %t55 = add i64 %t54, 1 + store i64 %t55, ptr %a6 + br label %each.cond9814 +each.end9817: + %t56 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a57 + br label %each.cond9824 +each.cond9824: + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t56, i32 0, i32 1 + %t59 = load i64, ptr %t58 + %t60 = load i64, ptr %a57 + %t61 = icmp slt i64 %t60, %t59 + br i1 %t61, label %each.body9825, label %each.end9827 +each.body9825: + %t62 = load ptr, ptr %t56 + %t63 = getelementptr inbounds %S.lsp.StructRec, ptr %t62, i64 %t60 + %t64 = load %S.lsp.StructRec, ptr %t63 + store %S.lsp.StructRec %t64, ptr %a65 + %t66 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 2 + %t67 = load { ptr, i64, i64 }, ptr %t66 + %t68 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t67, ptr %a69 + store { ptr, i64, i64 } %t68, ptr %a70 + %t71 = call i32 @finch_str_eq(ptr %a69, ptr %a70) + %t72 = icmp ne i32 %t71, 0 + br i1 %t72, label %then9828, label %endif9830 +then9828: + %t73 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 1 + %t74 = load { ptr, i64, i64 }, ptr %t73 + %t75 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 3 + %t76 = load i64, ptr %t75 + %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 4 + %t78 = load i64, ptr %t77 + %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 3 + %t80 = load i64, ptr %t79 + %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a65, i32 0, i32 5 + %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i32 0, i32 1 + %t83 = load i64, ptr %t82 + %t84 = add i64 %t80, %t83 + %t85 = add i64 %t84, 1 + %t86 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t74, i64 23, i64 %t76, i64 %t78, i64 %t85) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t86) + br label %endif9830 +endif9830: + br label %each.step9826 +each.step9826: + %t87 = load i64, ptr %a57 + %t88 = add i64 %t87, 1 + store i64 %t88, ptr %a57 + br label %each.cond9824 +each.end9827: + %t89 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a90 + br label %each.cond9831 +each.cond9831: + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 + %t92 = load i64, ptr %t91 + %t93 = load i64, ptr %a90 + %t94 = icmp slt i64 %t93, %t92 + br i1 %t94, label %each.body9832, label %each.end9834 +each.body9832: + %t95 = load ptr, ptr %t89 + %t96 = getelementptr inbounds %S.lsp.EnumRec, ptr %t95, i64 %t93 + %t97 = load %S.lsp.EnumRec, ptr %t96 + store %S.lsp.EnumRec %t97, ptr %a98 + %t99 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 2 + %t100 = load { ptr, i64, i64 }, ptr %t99 + %t101 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t100, ptr %a102 + store { ptr, i64, i64 } %t101, ptr %a103 + %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) + %t105 = icmp ne i32 %t104, 0 + br i1 %t105, label %then9835, label %endif9837 +then9835: + %t106 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 1 + %t107 = load { ptr, i64, i64 }, ptr %t106 + %t108 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 3 + %t109 = load i64, ptr %t108 + %t110 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 4 + %t111 = load i64, ptr %t110 + %t112 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 3 + %t113 = load i64, ptr %t112 + %t114 = getelementptr inbounds %S.lsp.EnumRec, ptr %a98, i32 0, i32 5 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = add i64 %t113, %t116 + %t118 = add i64 %t117, 1 + %t119 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t107, i64 10, i64 %t109, i64 %t111, i64 %t118) + call void @finch.json.Json.push(ptr %a4, %S.json.Json %t119) + br label %endif9837 +endif9837: + br label %each.step9833 +each.step9833: + %t120 = load i64, ptr %a90 + %t121 = add i64 %t120, 1 + store i64 %t121, ptr %a90 + br label %each.cond9831 +each.end9834: + %t122 = load %S.json.Json, ptr %a4 + store %S.json.Json %t122, ptr %a123 + call void @finch.copy.S_json_Json(ptr %a124, ptr %a123) + %t125 = load %S.json.Json, ptr %a124 + ret %S.json.Json %t125 +} + +define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a7 = alloca %S.json.Json, align 16 + %a13 = alloca %S.json.Json, align 16 + %a28 = alloca %S.json.Json, align 16 + %a29 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + store i64 %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t6, ptr %a7 + %t8 = load { ptr, i64, i64 }, ptr %a1 + %t9 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t8) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6663, i64 4, i64 0 }, %S.json.Json %t9) + %t10 = load i64, ptr %a2 + %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, %S.json.Json %t11) + %t12 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t12, ptr %a13 + %t14 = load i64, ptr %a3 + %t15 = sub i64 %t14, 1 + %t16 = call %S.json.Json @finch.lsp.position(i64 %t15, i64 0) + call void @finch.json.Json.set(ptr %a13, { ptr, i64, i64 } { ptr @.str.6665, i64 5, i64 0 }, %S.json.Json %t16) + %t17 = load i64, ptr %a5 + %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) + call void @finch.json.Json.set(ptr %a13, { ptr, i64, i64 } { ptr @.str.6666, i64 3, i64 0 }, %S.json.Json %t18) + %t19 = load %S.json.Json, ptr %a13 + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6667, i64 5, i64 0 }, %S.json.Json %t19) + %t20 = load i64, ptr %a3 + %t21 = sub i64 %t20, 1 + %t22 = load i64, ptr %a4 + %t23 = sub i64 %t22, 1 + %t24 = load i64, ptr %a4 + %t25 = sub i64 %t24, 1 + %t26 = call %S.json.Json @finch.lsp.range(i64 %t21, i64 %t23, i64 %t25) + call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.6668, i64 14, i64 0 }, %S.json.Json %t26) + %t27 = load %S.json.Json, ptr %a7 + store %S.json.Json %t27, ptr %a28 + call void @finch.copy.S_json_Json(ptr %a29, ptr %a28) + %t30 = load %S.json.Json, ptr %a29 + ret %S.json.Json %t30 +} + +define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca %S.json.Json, align 16 + %a20 = alloca %S.json.Json, align 16 + %a26 = alloca %S.json.Json, align 16 + %a27 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store i64 %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store { ptr, i64, i64 } %p3, ptr %a4 + %t5 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t5, ptr %a6 + %t7 = load { ptr, i64, i64 }, ptr %a1 + %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6669, i64 5, i64 0 }, %S.json.Json %t8) + %t9 = load i64, ptr %a2 + %t10 = call %S.json.Json @finch.lsp.num(i64 %t9) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6670, i64 4, i64 0 }, %S.json.Json %t10) + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 + %t12 = load i64, ptr %t11 + %t13 = icmp sgt i64 %t12, 0 + br i1 %t13, label %then9838, label %endif9840 +then9838: + %t14 = load { ptr, i64, i64 }, ptr %a3 + %t15 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t14) + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6671, i64 6, i64 0 }, %S.json.Json %t15) + br label %endif9840 +endif9840: + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = icmp sgt i64 %t17, 0 + br i1 %t18, label %then9841, label %endif9843 +then9841: + %t19 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t19, ptr %a20 + %t21 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6673, i64 8, i64 0 }) + call void @finch.json.Json.set(ptr %a20, { ptr, i64, i64 } { ptr @.str.6672, i64 4, i64 0 }, %S.json.Json %t21) + %t22 = load { ptr, i64, i64 }, ptr %a4 + %t23 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t22) + call void @finch.json.Json.set(ptr %a20, { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, %S.json.Json %t23) + %t24 = load %S.json.Json, ptr %a20 + call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.6675, i64 13, i64 0 }, %S.json.Json %t24) + br label %endif9843 +endif9843: + %t25 = load %S.json.Json, ptr %a6 + store %S.json.Json %t25, ptr %a26 + call void @finch.copy.S_json_Json(ptr %a27, ptr %a26) + %t28 = load %S.json.Json, ptr %a27 + ret %S.json.Json %t28 +} + +define internal i1 @finch.lsp.isWordChar(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 97 + br label %logic.from9844 +logic.from9844: + br i1 %t3, label %logic.rhs9845, label %logic.end9846 +logic.rhs9845: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 122 + br label %logic.rend9847 +logic.rend9847: + br label %logic.end9846 +logic.end9846: + %t6 = phi i1 [ false, %logic.from9844 ], [ %t5, %logic.rend9847 ] + br label %logic.from9848 +logic.from9848: + br i1 %t6, label %logic.end9850, label %logic.rhs9849 +logic.rhs9849: + %t7 = load i8, ptr %a1 + %t8 = icmp uge i8 %t7, 65 + br label %logic.from9851 +logic.from9851: + br i1 %t8, label %logic.rhs9852, label %logic.end9853 +logic.rhs9852: + %t9 = load i8, ptr %a1 + %t10 = icmp ule i8 %t9, 90 + br label %logic.rend9854 +logic.rend9854: + br label %logic.end9853 +logic.end9853: + %t11 = phi i1 [ false, %logic.from9851 ], [ %t10, %logic.rend9854 ] + br label %logic.rend9855 +logic.rend9855: + br label %logic.end9850 +logic.end9850: + %t12 = phi i1 [ true, %logic.from9848 ], [ %t11, %logic.rend9855 ] + br label %logic.from9856 +logic.from9856: + br i1 %t12, label %logic.end9858, label %logic.rhs9857 +logic.rhs9857: + %t13 = load i8, ptr %a1 + %t14 = icmp uge i8 %t13, 48 + br label %logic.from9859 +logic.from9859: + br i1 %t14, label %logic.rhs9860, label %logic.end9861 +logic.rhs9860: + %t15 = load i8, ptr %a1 + %t16 = icmp ule i8 %t15, 57 + br label %logic.rend9862 +logic.rend9862: + br label %logic.end9861 +logic.end9861: + %t17 = phi i1 [ false, %logic.from9859 ], [ %t16, %logic.rend9862 ] + br label %logic.rend9863 +logic.rend9863: + br label %logic.end9858 +logic.end9858: + %t18 = phi i1 [ true, %logic.from9856 ], [ %t17, %logic.rend9863 ] + br label %logic.from9864 +logic.from9864: + br i1 %t18, label %logic.end9866, label %logic.rhs9865 +logic.rhs9865: + %t19 = load i8, ptr %a1 + %t20 = icmp eq i8 %t19, 95 + br label %logic.rend9867 +logic.rend9867: + br label %logic.end9866 +logic.end9866: + %t21 = phi i1 [ true, %logic.from9864 ], [ %t20, %logic.rend9867 ] + ret i1 %t21 +} + +define internal void @finch.lsp.methodItems(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca i64, align 16 + %a11 = alloca %S.docs.Doc, align 16 + %a12 = alloca i64, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store i64 0, ptr %a3 + br label %each.cond9868 +each.cond9868: + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load i64, ptr %a3 + %t7 = icmp slt i64 %t6, %t5 + br i1 %t7, label %each.body9869, label %each.end9871 +each.body9869: + %t8 = load ptr, ptr %a2 + %t9 = getelementptr inbounds %S.docs.Doc, ptr %t8, i64 %t6 + %t10 = load %S.docs.Doc, ptr %t9 + store %S.docs.Doc %t10, ptr %a11 + store i64 2, ptr %a12 + %t13 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 1 + %t14 = load { ptr, i64, i64 }, ptr %t13 + store { ptr, i64, i64 } %t14, ptr %a15 + store { ptr, i64, i64 } { ptr @.str.6677, i64 1, i64 0 }, ptr %a17 + %t18 = call i32 @finch_str_starts(ptr %a15, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %then9872, label %endif9874 +then9872: + store i64 5, ptr %a12 + br label %endif9874 +endif9874: + %t20 = load ptr, ptr %a1 + %t21 = icmp eq ptr %t20, null + br i1 %t21, label %panic9875, label %ok9876 +panic9875: + call void @finch_panic(ptr @.str.6678, i64 497, ptr @.str.6679) + unreachable +ok9876: + %t22 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 0 + %t23 = load { ptr, i64, i64 }, ptr %t22 + %t24 = load i64, ptr %a12 + %t25 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 1 + %t26 = load { ptr, i64, i64 }, ptr %t25 + %t27 = getelementptr inbounds %S.docs.Doc, ptr %a11, i32 0, i32 2 + %t28 = load { ptr, i64, i64 }, ptr %t27 + %t29 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t23, i64 %t24, { ptr, i64, i64 } %t26, { ptr, i64, i64 } %t28) + call void @finch.json.Json.push(ptr %t20, %S.json.Json %t29) + br label %each.step9870 +each.step9870: + %t30 = load i64, ptr %a3 + %t31 = add i64 %t30, 1 + store i64 %t31, ptr %a3 + br label %each.cond9868 +each.end9871: + ret void +} + +define internal %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca %S.lsp.VarRec, align 16 + %a7 = alloca i64, align 16 + %a15 = alloca %S.lsp.VarRec, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca %S.lsp.VarRec, align 16 + %a44 = alloca %S.lsp.VarRec, align 16 + %a49 = alloca %S.lsp.VarRec, align 16 + %a50 = alloca %S.lsp.VarRec, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store %S.lsp.VarRec zeroinitializer, ptr %a5 + %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a7 + br label %each.cond9877 +each.cond9877: + %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load i64, ptr %a7 + %t11 = icmp slt i64 %t10, %t9 + br i1 %t11, label %each.body9878, label %each.end9880 +each.body9878: + %t12 = load ptr, ptr %t6 + %t13 = getelementptr inbounds %S.lsp.VarRec, ptr %t12, i64 %t10 + %t14 = load %S.lsp.VarRec, ptr %t13 + store %S.lsp.VarRec %t14, ptr %a15 + %t16 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 0 + %t17 = load { ptr, i64, i64 }, ptr %t16 + %t18 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } %t18, ptr %a20 + %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) + %t22 = icmp ne i32 %t21, 0 + br label %logic.from9881 +logic.from9881: + br i1 %t22, label %logic.rhs9882, label %logic.end9883 +logic.rhs9882: + %t23 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 3 + %t24 = load i64, ptr %t23 + %t25 = load i64, ptr %a4 + %t26 = icmp sle i64 %t24, %t25 + br label %logic.rend9884 +logic.rend9884: + br label %logic.end9883 +logic.end9883: + %t27 = phi i1 [ false, %logic.from9881 ], [ %t26, %logic.rend9884 ] + br label %logic.from9885 +logic.from9885: + br i1 %t27, label %logic.rhs9886, label %logic.end9887 +logic.rhs9886: + %t28 = load i64, ptr %a4 + %t29 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 7 + %t30 = load i64, ptr %t29 + %t31 = add i64 %t30, 1 + %t32 = icmp sle i64 %t28, %t31 + br label %logic.rend9888 +logic.rend9888: + br label %logic.end9887 +logic.end9887: + %t33 = phi i1 [ false, %logic.from9885 ], [ %t32, %logic.rend9888 ] + br label %logic.from9889 +logic.from9889: + br i1 %t33, label %logic.rhs9890, label %logic.end9891 +logic.rhs9890: + %t34 = getelementptr inbounds %S.lsp.VarRec, ptr %a15, i32 0, i32 5 + %t35 = load { ptr, i64, i64 }, ptr %t34 + %t36 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t35, ptr %a37 + store { ptr, i64, i64 } %t36, ptr %a38 + %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) + %t40 = icmp ne i32 %t39, 0 + br label %logic.rend9892 +logic.rend9892: + br label %logic.end9891 +logic.end9891: + %t41 = phi i1 [ false, %logic.from9889 ], [ %t40, %logic.rend9892 ] + br i1 %t41, label %then9893, label %endif9895 +then9893: + %t42 = load %S.lsp.VarRec, ptr %a15 + store %S.lsp.VarRec %t42, ptr %a43 + call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) + %t45 = load %S.lsp.VarRec, ptr %a44 + store %S.lsp.VarRec %t45, ptr %a5 + br label %endif9895 +endif9895: + br label %each.step9879 +each.step9879: + %t46 = load i64, ptr %a7 + %t47 = add i64 %t46, 1 + store i64 %t47, ptr %a7 + br label %each.cond9877 +each.end9880: + %t48 = load %S.lsp.VarRec, ptr %a5 + store %S.lsp.VarRec %t48, ptr %a49 + call void @finch.copy.S_lsp_VarRec(ptr %a50, ptr %a49) + %t51 = load %S.lsp.VarRec, ptr %a50 + ret %S.lsp.VarRec %t51 +} + +define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a7 = alloca %S.json.Json, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca i64, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca i64, align 16 + %a56 = alloca i1, align 16 + %a60 = alloca i64, align 16 + %a96 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a103 = alloca i1, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a106 = alloca { ptr, i64, i64 }, align 16 + %a107 = alloca { ptr, i64, i64 }, align 16 + %a109 = alloca i64, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a120 = alloca i64, align 16 + %a123 = alloca i64, align 16 + %a128 = alloca { ptr, i64, i64 }, align 16 + %a129 = alloca { ptr, i64, i64 }, align 16 + %a136 = alloca i64, align 16 + %a144 = alloca %S.lsp.FnRec, align 16 + %a148 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca i64, align 16 + %a173 = alloca %S.lsp.StructRec, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a178 = alloca { ptr, i64, i64 }, align 16 + %a185 = alloca { ptr, i64, i64 }, align 16 + %a186 = alloca { ptr, i64, i64 }, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a193 = alloca i64, align 16 + %a201 = alloca %S.lsp.EnumRec, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a213 = alloca { ptr, i64, i64 }, align 16 + %a214 = alloca { ptr, i64, i64 }, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a223 = alloca i64, align 16 + %a231 = alloca %S.lsp.EnumRec, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + %a252 = alloca i64, align 16 + %a260 = alloca { ptr, i64, i64 }, align 16 + %a264 = alloca { ptr, i64, i64 }, align 16 + %a265 = alloca { ptr, i64, i64 }, align 16 + %a266 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + %a271 = alloca { ptr, i64, i64 }, align 16 + %a286 = alloca { ptr, i64, i64 }, align 16 + %a287 = alloca { ptr, i64, i64 }, align 16 + %a289 = alloca { ptr, i64, i64 }, align 16 + %a292 = alloca { ptr, i64, i64 }, align 16 + %a293 = alloca { ptr, i64, i64 }, align 16 + %a294 = alloca { ptr, i64, i64 }, align 16 + %a299 = alloca { ptr, i64, i64 }, align 16 + %a300 = alloca { ptr, i64, i64 }, align 16 + %a306 = alloca { ptr, i64, i64 }, align 16 + %a307 = alloca { ptr, i64, i64 }, align 16 + %a312 = alloca { ptr, i64, i64 }, align 16 + %a313 = alloca { ptr, i64, i64 }, align 16 + %a314 = alloca { ptr, i64, i64 }, align 16 + %a318 = alloca { ptr, i64, i64 }, align 16 + %a319 = alloca { ptr, i64, i64 }, align 16 + %a320 = alloca { ptr, i64, i64 }, align 16 + %a325 = alloca { ptr, i64, i64 }, align 16 + %a326 = alloca { ptr, i64, i64 }, align 16 + %a332 = alloca { ptr, i64, i64 }, align 16 + %a333 = alloca { ptr, i64, i64 }, align 16 + %a334 = alloca { ptr, i64, i64 }, align 16 + %a339 = alloca { ptr, i64, i64 }, align 16 + %a340 = alloca { ptr, i64, i64 }, align 16 + %a345 = alloca { ptr, i64, i64 }, align 16 + %a346 = alloca { ptr, i64, i64 }, align 16 + %a347 = alloca { ptr, i64, i64 }, align 16 + %a352 = alloca { ptr, i64, i64 }, align 16 + %a353 = alloca { ptr, i64, i64 }, align 16 + %a355 = alloca { ptr, i64, i64 }, align 16 + %a357 = alloca i64, align 16 + %a365 = alloca %S.lsp.StructRec, align 16 + %a369 = alloca { ptr, i64, i64 }, align 16 + %a370 = alloca { ptr, i64, i64 }, align 16 + %a376 = alloca i64, align 16 + %a401 = alloca i64, align 16 + %a409 = alloca %S.lsp.FnRec, align 16 + %a413 = alloca { ptr, i64, i64 }, align 16 + %a414 = alloca { ptr, i64, i64 }, align 16 + %a426 = alloca %S.lsp.Names, align 16 + %a428 = alloca i64, align 16 + %a436 = alloca %S.lsp.VarRec, align 16 + %a450 = alloca { ptr, i64, i64 }, align 16 + %a451 = alloca { ptr, i64, i64 }, align 16 + %a467 = alloca i64, align 16 + %a475 = alloca %S.lsp.FnRec, align 16 + %a482 = alloca { ptr, i64, i64 }, align 16 + %a483 = alloca { ptr, i64, i64 }, align 16 + %a499 = alloca i64, align 16 + %a507 = alloca %S.lsp.StructRec, align 16 + %a510 = alloca { ptr, i64, i64 }, align 16 + %a511 = alloca { ptr, i64, i64 }, align 16 + %a522 = alloca { ptr, i64, i64 }, align 16 + %a523 = alloca { ptr, i64, i64 }, align 16 + %a524 = alloca { ptr, i64, i64 }, align 16 + %a530 = alloca i64, align 16 + %a538 = alloca %S.lsp.EnumRec, align 16 + %a541 = alloca { ptr, i64, i64 }, align 16 + %a542 = alloca { ptr, i64, i64 }, align 16 + %a553 = alloca { ptr, i64, i64 }, align 16 + %a554 = alloca { ptr, i64, i64 }, align 16 + %a555 = alloca { ptr, i64, i64 }, align 16 + %a561 = alloca i64, align 16 + %a569 = alloca { ptr, i64, i64 }, align 16 + %a577 = alloca { ptr, i64, i64 }, align 16 + %a578 = alloca i64, align 16 + %a586 = alloca %S.docs.Doc, align 16 + %a600 = alloca { ptr, i64, i64 }, align 16 + %a601 = alloca i64, align 16 + %a609 = alloca { ptr, i64, i64 }, align 16 + %a617 = alloca { ptr, i64, i64 }, align 16 + %a618 = alloca i64, align 16 + %a626 = alloca { ptr, i64, i64 }, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t6, ptr %a7 + %t8 = load { ptr, i64, i64 }, ptr %a2 + %t9 = load i64, ptr %a4 + %t10 = call { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %t8, i64 %t9) + store { ptr, i64, i64 } %t10, ptr %a11 + %t12 = load i64, ptr %a5 + %t13 = sub i64 %t12, 1 + store i64 %t13, ptr %a14 + %t15 = load i64, ptr %a14 + %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t17 = load i64, ptr %t16 + %t18 = icmp sgt i64 %t15, %t17 + br i1 %t18, label %then9896, label %endif9898 +then9896: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 + %t20 = load i64, ptr %t19 + store i64 %t20, ptr %a14 + br label %endif9898 +endif9898: + %t21 = load { ptr, i64, i64 }, ptr %a11 + store { ptr, i64, i64 } %t21, ptr %a22 + %t24 = load i64, ptr %a14 + call void @finch_str_sub(ptr %a23, ptr %a22, i64 0, i64 %t24, ptr @.str.6680, i64 519) + %t25 = load { ptr, i64, i64 }, ptr %a23 + store { ptr, i64, i64 } %t25, ptr %a26 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 + %t28 = load i64, ptr %t27 + store i64 %t28, ptr %a29 + br label %while.cond9899 +while.cond9899: + %t30 = load i64, ptr %a29 + %t31 = icmp sgt i64 %t30, 0 + br label %logic.from9902 +logic.from9902: + br i1 %t31, label %logic.rhs9903, label %logic.end9904 +logic.rhs9903: + %t32 = load i64, ptr %a29 + %t33 = sub i64 %t32, 1 + %t34 = load { ptr, i64, i64 }, ptr %a26 + %t35 = extractvalue { ptr, i64, i64 } %t34, 1 + %t36 = icmp uge i64 %t33, %t35 + br i1 %t36, label %range9905, label %inrange9906 +range9905: + call void @finch_panic_index(ptr @.str.6681, i64 522, i64 %t33, i64 %t35) + unreachable +inrange9906: + %t37 = extractvalue { ptr, i64, i64 } %t34, 0 + %t38 = getelementptr inbounds i8, ptr %t37, i64 %t33 + %t39 = load i8, ptr %t38 + %t40 = call i1 @finch.lsp.isWordChar(i8 %t39) + br label %logic.rend9907 +logic.rend9907: + br label %logic.end9904 +logic.end9904: + %t41 = phi i1 [ false, %logic.from9902 ], [ %t40, %logic.rend9907 ] + br i1 %t41, label %while.body9900, label %while.end9901 +while.body9900: + %t42 = load i64, ptr %a29 + %t43 = sub i64 %t42, 1 + store i64 %t43, ptr %a29 + br label %while.cond9899 +while.end9901: + %t44 = load i64, ptr %a29 + %t45 = icmp sgt i64 %t44, 0 + br label %logic.from9908 +logic.from9908: + br i1 %t45, label %logic.rhs9909, label %logic.end9910 +logic.rhs9909: + %t46 = load i64, ptr %a29 + %t47 = sub i64 %t46, 1 + %t48 = load { ptr, i64, i64 }, ptr %a26 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range9911, label %inrange9912 +range9911: + call void @finch_panic_index(ptr @.str.6682, i64 525, i64 %t47, i64 %t49) + unreachable +inrange9912: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t47 + %t53 = load i8, ptr %t52 + %t54 = icmp eq i8 %t53, 46 + br label %logic.rend9913 +logic.rend9913: + br label %logic.end9910 +logic.end9910: + %t55 = phi i1 [ false, %logic.from9908 ], [ %t54, %logic.rend9913 ] + store i1 %t55, ptr %a56 + %t57 = load i1, ptr %a56 + br i1 %t57, label %then9914, label %endif9916 +then9914: + %t58 = load i64, ptr %a29 + %t59 = sub i64 %t58, 1 + store i64 %t59, ptr %a60 + br label %while.cond9917 +while.cond9917: + %t61 = load i64, ptr %a60 + %t62 = icmp sgt i64 %t61, 0 + br label %logic.from9920 +logic.from9920: + br i1 %t62, label %logic.rhs9921, label %logic.end9922 +logic.rhs9921: + %t63 = load i64, ptr %a60 + %t64 = sub i64 %t63, 1 + %t65 = load { ptr, i64, i64 }, ptr %a26 + %t66 = extractvalue { ptr, i64, i64 } %t65, 1 + %t67 = icmp uge i64 %t64, %t66 + br i1 %t67, label %range9923, label %inrange9924 +range9923: + call void @finch_panic_index(ptr @.str.6683, i64 528, i64 %t64, i64 %t66) + unreachable +inrange9924: + %t68 = extractvalue { ptr, i64, i64 } %t65, 0 + %t69 = getelementptr inbounds i8, ptr %t68, i64 %t64 + %t70 = load i8, ptr %t69 + %t71 = call i1 @finch.lsp.isWordChar(i8 %t70) + br label %logic.from9925 +logic.from9925: + br i1 %t71, label %logic.end9927, label %logic.rhs9926 +logic.rhs9926: + %t72 = load i64, ptr %a60 + %t73 = sub i64 %t72, 1 + %t74 = load { ptr, i64, i64 }, ptr %a26 + %t75 = extractvalue { ptr, i64, i64 } %t74, 1 + %t76 = icmp uge i64 %t73, %t75 + br i1 %t76, label %range9928, label %inrange9929 +range9928: + call void @finch_panic_index(ptr @.str.6684, i64 528, i64 %t73, i64 %t75) + unreachable +inrange9929: + %t77 = extractvalue { ptr, i64, i64 } %t74, 0 + %t78 = getelementptr inbounds i8, ptr %t77, i64 %t73 + %t79 = load i8, ptr %t78 + %t80 = icmp eq i8 %t79, 91 + br label %logic.rend9930 +logic.rend9930: + br label %logic.end9927 +logic.end9927: + %t81 = phi i1 [ true, %logic.from9925 ], [ %t80, %logic.rend9930 ] + br label %logic.from9931 +logic.from9931: + br i1 %t81, label %logic.end9933, label %logic.rhs9932 +logic.rhs9932: + %t82 = load i64, ptr %a60 + %t83 = sub i64 %t82, 1 + %t84 = load { ptr, i64, i64 }, ptr %a26 + %t85 = extractvalue { ptr, i64, i64 } %t84, 1 + %t86 = icmp uge i64 %t83, %t85 + br i1 %t86, label %range9934, label %inrange9935 +range9934: + call void @finch_panic_index(ptr @.str.6685, i64 528, i64 %t83, i64 %t85) + unreachable +inrange9935: + %t87 = extractvalue { ptr, i64, i64 } %t84, 0 + %t88 = getelementptr inbounds i8, ptr %t87, i64 %t83 + %t89 = load i8, ptr %t88 + %t90 = icmp eq i8 %t89, 93 + br label %logic.rend9936 +logic.rend9936: + br label %logic.end9933 +logic.end9933: + %t91 = phi i1 [ true, %logic.from9931 ], [ %t90, %logic.rend9936 ] + br label %logic.rend9937 +logic.rend9937: + br label %logic.end9922 +logic.end9922: + %t92 = phi i1 [ false, %logic.from9920 ], [ %t91, %logic.rend9937 ] + br i1 %t92, label %while.body9918, label %while.end9919 +while.body9918: + %t93 = load i64, ptr %a60 + %t94 = sub i64 %t93, 1 + store i64 %t94, ptr %a60 + br label %while.cond9917 +while.end9919: + %t95 = load { ptr, i64, i64 }, ptr %a26 + store { ptr, i64, i64 } %t95, ptr %a96 + %t98 = load i64, ptr %a60 + %t99 = load i64, ptr %a29 + %t100 = sub i64 %t99, 1 + call void @finch_str_sub(ptr %a97, ptr %a96, i64 %t98, i64 %t100, ptr @.str.6686, i64 531) + %t101 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t101, ptr %a102 + store i1 false, ptr %a103 + %t104 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t104, ptr %a105 + store { ptr, i64, i64 } { ptr @.str.6688, i64 1, i64 0 }, ptr %a107 + %t108 = call i64 @finch_str_find(ptr %a105, ptr %a107) + store i64 %t108, ptr %a109 + %t110 = load i64, ptr %a109 + %t111 = icmp sge i64 %t110, 0 + br i1 %t111, label %then9938, label %endif9940 +then9938: + %t112 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t112, ptr %a113 + %t115 = load i64, ptr %a109 + call void @finch_str_sub(ptr %a114, ptr %a113, i64 0, i64 %t115, ptr @.str.6689, i64 535) + %t116 = load { ptr, i64, i64 }, ptr %a114 + store { ptr, i64, i64 } %t116, ptr %a102 + store i1 true, ptr %a103 + br label %endif9940 +endif9940: + %t117 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i32 0, i32 1 + %t119 = load { ptr, i64, i64 }, ptr %a102 + store i64 -1, ptr %a120 + %t121 = load i64, ptr %t118 + %t122 = load ptr, ptr %t117 + store i64 0, ptr %a123 + br label %find.cond9941 +find.cond9941: + %t124 = load i64, ptr %a123 + %t125 = icmp slt i64 %t124, %t121 + br i1 %t125, label %find.body9942, label %find.end9945 +find.body9942: + %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t124 + %t127 = load { ptr, i64, i64 }, ptr %t126 + store { ptr, i64, i64 } %t127, ptr %a128 + store { ptr, i64, i64 } %t119, ptr %a129 + %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) + %t131 = icmp ne i32 %t130, 0 + br i1 %t131, label %find.hit9943, label %find.next9944 +find.hit9943: + store i64 %t124, ptr %a120 + br label %find.end9945 +find.next9944: + %t132 = add i64 %t124, 1 + store i64 %t132, ptr %a123 + br label %find.cond9941 +find.end9945: + %t133 = load i64, ptr %a120 + %t134 = icmp sge i64 %t133, 0 + br i1 %t134, label %then9946, label %endif9948 +then9946: + %t135 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a136 + br label %each.cond9949 +each.cond9949: + %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 + %t138 = load i64, ptr %t137 + %t139 = load i64, ptr %a136 + %t140 = icmp slt i64 %t139, %t138 + br i1 %t140, label %each.body9950, label %each.end9952 +each.body9950: + %t141 = load ptr, ptr %t135 + %t142 = getelementptr inbounds %S.lsp.FnRec, ptr %t141, i64 %t139 + %t143 = load %S.lsp.FnRec, ptr %t142 + store %S.lsp.FnRec %t143, ptr %a144 + %t145 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 0 + %t146 = load { ptr, i64, i64 }, ptr %t145 + %t147 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t146, ptr %a148 + store { ptr, i64, i64 } %t147, ptr %a149 + %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) + %t151 = icmp ne i32 %t150, 0 + br label %logic.from9953 +logic.from9953: + br i1 %t151, label %logic.rhs9954, label %logic.end9955 +logic.rhs9954: + %t152 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 2 + %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 + %t154 = load i64, ptr %t153 + %t155 = icmp eq i64 %t154, 0 + br label %logic.rend9956 +logic.rend9956: + br label %logic.end9955 +logic.end9955: + %t156 = phi i1 [ false, %logic.from9953 ], [ %t155, %logic.rend9956 ] + br i1 %t156, label %then9957, label %endif9959 +then9957: + %t157 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 1 + %t158 = load { ptr, i64, i64 }, ptr %t157 + %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a144, i32 0, i32 7 + %t160 = load { ptr, i64, i64 }, ptr %t159 + %t161 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t158, i64 3, { ptr, i64, i64 } %t160, { ptr, i64, i64 } { ptr @.str.6690, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t161) + br label %endif9959 +endif9959: + br label %each.step9951 +each.step9951: + %t162 = load i64, ptr %a136 + %t163 = add i64 %t162, 1 + store i64 %t163, ptr %a136 + br label %each.cond9949 +each.end9952: + %t164 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a165 + br label %each.cond9960 +each.cond9960: + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 + %t167 = load i64, ptr %t166 + %t168 = load i64, ptr %a165 + %t169 = icmp slt i64 %t168, %t167 + br i1 %t169, label %each.body9961, label %each.end9963 +each.body9961: + %t170 = load ptr, ptr %t164 + %t171 = getelementptr inbounds %S.lsp.StructRec, ptr %t170, i64 %t168 + %t172 = load %S.lsp.StructRec, ptr %t171 + store %S.lsp.StructRec %t172, ptr %a173 + %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 0 + %t175 = load { ptr, i64, i64 }, ptr %t174 + %t176 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t175, ptr %a177 + store { ptr, i64, i64 } %t176, ptr %a178 + %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) + %t180 = icmp ne i32 %t179, 0 + br i1 %t180, label %then9964, label %endif9966 +then9964: + %t181 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 1 + %t182 = load { ptr, i64, i64 }, ptr %t181 + %t183 = getelementptr inbounds %S.lsp.StructRec, ptr %a173, i32 0, i32 1 + %t184 = load { ptr, i64, i64 }, ptr %t183 + store { ptr, i64, i64 } { ptr @.str.6691, i64 7, i64 0 }, ptr %a186 + store { ptr, i64, i64 } %t184, ptr %a187 + call void @finch_str_concat(ptr %a185, ptr %a186, ptr %a187) + %t188 = load { ptr, i64, i64 }, ptr %a185 + %t189 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t182, i64 22, { ptr, i64, i64 } %t188, { ptr, i64, i64 } { ptr @.str.6692, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t189) + br label %endif9966 +endif9966: + br label %each.step9962 +each.step9962: + %t190 = load i64, ptr %a165 + %t191 = add i64 %t190, 1 + store i64 %t191, ptr %a165 + br label %each.cond9960 +each.end9963: + %t192 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a193 + br label %each.cond9967 +each.cond9967: + %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i32 0, i32 1 + %t195 = load i64, ptr %t194 + %t196 = load i64, ptr %a193 + %t197 = icmp slt i64 %t196, %t195 + br i1 %t197, label %each.body9968, label %each.end9970 +each.body9968: + %t198 = load ptr, ptr %t192 + %t199 = getelementptr inbounds %S.lsp.EnumRec, ptr %t198, i64 %t196 + %t200 = load %S.lsp.EnumRec, ptr %t199 + store %S.lsp.EnumRec %t200, ptr %a201 + %t202 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 0 + %t203 = load { ptr, i64, i64 }, ptr %t202 + %t204 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t203, ptr %a205 + store { ptr, i64, i64 } %t204, ptr %a206 + %t207 = call i32 @finch_str_eq(ptr %a205, ptr %a206) + %t208 = icmp ne i32 %t207, 0 + br i1 %t208, label %then9971, label %endif9973 +then9971: + %t209 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 1 + %t210 = load { ptr, i64, i64 }, ptr %t209 + %t211 = getelementptr inbounds %S.lsp.EnumRec, ptr %a201, i32 0, i32 1 + %t212 = load { ptr, i64, i64 }, ptr %t211 + store { ptr, i64, i64 } { ptr @.str.6693, i64 5, i64 0 }, ptr %a214 + store { ptr, i64, i64 } %t212, ptr %a215 + call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) + %t216 = load { ptr, i64, i64 }, ptr %a213 + %t217 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t210, i64 13, { ptr, i64, i64 } %t216, { ptr, i64, i64 } { ptr @.str.6694, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t217) + br label %endif9973 +endif9973: + br label %each.step9969 +each.step9969: + %t218 = load i64, ptr %a193 + %t219 = add i64 %t218, 1 + store i64 %t219, ptr %a193 + br label %each.cond9967 +each.end9970: + %t220 = load %S.json.Json, ptr %a7 + %t221 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t220) + ret %S.json.Json %t221 +endif9948: + %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a223 + br label %each.cond9974 +each.cond9974: + %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t222, i32 0, i32 1 + %t225 = load i64, ptr %t224 + %t226 = load i64, ptr %a223 + %t227 = icmp slt i64 %t226, %t225 + br i1 %t227, label %each.body9975, label %each.end9977 +each.body9975: + %t228 = load ptr, ptr %t222 + %t229 = getelementptr inbounds %S.lsp.EnumRec, ptr %t228, i64 %t226 + %t230 = load %S.lsp.EnumRec, ptr %t229 + store %S.lsp.EnumRec %t230, ptr %a231 + %t232 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 1 + %t233 = load { ptr, i64, i64 }, ptr %t232 + %t234 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } %t234, ptr %a236 + %t237 = call i32 @finch_str_eq(ptr %a235, ptr %a236) + %t238 = icmp ne i32 %t237, 0 + br label %logic.from9978 +logic.from9978: + br i1 %t238, label %logic.rhs9979, label %logic.end9980 +logic.rhs9979: + %t239 = load %S.lsp.Analysis, ptr %a1 + %t240 = load { ptr, i64, i64 }, ptr %a3 + %t241 = load { ptr, i64, i64 }, ptr %a102 + %t242 = load i64, ptr %a4 + %t243 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t239, { ptr, i64, i64 } %t240, { ptr, i64, i64 } %t241, i64 %t242) + %t244 = extractvalue %S.lsp.VarRec %t243, 0 + store { ptr, i64, i64 } %t244, ptr %a245 + call void @finch_str_copy(ptr %a246, ptr %a245) + %t247 = load { ptr, i64, i64 }, ptr %a246 + %t248 = extractvalue { ptr, i64, i64 } %t247, 1 + %t249 = icmp eq i64 %t248, 0 + br label %logic.rend9981 +logic.rend9981: + br label %logic.end9980 +logic.end9980: + %t250 = phi i1 [ false, %logic.from9978 ], [ %t249, %logic.rend9981 ] + br i1 %t250, label %then9982, label %endif9984 +then9982: + %t251 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 5 + store i64 0, ptr %a252 + br label %each.cond9985 +each.cond9985: + %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t251, i32 0, i32 1 + %t254 = load i64, ptr %t253 + %t255 = load i64, ptr %a252 + %t256 = icmp slt i64 %t255, %t254 + br i1 %t256, label %each.body9986, label %each.end9988 +each.body9986: + %t257 = load ptr, ptr %t251 + %t258 = getelementptr inbounds { ptr, i64, i64 }, ptr %t257, i64 %t255 + %t259 = load { ptr, i64, i64 }, ptr %t258 + store { ptr, i64, i64 } %t259, ptr %a260 + %t261 = load { ptr, i64, i64 }, ptr %a260 + %t262 = getelementptr inbounds %S.lsp.EnumRec, ptr %a231, i32 0, i32 1 + %t263 = load { ptr, i64, i64 }, ptr %t262 + store { ptr, i64, i64 } %t263, ptr %a265 + store { ptr, i64, i64 } { ptr @.str.6695, i64 1, i64 0 }, ptr %a266 + call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) + %t267 = load { ptr, i64, i64 }, ptr %a264 + %t268 = load { ptr, i64, i64 }, ptr %a260 + store { ptr, i64, i64 } %t267, ptr %a270 + store { ptr, i64, i64 } %t268, ptr %a271 + call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) + %t272 = load { ptr, i64, i64 }, ptr %a269 + %t273 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t261, i64 20, { ptr, i64, i64 } %t272, { ptr, i64, i64 } { ptr @.str.6696, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t273) + br label %each.step9987 +each.step9987: + %t274 = load i64, ptr %a252 + %t275 = add i64 %t274, 1 + store i64 %t275, ptr %a252 + br label %each.cond9985 +each.end9988: + %t276 = load %S.json.Json, ptr %a7 + %t277 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t276) + ret %S.json.Json %t277 +endif9984: + br label %each.step9976 +each.step9976: + %t278 = load i64, ptr %a223 + %t279 = add i64 %t278, 1 + store i64 %t279, ptr %a223 + br label %each.cond9974 +each.end9977: + %t280 = load %S.lsp.Analysis, ptr %a1 + %t281 = load { ptr, i64, i64 }, ptr %a3 + %t282 = load { ptr, i64, i64 }, ptr %a102 + %t283 = load i64, ptr %a4 + %t284 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t280, { ptr, i64, i64 } %t281, { ptr, i64, i64 } %t282, i64 %t283) + %t285 = extractvalue %S.lsp.VarRec %t284, 1 + store { ptr, i64, i64 } %t285, ptr %a286 + call void @finch_str_copy(ptr %a287, ptr %a286) + %t288 = load { ptr, i64, i64 }, ptr %a287 + store { ptr, i64, i64 } %t288, ptr %a289 + %t290 = load i1, ptr %a103 + br label %logic.from9989 +logic.from9989: + br i1 %t290, label %logic.rhs9990, label %logic.end9991 +logic.rhs9990: + %t291 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t291, ptr %a292 + store { ptr, i64, i64 } { ptr @.str.6698, i64 2, i64 0 }, ptr %a294 + %t295 = call i32 @finch_str_starts(ptr %a292, ptr %a294) + %t296 = icmp ne i32 %t295, 0 + br label %logic.rend9992 +logic.rend9992: + br label %logic.end9991 +logic.end9991: + %t297 = phi i1 [ false, %logic.from9989 ], [ %t296, %logic.rend9992 ] + br i1 %t297, label %then9993, label %else9994 +then9993: + %t298 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t298, ptr %a299 + %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a289, i32 0, i32 1 + %t302 = load i64, ptr %t301 + call void @finch_str_sub(ptr %a300, ptr %a299, i64 2, i64 %t302, ptr @.str.6699, i64 569) + %t303 = load { ptr, i64, i64 }, ptr %a300 + store { ptr, i64, i64 } %t303, ptr %a289 + br label %endif9995 +else9994: + %t304 = load i1, ptr %a103 + br label %logic.from9996 +logic.from9996: + br i1 %t304, label %logic.rhs9997, label %logic.end9998 +logic.rhs9997: + %t305 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t305, ptr %a306 + store { ptr, i64, i64 } { ptr @.str.6700, i64 3, i64 0 }, ptr %a307 + %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) + %t309 = icmp ne i32 %t308, 0 + br label %logic.rend9999 +logic.rend9999: + br label %logic.end9998 +logic.end9998: + %t310 = phi i1 [ false, %logic.from9996 ], [ %t309, %logic.rend9999 ] + br i1 %t310, label %then10000, label %endif10002 +then10000: + store { ptr, i64, i64 } { ptr @.str.6701, i64 4, i64 0 }, ptr %a289 + br label %endif10002 +endif10002: + br label %endif9995 +endif9995: + %t311 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t311, ptr %a312 + store { ptr, i64, i64 } { ptr @.str.6703, i64 4, i64 0 }, ptr %a314 + %t315 = call i32 @finch_str_starts(ptr %a312, ptr %a314) + %t316 = icmp ne i32 %t315, 0 + br label %logic.from10003 +logic.from10003: + br i1 %t316, label %logic.rhs10004, label %logic.end10005 +logic.rhs10004: + %t317 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t317, ptr %a318 + store { ptr, i64, i64 } { ptr @.str.6705, i64 1, i64 0 }, ptr %a320 + %t321 = call i32 @finch_str_ends(ptr %a318, ptr %a320) + %t322 = icmp ne i32 %t321, 0 + br label %logic.rend10006 +logic.rend10006: + br label %logic.end10005 +logic.end10005: + %t323 = phi i1 [ false, %logic.from10003 ], [ %t322, %logic.rend10006 ] + br i1 %t323, label %then10007, label %endif10009 +then10007: + %t324 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t324, ptr %a325 + %t327 = getelementptr inbounds { ptr, i64, i64 }, ptr %a289, i32 0, i32 1 + %t328 = load i64, ptr %t327 + %t329 = sub i64 %t328, 1 + call void @finch_str_sub(ptr %a326, ptr %a325, i64 4, i64 %t329, ptr @.str.6706, i64 574) + %t330 = load { ptr, i64, i64 }, ptr %a326 + store { ptr, i64, i64 } %t330, ptr %a289 + br label %endif10009 +endif10009: + %t331 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t331, ptr %a332 + store { ptr, i64, i64 } { ptr @.str.6708, i64 2, i64 0 }, ptr %a334 + %t335 = call i32 @finch_str_starts(ptr %a332, ptr %a334) + %t336 = icmp ne i32 %t335, 0 + br i1 %t336, label %then10010, label %else10011 +then10010: + %t337 = call { ptr, i64, i64 } @finch.docs.arrayMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t337) + br label %endif10012 +else10011: + %t338 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t338, ptr %a339 + store { ptr, i64, i64 } { ptr @.str.6709, i64 3, i64 0 }, ptr %a340 + %t341 = call i32 @finch_str_eq(ptr %a339, ptr %a340) + %t342 = icmp ne i32 %t341, 0 + br i1 %t342, label %then10013, label %else10014 +then10013: + %t343 = call { ptr, i64, i64 } @finch.docs.strMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t343) + br label %endif10015 +else10014: + %t344 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t344, ptr %a345 + store { ptr, i64, i64 } { ptr @.str.6711, i64 4, i64 0 }, ptr %a347 + %t348 = call i32 @finch_str_starts(ptr %a345, ptr %a347) + %t349 = icmp ne i32 %t348, 0 + br i1 %t349, label %then10016, label %else10017 +then10016: + %t350 = call { ptr, i64, i64 } @finch.docs.mapMethods() + call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t350) + br label %endif10018 +else10017: + %t351 = load { ptr, i64, i64 }, ptr %a289 + store { ptr, i64, i64 } %t351, ptr %a352 + call void @finch_str_copy(ptr %a353, ptr %a352) + %t354 = load { ptr, i64, i64 }, ptr %a353 + store { ptr, i64, i64 } %t354, ptr %a355 + %t356 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a357 + br label %each.cond10019 +each.cond10019: + %t358 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 + %t359 = load i64, ptr %t358 + %t360 = load i64, ptr %a357 + %t361 = icmp slt i64 %t360, %t359 + br i1 %t361, label %each.body10020, label %each.end10022 +each.body10020: + %t362 = load ptr, ptr %t356 + %t363 = getelementptr inbounds %S.lsp.StructRec, ptr %t362, i64 %t360 + %t364 = load %S.lsp.StructRec, ptr %t363 + store %S.lsp.StructRec %t364, ptr %a365 + %t366 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 1 + %t367 = load { ptr, i64, i64 }, ptr %t366 + %t368 = load { ptr, i64, i64 }, ptr %a355 + store { ptr, i64, i64 } %t367, ptr %a369 + store { ptr, i64, i64 } %t368, ptr %a370 + %t371 = call i32 @finch_str_eq(ptr %a369, ptr %a370) + %t372 = icmp ne i32 %t371, 0 + br i1 %t372, label %then10023, label %endif10025 +then10023: + %t373 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 5 + %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %t373, i32 0, i32 1 + %t375 = load i64, ptr %t374 + store i64 0, ptr %a376 + br label %for.cond10026 +for.cond10026: + %t377 = load i64, ptr %a376 + %t378 = icmp slt i64 %t377, %t375 + br i1 %t378, label %for.body10027, label %for.end10029 +for.body10027: + %t379 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 5 + %t380 = load i64, ptr %a376 + %t381 = load { ptr, i64, i64 }, ptr %t379 + %t382 = extractvalue { ptr, i64, i64 } %t381, 1 + %t383 = icmp uge i64 %t380, %t382 + br i1 %t383, label %range10030, label %inrange10031 +range10030: + call void @finch_panic_index(ptr @.str.6712, i64 587, i64 %t380, i64 %t382) + unreachable +inrange10031: + %t384 = extractvalue { ptr, i64, i64 } %t381, 0 + %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 + %t386 = load { ptr, i64, i64 }, ptr %t385 + %t387 = getelementptr inbounds %S.lsp.StructRec, ptr %a365, i32 0, i32 6 + %t388 = load i64, ptr %a376 + %t389 = load { ptr, i64, i64 }, ptr %t387 + %t390 = extractvalue { ptr, i64, i64 } %t389, 1 + %t391 = icmp uge i64 %t388, %t390 + br i1 %t391, label %range10032, label %inrange10033 +range10032: + call void @finch_panic_index(ptr @.str.6713, i64 587, i64 %t388, i64 %t390) + unreachable +inrange10033: + %t392 = extractvalue { ptr, i64, i64 } %t389, 0 + %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i64 %t388 + %t394 = load { ptr, i64, i64 }, ptr %t393 + %t395 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t386, i64 5, { ptr, i64, i64 } %t394, { ptr, i64, i64 } { ptr @.str.6714, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t395) + br label %for.step10028 +for.step10028: + %t396 = load i64, ptr %a376 + %t397 = add i64 %t396, 1 + store i64 %t397, ptr %a376 + br label %for.cond10026 +for.end10029: + br label %endif10025 +endif10025: + br label %each.step10021 +each.step10021: + %t398 = load i64, ptr %a357 + %t399 = add i64 %t398, 1 + store i64 %t399, ptr %a357 + br label %each.cond10019 +each.end10022: + %t400 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a401 + br label %each.cond10034 +each.cond10034: + %t402 = getelementptr inbounds { ptr, i64, i64 }, ptr %t400, i32 0, i32 1 + %t403 = load i64, ptr %t402 + %t404 = load i64, ptr %a401 + %t405 = icmp slt i64 %t404, %t403 + br i1 %t405, label %each.body10035, label %each.end10037 +each.body10035: + %t406 = load ptr, ptr %t400 + %t407 = getelementptr inbounds %S.lsp.FnRec, ptr %t406, i64 %t404 + %t408 = load %S.lsp.FnRec, ptr %t407 + store %S.lsp.FnRec %t408, ptr %a409 + %t410 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 2 + %t411 = load { ptr, i64, i64 }, ptr %t410 + %t412 = load { ptr, i64, i64 }, ptr %a355 + store { ptr, i64, i64 } %t411, ptr %a413 + store { ptr, i64, i64 } %t412, ptr %a414 + %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) + %t416 = icmp ne i32 %t415, 0 + br i1 %t416, label %then10038, label %endif10040 +then10038: + %t417 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 1 + %t418 = load { ptr, i64, i64 }, ptr %t417 + %t419 = getelementptr inbounds %S.lsp.FnRec, ptr %a409, i32 0, i32 7 + %t420 = load { ptr, i64, i64 }, ptr %t419 + %t421 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t418, i64 2, { ptr, i64, i64 } %t420, { ptr, i64, i64 } { ptr @.str.6715, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t421) + br label %endif10040 +endif10040: + br label %each.step10036 +each.step10036: + %t422 = load i64, ptr %a401 + %t423 = add i64 %t422, 1 + store i64 %t423, ptr %a401 + br label %each.cond10034 +each.end10037: + br label %endif10018 +endif10018: + br label %endif10015 +endif10015: + br label %endif10012 +endif10012: + %t424 = load %S.json.Json, ptr %a7 + %t425 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t424) + ret %S.json.Json %t425 +endif9916: + store %S.lsp.Names zeroinitializer, ptr %a426 + %t427 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 + store i64 0, ptr %a428 + br label %each.cond10041 +each.cond10041: + %t429 = getelementptr inbounds { ptr, i64, i64 }, ptr %t427, i32 0, i32 1 + %t430 = load i64, ptr %t429 + %t431 = load i64, ptr %a428 + %t432 = icmp slt i64 %t431, %t430 + br i1 %t432, label %each.body10042, label %each.end10044 +each.body10042: + %t433 = load ptr, ptr %t427 + %t434 = getelementptr inbounds %S.lsp.VarRec, ptr %t433, i64 %t431 + %t435 = load %S.lsp.VarRec, ptr %t434 + store %S.lsp.VarRec %t435, ptr %a436 + %t437 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 3 + %t438 = load i64, ptr %t437 + %t439 = load i64, ptr %a4 + %t440 = icmp sle i64 %t438, %t439 + br label %logic.from10045 +logic.from10045: + br i1 %t440, label %logic.rhs10046, label %logic.end10047 +logic.rhs10046: + %t441 = load i64, ptr %a4 + %t442 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 7 + %t443 = load i64, ptr %t442 + %t444 = add i64 %t443, 1 + %t445 = icmp sle i64 %t441, %t444 + br label %logic.rend10048 +logic.rend10048: + br label %logic.end10047 +logic.end10047: + %t446 = phi i1 [ false, %logic.from10045 ], [ %t445, %logic.rend10048 ] + br label %logic.from10049 +logic.from10049: + br i1 %t446, label %logic.rhs10050, label %logic.end10051 +logic.rhs10050: + %t447 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 5 + %t448 = load { ptr, i64, i64 }, ptr %t447 + %t449 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t448, ptr %a450 + store { ptr, i64, i64 } %t449, ptr %a451 + %t452 = call i32 @finch_str_eq(ptr %a450, ptr %a451) + %t453 = icmp ne i32 %t452, 0 + br label %logic.rend10052 +logic.rend10052: + br label %logic.end10051 +logic.end10051: + %t454 = phi i1 [ false, %logic.from10049 ], [ %t453, %logic.rend10052 ] + br label %logic.from10053 +logic.from10053: + br i1 %t454, label %logic.rhs10054, label %logic.end10055 +logic.rhs10054: + %t455 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 0 + %t456 = load { ptr, i64, i64 }, ptr %t455 + %t457 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t456) + br label %logic.rend10056 +logic.rend10056: + br label %logic.end10055 +logic.end10055: + %t458 = phi i1 [ false, %logic.from10053 ], [ %t457, %logic.rend10056 ] + br i1 %t458, label %then10057, label %endif10059 +then10057: + %t459 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 0 + %t460 = load { ptr, i64, i64 }, ptr %t459 + %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a436, i32 0, i32 1 + %t462 = load { ptr, i64, i64 }, ptr %t461 + %t463 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t460, i64 6, { ptr, i64, i64 } %t462, { ptr, i64, i64 } { ptr @.str.6716, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t463) + br label %endif10059 +endif10059: + br label %each.step10043 +each.step10043: + %t464 = load i64, ptr %a428 + %t465 = add i64 %t464, 1 + store i64 %t465, ptr %a428 + br label %each.cond10041 +each.end10044: + %t466 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a467 + br label %each.cond10060 +each.cond10060: + %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t466, i32 0, i32 1 + %t469 = load i64, ptr %t468 + %t470 = load i64, ptr %a467 + %t471 = icmp slt i64 %t470, %t469 + br i1 %t471, label %each.body10061, label %each.end10063 +each.body10061: + %t472 = load ptr, ptr %t466 + %t473 = getelementptr inbounds %S.lsp.FnRec, ptr %t472, i64 %t470 + %t474 = load %S.lsp.FnRec, ptr %t473 + store %S.lsp.FnRec %t474, ptr %a475 + %t476 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 2 + %t477 = getelementptr inbounds { ptr, i64, i64 }, ptr %t476, i32 0, i32 1 + %t478 = load i64, ptr %t477 + %t479 = icmp eq i64 %t478, 0 + br label %logic.from10064 +logic.from10064: + br i1 %t479, label %logic.rhs10065, label %logic.end10066 +logic.rhs10065: + %t480 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 0 + %t481 = load { ptr, i64, i64 }, ptr %t480 + store { ptr, i64, i64 } %t481, ptr %a482 + store { ptr, i64, i64 } { ptr @.str.6717, i64 0, i64 0 }, ptr %a483 + %t484 = call i32 @finch_str_eq(ptr %a482, ptr %a483) + %t485 = icmp ne i32 %t484, 0 + br label %logic.rend10067 +logic.rend10067: + br label %logic.end10066 +logic.end10066: + %t486 = phi i1 [ false, %logic.from10064 ], [ %t485, %logic.rend10067 ] + br label %logic.from10068 +logic.from10068: + br i1 %t486, label %logic.rhs10069, label %logic.end10070 +logic.rhs10069: + %t487 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 1 + %t488 = load { ptr, i64, i64 }, ptr %t487 + %t489 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t488) + br label %logic.rend10071 +logic.rend10071: + br label %logic.end10070 +logic.end10070: + %t490 = phi i1 [ false, %logic.from10068 ], [ %t489, %logic.rend10071 ] + br i1 %t490, label %then10072, label %endif10074 +then10072: + %t491 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 1 + %t492 = load { ptr, i64, i64 }, ptr %t491 + %t493 = getelementptr inbounds %S.lsp.FnRec, ptr %a475, i32 0, i32 7 + %t494 = load { ptr, i64, i64 }, ptr %t493 + %t495 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t492, i64 3, { ptr, i64, i64 } %t494, { ptr, i64, i64 } { ptr @.str.6718, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t495) + br label %endif10074 +endif10074: + br label %each.step10062 +each.step10062: + %t496 = load i64, ptr %a467 + %t497 = add i64 %t496, 1 + store i64 %t497, ptr %a467 + br label %each.cond10060 +each.end10063: + %t498 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 + store i64 0, ptr %a499 + br label %each.cond10075 +each.cond10075: + %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t498, i32 0, i32 1 + %t501 = load i64, ptr %t500 + %t502 = load i64, ptr %a499 + %t503 = icmp slt i64 %t502, %t501 + br i1 %t503, label %each.body10076, label %each.end10078 +each.body10076: + %t504 = load ptr, ptr %t498 + %t505 = getelementptr inbounds %S.lsp.StructRec, ptr %t504, i64 %t502 + %t506 = load %S.lsp.StructRec, ptr %t505 + store %S.lsp.StructRec %t506, ptr %a507 + %t508 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 0 + %t509 = load { ptr, i64, i64 }, ptr %t508 + store { ptr, i64, i64 } %t509, ptr %a510 + store { ptr, i64, i64 } { ptr @.str.6719, i64 0, i64 0 }, ptr %a511 + %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) + %t513 = icmp ne i32 %t512, 0 + br label %logic.from10079 +logic.from10079: + br i1 %t513, label %logic.rhs10080, label %logic.end10081 +logic.rhs10080: + %t514 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t515 = load { ptr, i64, i64 }, ptr %t514 + %t516 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t515) + br label %logic.rend10082 +logic.rend10082: + br label %logic.end10081 +logic.end10081: + %t517 = phi i1 [ false, %logic.from10079 ], [ %t516, %logic.rend10082 ] + br i1 %t517, label %then10083, label %endif10085 +then10083: + %t518 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t519 = load { ptr, i64, i64 }, ptr %t518 + %t520 = getelementptr inbounds %S.lsp.StructRec, ptr %a507, i32 0, i32 1 + %t521 = load { ptr, i64, i64 }, ptr %t520 + store { ptr, i64, i64 } { ptr @.str.6720, i64 7, i64 0 }, ptr %a523 + store { ptr, i64, i64 } %t521, ptr %a524 + call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) + %t525 = load { ptr, i64, i64 }, ptr %a522 + %t526 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t519, i64 22, { ptr, i64, i64 } %t525, { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t526) + br label %endif10085 +endif10085: + br label %each.step10077 +each.step10077: + %t527 = load i64, ptr %a499 + %t528 = add i64 %t527, 1 + store i64 %t528, ptr %a499 + br label %each.cond10075 +each.end10078: + %t529 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a530 + br label %each.cond10086 +each.cond10086: + %t531 = getelementptr inbounds { ptr, i64, i64 }, ptr %t529, i32 0, i32 1 + %t532 = load i64, ptr %t531 + %t533 = load i64, ptr %a530 + %t534 = icmp slt i64 %t533, %t532 + br i1 %t534, label %each.body10087, label %each.end10089 +each.body10087: + %t535 = load ptr, ptr %t529 + %t536 = getelementptr inbounds %S.lsp.EnumRec, ptr %t535, i64 %t533 + %t537 = load %S.lsp.EnumRec, ptr %t536 + store %S.lsp.EnumRec %t537, ptr %a538 + %t539 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 0 + %t540 = load { ptr, i64, i64 }, ptr %t539 + store { ptr, i64, i64 } %t540, ptr %a541 + store { ptr, i64, i64 } { ptr @.str.6722, i64 0, i64 0 }, ptr %a542 + %t543 = call i32 @finch_str_eq(ptr %a541, ptr %a542) + %t544 = icmp ne i32 %t543, 0 + br label %logic.from10090 +logic.from10090: + br i1 %t544, label %logic.rhs10091, label %logic.end10092 +logic.rhs10091: + %t545 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t546 = load { ptr, i64, i64 }, ptr %t545 + %t547 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t546) + br label %logic.rend10093 +logic.rend10093: + br label %logic.end10092 +logic.end10092: + %t548 = phi i1 [ false, %logic.from10090 ], [ %t547, %logic.rend10093 ] + br i1 %t548, label %then10094, label %endif10096 +then10094: + %t549 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t550 = load { ptr, i64, i64 }, ptr %t549 + %t551 = getelementptr inbounds %S.lsp.EnumRec, ptr %a538, i32 0, i32 1 + %t552 = load { ptr, i64, i64 }, ptr %t551 + store { ptr, i64, i64 } { ptr @.str.6723, i64 5, i64 0 }, ptr %a554 + store { ptr, i64, i64 } %t552, ptr %a555 + call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) + %t556 = load { ptr, i64, i64 }, ptr %a553 + %t557 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t550, i64 13, { ptr, i64, i64 } %t556, { ptr, i64, i64 } { ptr @.str.6724, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t557) + br label %endif10096 +endif10096: + br label %each.step10088 +each.step10088: + %t558 = load i64, ptr %a530 + %t559 = add i64 %t558, 1 + store i64 %t559, ptr %a530 + br label %each.cond10086 +each.end10089: + %t560 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 + store i64 0, ptr %a561 + br label %each.cond10097 +each.cond10097: + %t562 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 + %t563 = load i64, ptr %t562 + %t564 = load i64, ptr %a561 + %t565 = icmp slt i64 %t564, %t563 + br i1 %t565, label %each.body10098, label %each.end10100 +each.body10098: + %t566 = load ptr, ptr %t560 + %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i64 %t564 + %t568 = load { ptr, i64, i64 }, ptr %t567 + store { ptr, i64, i64 } %t568, ptr %a569 + %t570 = load { ptr, i64, i64 }, ptr %a569 + %t571 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t570) + br i1 %t571, label %then10101, label %endif10103 +then10101: + %t572 = load { ptr, i64, i64 }, ptr %a569 + %t573 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t572, i64 9, { ptr, i64, i64 } { ptr @.str.6725, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6726, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t573) + br label %endif10103 +endif10103: + br label %each.step10099 +each.step10099: + %t574 = load i64, ptr %a561 + %t575 = add i64 %t574, 1 + store i64 %t575, ptr %a561 + br label %each.cond10097 +each.end10100: + %t576 = call { ptr, i64, i64 } @finch.docs.builtins() + store { ptr, i64, i64 } %t576, ptr %a577 + store i64 0, ptr %a578 + br label %each.cond10104 +each.cond10104: + %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a577, i32 0, i32 1 + %t580 = load i64, ptr %t579 + %t581 = load i64, ptr %a578 + %t582 = icmp slt i64 %t581, %t580 + br i1 %t582, label %each.body10105, label %each.end10107 +each.body10105: + %t583 = load ptr, ptr %a577 + %t584 = getelementptr inbounds %S.docs.Doc, ptr %t583, i64 %t581 + %t585 = load %S.docs.Doc, ptr %t584 + store %S.docs.Doc %t585, ptr %a586 + %t587 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 0 + %t588 = load { ptr, i64, i64 }, ptr %t587 + %t589 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t588) + br i1 %t589, label %then10108, label %endif10110 +then10108: + %t590 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 0 + %t591 = load { ptr, i64, i64 }, ptr %t590 + %t592 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 1 + %t593 = load { ptr, i64, i64 }, ptr %t592 + %t594 = getelementptr inbounds %S.docs.Doc, ptr %a586, i32 0, i32 2 + %t595 = load { ptr, i64, i64 }, ptr %t594 + %t596 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t591, i64 3, { ptr, i64, i64 } %t593, { ptr, i64, i64 } %t595) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t596) + br label %endif10110 +endif10110: + br label %each.step10106 +each.step10106: + %t597 = load i64, ptr %a578 + %t598 = add i64 %t597, 1 + store i64 %t598, ptr %a578 + br label %each.cond10104 +each.end10107: + %t599 = call { ptr, i64, i64 } @finch.docs.keywords() + store { ptr, i64, i64 } %t599, ptr %a600 + store i64 0, ptr %a601 + br label %each.cond10111 +each.cond10111: + %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %a600, i32 0, i32 1 + %t603 = load i64, ptr %t602 + %t604 = load i64, ptr %a601 + %t605 = icmp slt i64 %t604, %t603 + br i1 %t605, label %each.body10112, label %each.end10114 +each.body10112: + %t606 = load ptr, ptr %a600 + %t607 = getelementptr inbounds { ptr, i64, i64 }, ptr %t606, i64 %t604 + %t608 = load { ptr, i64, i64 }, ptr %t607 + store { ptr, i64, i64 } %t608, ptr %a609 + %t610 = load { ptr, i64, i64 }, ptr %a609 + %t611 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t610) + br i1 %t611, label %then10115, label %endif10117 +then10115: + %t612 = load { ptr, i64, i64 }, ptr %a609 + %t613 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t612, i64 14, { ptr, i64, i64 } { ptr @.str.6727, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6728, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t613) + br label %endif10117 +endif10117: + br label %each.step10113 +each.step10113: + %t614 = load i64, ptr %a601 + %t615 = add i64 %t614, 1 + store i64 %t615, ptr %a601 + br label %each.cond10111 +each.end10114: + %t616 = call { ptr, i64, i64 } @finch.docs.typeNames() + store { ptr, i64, i64 } %t616, ptr %a617 + store i64 0, ptr %a618 + br label %each.cond10118 +each.cond10118: + %t619 = getelementptr inbounds { ptr, i64, i64 }, ptr %a617, i32 0, i32 1 + %t620 = load i64, ptr %t619 + %t621 = load i64, ptr %a618 + %t622 = icmp slt i64 %t621, %t620 + br i1 %t622, label %each.body10119, label %each.end10121 +each.body10119: + %t623 = load ptr, ptr %a617 + %t624 = getelementptr inbounds { ptr, i64, i64 }, ptr %t623, i64 %t621 + %t625 = load { ptr, i64, i64 }, ptr %t624 + store { ptr, i64, i64 } %t625, ptr %a626 + %t627 = load { ptr, i64, i64 }, ptr %a626 + %t628 = call i1 @finch.lsp.Names.add(ptr %a426, { ptr, i64, i64 } %t627) + br i1 %t628, label %then10122, label %endif10124 +then10122: + %t629 = load { ptr, i64, i64 }, ptr %a626 + %t630 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t629, i64 25, { ptr, i64, i64 } { ptr @.str.6729, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6730, i64 0, i64 0 }) + call void @finch.json.Json.push(ptr %a7, %S.json.Json %t630) + br label %endif10124 +endif10124: + br label %each.step10120 +each.step10120: + %t631 = load i64, ptr %a618 + %t632 = add i64 %t631, 1 + store i64 %t632, ptr %a618 + br label %each.cond10118 +each.end10121: + %t633 = load %S.json.Json, ptr %a7 + %t634 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t633) + ret %S.json.Json %t634 +} + +define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.lsp.Names, ptr %self, i32 0, i32 0 + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i32 0, i32 1 + %t4 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a5 + %t6 = load i64, ptr %t3 + %t7 = load ptr, ptr %t2 + store i64 0, ptr %a8 + br label %find.cond10125 +find.cond10125: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t6 + br i1 %t10, label %find.body10126, label %find.end10129 +find.body10126: + %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i64 %t9 + %t12 = load { ptr, i64, i64 }, ptr %t11 + store { ptr, i64, i64 } %t12, ptr %a13 + store { ptr, i64, i64 } %t4, ptr %a14 + %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) + %t16 = icmp ne i32 %t15, 0 + br i1 %t16, label %find.hit10127, label %find.next10128 +find.hit10127: + store i64 %t9, ptr %a5 + br label %find.end10129 +find.next10128: + %t17 = add i64 %t9, 1 + store i64 %t17, ptr %a8 + br label %find.cond10125 +find.end10129: + %t18 = load i64, ptr %a5 + %t19 = icmp sge i64 %t18, 0 + br i1 %t19, label %then10130, label %endif10132 +then10130: + ret i1 false +endif10132: + %t20 = getelementptr inbounds %S.lsp.Names, ptr %self, i32 0, i32 0 + %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 + %t22 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t22, ptr %a23 + call void @finch_str_copy(ptr %a24, ptr %a23) + %t25 = load { ptr, i64, i64 }, ptr %a24 + %t26 = load i64, ptr %t21 + %t27 = add i64 %t26, 1 + call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t28 = load ptr, ptr %t20 + %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 + store { ptr, i64, i64 } %t25, ptr %t29 + store i64 %t27, ptr %t21 + ret i1 true +} + +define internal %S.json.Json @finch.lsp.completionList(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a7 = alloca %S.json.Json, align 16 + %a8 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.new_bool(i1 false) + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6731, i64 12, i64 0 }, %S.json.Json %t4) + %t5 = load %S.json.Json, ptr %a1 + call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.6732, i64 5, i64 0 }, %S.json.Json %t5) + %t6 = load %S.json.Json, ptr %a3 + store %S.json.Json %t6, ptr %a7 + call void @finch.copy.S_json_Json(ptr %a8, ptr %a7) + %t9 = load %S.json.Json, ptr %a8 + ret %S.json.Json %t9 +} + +define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { +entry: + %a1 = alloca %S.lsp.Analysis, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca i64, align 16 + %a5 = alloca i64, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca i64, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca i64, align 16 + %a26 = alloca i64, align 16 + %a27 = alloca i64, align 16 + %a31 = alloca i64, align 16 + %a41 = alloca i8, align 16 + %a74 = alloca i64, align 16 + %a76 = alloca i64, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a97 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + %a117 = alloca i64, align 16 + %a133 = alloca { ptr, i64, i64 }, align 16 + %a134 = alloca { ptr, i64, i64 }, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a146 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a152 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a157 = alloca { ptr, i64, i64 }, align 16 + %a158 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a165 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a175 = alloca i64, align 16 + %a183 = alloca %S.lsp.FnRec, align 16 + %a187 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca { ptr, i64, i64 }, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a195 = alloca { ptr, i64, i64 }, align 16 + %a200 = alloca %S.json.Json, align 16 + %a205 = alloca %S.json.Json, align 16 + %a207 = alloca i64, align 16 + %a215 = alloca { ptr, i64, i64 }, align 16 + %a220 = alloca %S.json.Json, align 16 + %a228 = alloca %S.json.Json, align 16 + %a231 = alloca %S.json.Json, align 16 + %a242 = alloca %S.docs.Doc, align 16 + %a248 = alloca %S.json.Json, align 16 + %a256 = alloca %S.json.Json, align 16 + %a259 = alloca %S.json.Json, align 16 + store %S.lsp.Analysis %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store i64 %p3, ptr %a4 + store i64 %p4, ptr %a5 + %t6 = load { ptr, i64, i64 }, ptr %a2 + %t7 = load i64, ptr %a4 + %t8 = call { ptr, i64, i64 } @finch.lsp.lineOf({ ptr, i64, i64 } %t6, i64 %t7) + store { ptr, i64, i64 } %t8, ptr %a9 + %t10 = load i64, ptr %a5 + %t11 = sub i64 %t10, 1 + store i64 %t11, ptr %a12 + %t13 = load i64, ptr %a12 + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t15 = load i64, ptr %t14 + %t16 = icmp sgt i64 %t13, %t15 + br i1 %t16, label %then10133, label %endif10135 +then10133: + %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 + %t18 = load i64, ptr %t17 + store i64 %t18, ptr %a12 + br label %endif10135 +endif10135: + %t19 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = load i64, ptr %a12 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 0, i64 %t22, ptr @.str.6733, i64 671) + %t23 = load { ptr, i64, i64 }, ptr %a21 + store { ptr, i64, i64 } %t23, ptr %a24 + store i64 0, ptr %a25 + store i64 0, ptr %a26 + store i64 -1, ptr %a27 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %a24, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = sub i64 %t29, 1 + store i64 %t30, ptr %a31 + br label %while.cond10136 +while.cond10136: + %t32 = load i64, ptr %a31 + %t33 = icmp sge i64 %t32, 0 + br i1 %t33, label %while.body10137, label %while.end10138 +while.body10137: + %t34 = load i64, ptr %a31 + %t35 = load { ptr, i64, i64 }, ptr %a24 + %t36 = extractvalue { ptr, i64, i64 } %t35, 1 + %t37 = icmp uge i64 %t34, %t36 + br i1 %t37, label %range10139, label %inrange10140 +range10139: + call void @finch_panic_index(ptr @.str.6734, i64 678, i64 %t34, i64 %t36) + unreachable +inrange10140: + %t38 = extractvalue { ptr, i64, i64 } %t35, 0 + %t39 = getelementptr inbounds i8, ptr %t38, i64 %t34 + %t40 = load i8, ptr %t39 + store i8 %t40, ptr %a41 + %t42 = load i8, ptr %a41 + %t43 = icmp eq i8 %t42, 41 + br label %logic.from10141 +logic.from10141: + br i1 %t43, label %logic.end10143, label %logic.rhs10142 +logic.rhs10142: + %t44 = load i8, ptr %a41 + %t45 = icmp eq i8 %t44, 93 + br label %logic.rend10144 +logic.rend10144: + br label %logic.end10143 +logic.end10143: + %t46 = phi i1 [ true, %logic.from10141 ], [ %t45, %logic.rend10144 ] + br i1 %t46, label %then10145, label %else10146 +then10145: + %t47 = load i64, ptr %a25 + %t48 = add i64 %t47, 1 + store i64 %t48, ptr %a25 + br label %endif10147 +else10146: + %t49 = load i8, ptr %a41 + %t50 = icmp eq i8 %t49, 40 + br label %logic.from10148 +logic.from10148: + br i1 %t50, label %logic.end10150, label %logic.rhs10149 +logic.rhs10149: + %t51 = load i8, ptr %a41 + %t52 = icmp eq i8 %t51, 91 + br label %logic.rend10151 +logic.rend10151: + br label %logic.end10150 +logic.end10150: + %t53 = phi i1 [ true, %logic.from10148 ], [ %t52, %logic.rend10151 ] + br i1 %t53, label %then10152, label %else10153 +then10152: + %t54 = load i64, ptr %a25 + %t55 = icmp eq i64 %t54, 0 + br i1 %t55, label %then10155, label %else10156 +then10155: + %t56 = load i8, ptr %a41 + %t57 = icmp eq i8 %t56, 40 + br i1 %t57, label %then10158, label %endif10160 +then10158: + %t58 = load i64, ptr %a31 + store i64 %t58, ptr %a27 + br label %while.end10138 +endif10160: + br label %endif10157 +else10156: + %t59 = load i64, ptr %a25 + %t60 = sub i64 %t59, 1 + store i64 %t60, ptr %a25 + br label %endif10157 +endif10157: + br label %endif10154 +else10153: + %t61 = load i8, ptr %a41 + %t62 = icmp eq i8 %t61, 44 + br label %logic.from10161 +logic.from10161: + br i1 %t62, label %logic.rhs10162, label %logic.end10163 +logic.rhs10162: + %t63 = load i64, ptr %a25 + %t64 = icmp eq i64 %t63, 0 + br label %logic.rend10164 +logic.rend10164: + br label %logic.end10163 +logic.end10163: + %t65 = phi i1 [ false, %logic.from10161 ], [ %t64, %logic.rend10164 ] + br i1 %t65, label %then10165, label %endif10167 +then10165: + %t66 = load i64, ptr %a26 + %t67 = add i64 %t66, 1 + store i64 %t67, ptr %a26 + br label %endif10167 +endif10167: + br label %endif10154 +endif10154: + br label %endif10147 +endif10147: + %t68 = load i64, ptr %a31 + %t69 = sub i64 %t68, 1 + store i64 %t69, ptr %a31 + br label %while.cond10136 +while.end10138: + %t70 = load i64, ptr %a27 + %t71 = icmp slt i64 %t70, 0 + br i1 %t71, label %then10168, label %endif10170 +then10168: + %t72 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t72 +endif10170: + %t73 = load i64, ptr %a27 + store i64 %t73, ptr %a74 + %t75 = load i64, ptr %a74 + store i64 %t75, ptr %a76 + br label %while.cond10171 +while.cond10171: + %t77 = load i64, ptr %a76 + %t78 = icmp sgt i64 %t77, 0 + br label %logic.from10174 +logic.from10174: + br i1 %t78, label %logic.rhs10175, label %logic.end10176 +logic.rhs10175: + %t79 = load i64, ptr %a76 + %t80 = sub i64 %t79, 1 + %t81 = load { ptr, i64, i64 }, ptr %a24 + %t82 = extractvalue { ptr, i64, i64 } %t81, 1 + %t83 = icmp uge i64 %t80, %t82 + br i1 %t83, label %range10177, label %inrange10178 +range10177: + call void @finch_panic_index(ptr @.str.6735, i64 700, i64 %t80, i64 %t82) + unreachable +inrange10178: + %t84 = extractvalue { ptr, i64, i64 } %t81, 0 + %t85 = getelementptr inbounds i8, ptr %t84, i64 %t80 + %t86 = load i8, ptr %t85 + %t87 = call i1 @finch.lsp.isWordChar(i8 %t86) + br label %logic.rend10179 +logic.rend10179: + br label %logic.end10176 +logic.end10176: + %t88 = phi i1 [ false, %logic.from10174 ], [ %t87, %logic.rend10179 ] + br i1 %t88, label %while.body10172, label %while.end10173 +while.body10172: + %t89 = load i64, ptr %a76 + %t90 = sub i64 %t89, 1 + store i64 %t90, ptr %a76 + br label %while.cond10171 +while.end10173: + %t91 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t91, ptr %a92 + %t94 = load i64, ptr %a76 + %t95 = load i64, ptr %a74 + call void @finch_str_sub(ptr %a93, ptr %a92, i64 %t94, i64 %t95, ptr @.str.6736, i64 703) + %t96 = load { ptr, i64, i64 }, ptr %a93 + store { ptr, i64, i64 } %t96, ptr %a97 + %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %a97, i32 0, i32 1 + %t99 = load i64, ptr %t98 + %t100 = icmp eq i64 %t99, 0 + br i1 %t100, label %then10180, label %endif10182 +then10180: + %t101 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t101 +endif10182: + store { ptr, i64, i64 } { ptr @.str.6737, i64 0, i64 0 }, ptr %a102 + %t103 = load i64, ptr %a76 + %t104 = icmp sgt i64 %t103, 0 + br label %logic.from10183 +logic.from10183: + br i1 %t104, label %logic.rhs10184, label %logic.end10185 +logic.rhs10184: + %t105 = load i64, ptr %a76 + %t106 = sub i64 %t105, 1 + %t107 = load { ptr, i64, i64 }, ptr %a24 + %t108 = extractvalue { ptr, i64, i64 } %t107, 1 + %t109 = icmp uge i64 %t106, %t108 + br i1 %t109, label %range10186, label %inrange10187 +range10186: + call void @finch_panic_index(ptr @.str.6738, i64 708, i64 %t106, i64 %t108) + unreachable +inrange10187: + %t110 = extractvalue { ptr, i64, i64 } %t107, 0 + %t111 = getelementptr inbounds i8, ptr %t110, i64 %t106 + %t112 = load i8, ptr %t111 + %t113 = icmp eq i8 %t112, 46 + br label %logic.rend10188 +logic.rend10188: + br label %logic.end10185 +logic.end10185: + %t114 = phi i1 [ false, %logic.from10183 ], [ %t113, %logic.rend10188 ] + br i1 %t114, label %then10189, label %endif10191 +then10189: + %t115 = load i64, ptr %a76 + %t116 = sub i64 %t115, 1 + store i64 %t116, ptr %a117 + br label %while.cond10192 +while.cond10192: + %t118 = load i64, ptr %a117 + %t119 = icmp sgt i64 %t118, 0 + br label %logic.from10195 +logic.from10195: + br i1 %t119, label %logic.rhs10196, label %logic.end10197 +logic.rhs10196: + %t120 = load i64, ptr %a117 + %t121 = sub i64 %t120, 1 + %t122 = load { ptr, i64, i64 }, ptr %a24 + %t123 = extractvalue { ptr, i64, i64 } %t122, 1 + %t124 = icmp uge i64 %t121, %t123 + br i1 %t124, label %range10198, label %inrange10199 +range10198: + call void @finch_panic_index(ptr @.str.6739, i64 711, i64 %t121, i64 %t123) + unreachable +inrange10199: + %t125 = extractvalue { ptr, i64, i64 } %t122, 0 + %t126 = getelementptr inbounds i8, ptr %t125, i64 %t121 + %t127 = load i8, ptr %t126 + %t128 = call i1 @finch.lsp.isWordChar(i8 %t127) + br label %logic.rend10200 +logic.rend10200: + br label %logic.end10197 +logic.end10197: + %t129 = phi i1 [ false, %logic.from10195 ], [ %t128, %logic.rend10200 ] + br i1 %t129, label %while.body10193, label %while.end10194 +while.body10193: + %t130 = load i64, ptr %a117 + %t131 = sub i64 %t130, 1 + store i64 %t131, ptr %a117 + br label %while.cond10192 +while.end10194: + %t132 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t132, ptr %a133 + %t135 = load i64, ptr %a117 + %t136 = load i64, ptr %a76 + %t137 = sub i64 %t136, 1 + call void @finch_str_sub(ptr %a134, ptr %a133, i64 %t135, i64 %t137, ptr @.str.6740, i64 714) + %t138 = load { ptr, i64, i64 }, ptr %a134 + store { ptr, i64, i64 } %t138, ptr %a139 + %t140 = load %S.lsp.Analysis, ptr %a1 + %t141 = load { ptr, i64, i64 }, ptr %a3 + %t142 = load { ptr, i64, i64 }, ptr %a139 + %t143 = load i64, ptr %a4 + %t144 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t140, { ptr, i64, i64 } %t141, { ptr, i64, i64 } %t142, i64 %t143) + %t145 = extractvalue %S.lsp.VarRec %t144, 1 + store { ptr, i64, i64 } %t145, ptr %a146 + call void @finch_str_copy(ptr %a147, ptr %a146) + %t148 = load { ptr, i64, i64 }, ptr %a147 + store { ptr, i64, i64 } %t148, ptr %a149 + %t150 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t150, ptr %a151 + store { ptr, i64, i64 } { ptr @.str.6742, i64 4, i64 0 }, ptr %a153 + %t154 = call i32 @finch_str_starts(ptr %a151, ptr %a153) + %t155 = icmp ne i32 %t154, 0 + br label %logic.from10201 +logic.from10201: + br i1 %t155, label %logic.rhs10202, label %logic.end10203 +logic.rhs10202: + %t156 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t156, ptr %a157 + store { ptr, i64, i64 } { ptr @.str.6744, i64 1, i64 0 }, ptr %a159 + %t160 = call i32 @finch_str_ends(ptr %a157, ptr %a159) + %t161 = icmp ne i32 %t160, 0 + br label %logic.rend10204 +logic.rend10204: + br label %logic.end10203 +logic.end10203: + %t162 = phi i1 [ false, %logic.from10201 ], [ %t161, %logic.rend10204 ] + br i1 %t162, label %then10205, label %endif10207 +then10205: + %t163 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t163, ptr %a164 + %t166 = getelementptr inbounds { ptr, i64, i64 }, ptr %a149, i32 0, i32 1 + %t167 = load i64, ptr %t166 + %t168 = sub i64 %t167, 1 + call void @finch_str_sub(ptr %a165, ptr %a164, i64 4, i64 %t168, ptr @.str.6745, i64 717) + %t169 = load { ptr, i64, i64 }, ptr %a165 + store { ptr, i64, i64 } %t169, ptr %a149 + br label %endif10207 +endif10207: + %t170 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t170, ptr %a171 + call void @finch_str_copy(ptr %a172, ptr %a171) + %t173 = load { ptr, i64, i64 }, ptr %a172 + store { ptr, i64, i64 } %t173, ptr %a102 + br label %endif10191 +endif10191: + %t174 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 + store i64 0, ptr %a175 + br label %each.cond10208 +each.cond10208: + %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 + %t177 = load i64, ptr %t176 + %t178 = load i64, ptr %a175 + %t179 = icmp slt i64 %t178, %t177 + br i1 %t179, label %each.body10209, label %each.end10211 +each.body10209: + %t180 = load ptr, ptr %t174 + %t181 = getelementptr inbounds %S.lsp.FnRec, ptr %t180, i64 %t178 + %t182 = load %S.lsp.FnRec, ptr %t181 + store %S.lsp.FnRec %t182, ptr %a183 + %t184 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 1 + %t185 = load { ptr, i64, i64 }, ptr %t184 + %t186 = load { ptr, i64, i64 }, ptr %a97 + store { ptr, i64, i64 } %t185, ptr %a187 + store { ptr, i64, i64 } %t186, ptr %a188 + %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) + %t190 = icmp ne i32 %t189, 0 + br label %logic.from10212 +logic.from10212: + br i1 %t190, label %logic.rhs10213, label %logic.end10214 +logic.rhs10213: + %t191 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 2 + %t192 = load { ptr, i64, i64 }, ptr %t191 + %t193 = load { ptr, i64, i64 }, ptr %a102 + store { ptr, i64, i64 } %t192, ptr %a194 + store { ptr, i64, i64 } %t193, ptr %a195 + %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) + %t197 = icmp ne i32 %t196, 0 + br label %logic.rend10215 +logic.rend10215: + br label %logic.end10214 +logic.end10214: + %t198 = phi i1 [ false, %logic.from10212 ], [ %t197, %logic.rend10215 ] + br i1 %t198, label %then10216, label %endif10218 +then10216: + %t199 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t199, ptr %a200 + %t201 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 7 + %t202 = load { ptr, i64, i64 }, ptr %t201 + %t203 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t202) + call void @finch.json.Json.set(ptr %a200, { ptr, i64, i64 } { ptr @.str.6746, i64 5, i64 0 }, %S.json.Json %t203) + %t204 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t204, ptr %a205 + %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a183, i32 0, i32 8 + store i64 0, ptr %a207 + br label %each.cond10219 +each.cond10219: + %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 + %t209 = load i64, ptr %t208 + %t210 = load i64, ptr %a207 + %t211 = icmp slt i64 %t210, %t209 + br i1 %t211, label %each.body10220, label %each.end10222 +each.body10220: + %t212 = load ptr, ptr %t206 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t210 + %t214 = load { ptr, i64, i64 }, ptr %t213 + store { ptr, i64, i64 } %t214, ptr %a215 + %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %a215, i32 0, i32 1 + %t217 = load i64, ptr %t216 + %t218 = icmp sgt i64 %t217, 0 + br i1 %t218, label %then10223, label %endif10225 +then10223: + %t219 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t219, ptr %a220 + %t221 = load { ptr, i64, i64 }, ptr %a215 + %t222 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t221) + call void @finch.json.Json.set(ptr %a220, { ptr, i64, i64 } { ptr @.str.6747, i64 5, i64 0 }, %S.json.Json %t222) + %t223 = load %S.json.Json, ptr %a220 + call void @finch.json.Json.push(ptr %a205, %S.json.Json %t223) + br label %endif10225 +endif10225: + br label %each.step10221 +each.step10221: + %t224 = load i64, ptr %a207 + %t225 = add i64 %t224, 1 + store i64 %t225, ptr %a207 + br label %each.cond10219 +each.end10222: + %t226 = load %S.json.Json, ptr %a205 + call void @finch.json.Json.set(ptr %a200, { ptr, i64, i64 } { ptr @.str.6748, i64 10, i64 0 }, %S.json.Json %t226) + %t227 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t227, ptr %a228 + %t229 = load %S.json.Json, ptr %a200 + call void @finch.json.Json.push(ptr %a228, %S.json.Json %t229) + %t230 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t230, ptr %a231 + %t232 = load %S.json.Json, ptr %a228 + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6749, i64 10, i64 0 }, %S.json.Json %t232) + %t233 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6750, i64 15, i64 0 }, %S.json.Json %t233) + %t234 = load i64, ptr %a26 + %t235 = call %S.json.Json @finch.lsp.num(i64 %t234) + call void @finch.json.Json.set(ptr %a231, { ptr, i64, i64 } { ptr @.str.6751, i64 15, i64 0 }, %S.json.Json %t235) + %t236 = load %S.json.Json, ptr %a231 + ret %S.json.Json %t236 +endif10218: + br label %each.step10210 +each.step10210: + %t237 = load i64, ptr %a175 + %t238 = add i64 %t237, 1 + store i64 %t238, ptr %a175 + br label %each.cond10208 +each.end10211: + %t239 = call { ptr, i64, i64 } @finch.docs.builtins() + %t240 = load { ptr, i64, i64 }, ptr %a97 + %t241 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t239, { ptr, i64, i64 } %t240) + store %S.docs.Doc %t241, ptr %a242 + %t243 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 0 + %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 + %t245 = load i64, ptr %t244 + %t246 = icmp sgt i64 %t245, 0 + br i1 %t246, label %then10226, label %endif10228 +then10226: + %t247 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t247, ptr %a248 + %t249 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 1 + %t250 = load { ptr, i64, i64 }, ptr %t249 + %t251 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t250) + call void @finch.json.Json.set(ptr %a248, { ptr, i64, i64 } { ptr @.str.6752, i64 5, i64 0 }, %S.json.Json %t251) + %t252 = getelementptr inbounds %S.docs.Doc, ptr %a242, i32 0, i32 2 + %t253 = load { ptr, i64, i64 }, ptr %t252 + %t254 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t253) + call void @finch.json.Json.set(ptr %a248, { ptr, i64, i64 } { ptr @.str.6753, i64 13, i64 0 }, %S.json.Json %t254) + %t255 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t255, ptr %a256 + %t257 = load %S.json.Json, ptr %a248 + call void @finch.json.Json.push(ptr %a256, %S.json.Json %t257) + %t258 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t258, ptr %a259 + %t260 = load %S.json.Json, ptr %a256 + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6754, i64 10, i64 0 }, %S.json.Json %t260) + %t261 = call %S.json.Json @finch.lsp.num(i64 0) + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6755, i64 15, i64 0 }, %S.json.Json %t261) + %t262 = load i64, ptr %a26 + %t263 = call %S.json.Json @finch.lsp.num(i64 %t262) + call void @finch.json.Json.set(ptr %a259, { ptr, i64, i64 } { ptr @.str.6756, i64 15, i64 0 }, %S.json.Json %t263) + %t264 = load %S.json.Json, ptr %a259 + ret %S.json.Json %t264 +endif10228: + %t265 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t265 +} + +define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6757, i64 12, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6758, i64 4, i64 0 }) + store %S.json.Json %t4, ptr %a5 + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6759, i64 0, i64 0 }) + ret { ptr, i64, i64 } %t6 +} + +define internal { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6760, i64 12, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call %S.json.Json @finch.json.Json.get(ptr %a3, { ptr, i64, i64 } { ptr @.str.6761, i64 3, i64 0 }) + store %S.json.Json %t4, ptr %a5 + %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.6762, i64 0, i64 0 }) + %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) + ret { ptr, i64, i64 } %t7 +} + +define internal void @finch.lsp.Server.answer(ptr %self, %S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a3 = alloca %S.json.Json, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.json.Json, align 16 + %a9 = alloca %S.json.Json, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.json.Json, align 16 + %a22 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + %a29 = alloca %S.json.Json, align 16 + %a31 = alloca %S.json.Json, align 16 + %a37 = alloca %S.json.Json, align 16 + %a40 = alloca %S.json.Json, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a46 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a59 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca i32, align 16 + %a81 = alloca { ptr, i64, i64 }, align 16 + %a82 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca %S.json.Json, align 16 + %a95 = alloca %S.json.Json, align 16 + %a97 = alloca %S.json.Json, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca i32, align 16 + %a113 = alloca { ptr, i64, i64 }, align 16 + %a114 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a122 = alloca { ptr, i64, i64 }, align 16 + %a126 = alloca { ptr, i64, i64 }, align 16 + %a127 = alloca { ptr, i64, i64 }, align 16 + %a132 = alloca { ptr, i64, i64 }, align 16 + %a135 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a145 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca %S.json.Json, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a156 = alloca { ptr, i64, i64 }, align 16 + %a159 = alloca { ptr, i64, i64 }, align 16 + %a160 = alloca { ptr, i64, i64 }, align 16 + %a163 = alloca { ptr, i64, i64 }, align 16 + %a164 = alloca { ptr, i64, i64 }, align 16 + %a167 = alloca { ptr, i64, i64 }, align 16 + %a168 = alloca { ptr, i64, i64 }, align 16 + %a171 = alloca { ptr, i64, i64 }, align 16 + %a172 = alloca { ptr, i64, i64 }, align 16 + %a177 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca %S.json.Json, align 16 + %a181 = alloca %S.json.Json, align 16 + %a184 = alloca i64, align 16 + %a186 = alloca %S.json.Json, align 16 + %a188 = alloca %S.json.Json, align 16 + %a191 = alloca i64, align 16 + %a194 = alloca { ptr, i64, i64 }, align 16 + %a202 = alloca { ptr, i64, i64 }, align 16 + %a205 = alloca { ptr, i64, i64 }, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a212 = alloca %S.lsp.Analysis, align 16 + %a213 = alloca %S.lsp.Analysis, align 16 + %a215 = alloca %S.lsp.Analysis, align 16 + %a216 = alloca { ptr, i64, i64 }, align 16 + %a219 = alloca { ptr, i64, i64 }, align 16 + %a224 = alloca { ptr, i64, i64 }, align 16 + %a227 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a238 = alloca { ptr, i64, i64 }, align 16 + %a239 = alloca { ptr, i64, i64 }, align 16 + %a248 = alloca { ptr, i64, i64 }, align 16 + %a249 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + %a269 = alloca { ptr, i64, i64 }, align 16 + %a270 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6763, i64 6, i64 0 }) + store %S.json.Json %t2, ptr %a3 + %t4 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a3, { ptr, i64, i64 } { ptr @.str.6764, i64 0, i64 0 }) + store { ptr, i64, i64 } %t4, ptr %a5 + %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6765, i64 6, i64 0 }) + store %S.json.Json %t6, ptr %a7 + %t8 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.6766, i64 2, i64 0 }) + store %S.json.Json %t8, ptr %a9 + %t10 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t10, ptr %a11 + store { ptr, i64, i64 } { ptr @.str.6767, i64 10, i64 0 }, ptr %a12 + %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) + %t14 = icmp ne i32 %t13, 0 + br i1 %t14, label %match.arm10230, label %match.next10231 +match.arm10230: + %t15 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t15, ptr %a16 + %t17 = call %S.json.Json @finch.lsp.num(i64 1) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6768, i64 16, i64 0 }, %S.json.Json %t17) + %t18 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6769, i64 13, i64 0 }, %S.json.Json %t18) + %t19 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6770, i64 18, i64 0 }, %S.json.Json %t19) + %t20 = call %S.json.Json @finch.json.new_bool(i1 true) + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6771, i64 22, i64 0 }, %S.json.Json %t20) + %t21 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t21, ptr %a22 + %t23 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t23, ptr %a24 + %t25 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6772, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a24, %S.json.Json %t25) + %t26 = load %S.json.Json, ptr %a24 + call void @finch.json.Json.set(ptr %a22, { ptr, i64, i64 } { ptr @.str.6773, i64 17, i64 0 }, %S.json.Json %t26) + %t27 = load %S.json.Json, ptr %a22 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, %S.json.Json %t27) + %t28 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t28, ptr %a29 + %t30 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t30, ptr %a31 + %t32 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6775, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a31, %S.json.Json %t32) + %t33 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6776, i64 1, i64 0 }) + call void @finch.json.Json.push(ptr %a31, %S.json.Json %t33) + %t34 = load %S.json.Json, ptr %a31 + call void @finch.json.Json.set(ptr %a29, { ptr, i64, i64 } { ptr @.str.6777, i64 17, i64 0 }, %S.json.Json %t34) + %t35 = load %S.json.Json, ptr %a29 + call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.6778, i64 21, i64 0 }, %S.json.Json %t35) + %t36 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t36, ptr %a37 + %t38 = load %S.json.Json, ptr %a16 + call void @finch.json.Json.set(ptr %a37, { ptr, i64, i64 } { ptr @.str.6779, i64 12, i64 0 }, %S.json.Json %t38) + %t39 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t39, ptr %a40 + %t41 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6781, i64 5, i64 0 }) + call void @finch.json.Json.set(ptr %a40, { ptr, i64, i64 } { ptr @.str.6780, i64 4, i64 0 }, %S.json.Json %t41) + %t42 = load %S.json.Json, ptr %a40 + call void @finch.json.Json.set(ptr %a37, { ptr, i64, i64 } { ptr @.str.6782, i64 10, i64 0 }, %S.json.Json %t42) + %t43 = load %S.json.Json, ptr %a9 + %t44 = load %S.json.Json, ptr %a37 + call void @finch.lsp.reply(%S.json.Json %t43, %S.json.Json %t44) + br label %match.end10229 +match.next10231: + store { ptr, i64, i64 } %t10, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6783, i64 8, i64 0 }, ptr %a46 + %t47 = call i32 @finch_str_eq(ptr %a45, ptr %a46) + %t48 = icmp ne i32 %t47, 0 + br i1 %t48, label %match.arm10232, label %match.next10233 +match.arm10232: + %t49 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 + store i1 true, ptr %t49 + %t50 = load %S.json.Json, ptr %a9 + %t51 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t50, %S.json.Json %t51) + br label %match.end10229 +match.next10233: + store { ptr, i64, i64 } %t10, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6784, i64 4, i64 0 }, ptr %a53 + %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) + %t55 = icmp ne i32 %t54, 0 + br i1 %t55, label %match.arm10234, label %match.next10235 +match.arm10234: + %t56 = trunc i64 0 to i32 + %t57 = call i32 @fflush(ptr null) + call void @exit(i32 %t56) + br label %match.end10229 +match.next10235: + store { ptr, i64, i64 } %t10, ptr %a58 + store { ptr, i64, i64 } { ptr @.str.6785, i64 20, i64 0 }, ptr %a59 + %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) + %t61 = icmp ne i32 %t60, 0 + br i1 %t61, label %match.arm10236, label %match.next10237 +match.arm10236: + %t62 = load %S.json.Json, ptr %a7 + %t63 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t62) + store { ptr, i64, i64 } %t63, ptr %a64 + %t65 = load %S.json.Json, ptr %a7 + %t66 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t65) + %t67 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t68 = load { ptr, i64, i64 }, ptr %a64 + store { ptr, i64, i64 } %t68, ptr %a69 + store i32 0, ptr %a70 + %t71 = call i64 @finch_map_slot(ptr %t67, ptr %a69, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a70) + %t72 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t67, i32 0, i32 0 + %t73 = load ptr, ptr %t72 + %t74 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t73, i64 %t71 + %t75 = load i32, ptr %a70 + %t76 = icmp ne i32 %t75, 0 + br i1 %t76, label %map.new10238, label %map.have10239 +map.new10238: + %t77 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 1 + call void @finch_str_copy(ptr %t77, ptr %a69) + %t78 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t78 + br label %map.have10239 +map.have10239: + %t79 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t74, i32 0, i32 2 + store { ptr, i64, i64 } %t66, ptr %t79 + %t80 = load { ptr, i64, i64 }, ptr %a64 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t80) + br label %match.end10229 +match.next10237: + store { ptr, i64, i64 } %t10, ptr %a81 + store { ptr, i64, i64 } { ptr @.str.6786, i64 22, i64 0 }, ptr %a82 + %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) + %t84 = icmp ne i32 %t83, 0 + br i1 %t84, label %match.arm10240, label %match.next10241 +match.arm10240: + %t85 = load %S.json.Json, ptr %a7 + %t86 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t85) + store { ptr, i64, i64 } %t86, ptr %a87 + %t88 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6787, i64 14, i64 0 }) + store %S.json.Json %t88, ptr %a89 + %t90 = call i64 @finch.json.Json.len(ptr %a89) + %t91 = icmp sgt i64 %t90, 0 + br i1 %t91, label %then10242, label %endif10244 +then10242: + %t92 = call i64 @finch.json.Json.len(ptr %a89) + %t93 = sub i64 %t92, 1 + %t94 = call %S.json.Json @finch.json.Json.at(ptr %a89, i64 %t93) + store %S.json.Json %t94, ptr %a95 + %t96 = call %S.json.Json @finch.json.Json.get(ptr %a95, { ptr, i64, i64 } { ptr @.str.6788, i64 4, i64 0 }) + store %S.json.Json %t96, ptr %a97 + %t98 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a97, { ptr, i64, i64 } { ptr @.str.6789, i64 0, i64 0 }) + %t99 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t100 = load { ptr, i64, i64 }, ptr %a87 + store { ptr, i64, i64 } %t100, ptr %a101 + store i32 0, ptr %a102 + %t103 = call i64 @finch_map_slot(ptr %t99, ptr %a101, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a102) + %t104 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t99, i32 0, i32 0 + %t105 = load ptr, ptr %t104 + %t106 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t105, i64 %t103 + %t107 = load i32, ptr %a102 + %t108 = icmp ne i32 %t107, 0 + br i1 %t108, label %map.new10245, label %map.have10246 +map.new10245: + %t109 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 1 + call void @finch_str_copy(ptr %t109, ptr %a101) + %t110 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 2 + store { ptr, i64, i64 } zeroinitializer, ptr %t110 + br label %map.have10246 +map.have10246: + %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t106, i32 0, i32 2 + store { ptr, i64, i64 } %t98, ptr %t111 + %t112 = load { ptr, i64, i64 }, ptr %a87 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t112) + br label %endif10244 +endif10244: + br label %match.end10229 +match.next10241: + store { ptr, i64, i64 } %t10, ptr %a113 + store { ptr, i64, i64 } { ptr @.str.6790, i64 20, i64 0 }, ptr %a114 + %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) + %t116 = icmp ne i32 %t115, 0 + br i1 %t116, label %match.arm10247, label %match.next10248 +match.arm10247: + %t117 = load %S.json.Json, ptr %a7 + %t118 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t117) + store { ptr, i64, i64 } %t118, ptr %a119 + %t120 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t121 = load { ptr, i64, i64 }, ptr %a119 + store { ptr, i64, i64 } %t121, ptr %a122 + %t123 = call i64 @finch_map_find(ptr %t120, ptr %a122, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t124 = icmp sge i64 %t123, 0 + br i1 %t124, label %then10249, label %endif10251 +then10249: + %t125 = load { ptr, i64, i64 }, ptr %a119 + call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) + br label %endif10251 +endif10251: + br label %match.end10229 +match.next10248: + store { ptr, i64, i64 } %t10, ptr %a126 + store { ptr, i64, i64 } { ptr @.str.6791, i64 21, i64 0 }, ptr %a127 + %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) + %t129 = icmp ne i32 %t128, 0 + br i1 %t129, label %match.arm10252, label %match.next10253 +match.arm10252: + %t130 = load %S.json.Json, ptr %a7 + %t131 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t130) + store { ptr, i64, i64 } %t131, ptr %a132 + %t133 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t134 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t134, ptr %a135 + %t136 = call i64 @finch_map_find(ptr %t133, ptr %a135, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t137 = icmp sge i64 %t136, 0 + br i1 %t137, label %remove.hit10254, label %remove.end10255 +remove.hit10254: + call void @finch_map_remove_at(ptr %t133, i64 %t136, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) + br label %remove.end10255 +remove.end10255: + %t138 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t139 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t139, ptr %a140 + %t141 = call i64 @finch_map_find(ptr %t138, ptr %a140, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t142 = icmp sge i64 %t141, 0 + br i1 %t142, label %remove.hit10256, label %remove.end10257 +remove.hit10256: + call void @finch_map_remove_at(ptr %t138, i64 %t141, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10257 +remove.end10257: + %t143 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 + %t144 = load { ptr, i64, i64 }, ptr %a132 + store { ptr, i64, i64 } %t144, ptr %a145 + %t146 = call i64 @finch_map_find(ptr %t143, ptr %a145, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t147 = icmp sge i64 %t146, 0 + br i1 %t147, label %remove.hit10258, label %remove.end10259 +remove.hit10258: + call void @finch_map_remove_at(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) + br label %remove.end10259 +remove.end10259: + %t148 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t148, ptr %a149 + %t150 = load { ptr, i64, i64 }, ptr %a132 + %t151 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t150) + %t152 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t151) + call void @finch.json.Json.set(ptr %a149, { ptr, i64, i64 } { ptr @.str.6792, i64 3, i64 0 }, %S.json.Json %t152) + %t153 = call %S.json.Json @finch.json.new_list() + call void @finch.json.Json.set(ptr %a149, { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, %S.json.Json %t153) + %t154 = load %S.json.Json, ptr %a149 + call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.6794, i64 31, i64 0 }, %S.json.Json %t154) + br label %match.end10229 +match.next10253: + store { ptr, i64, i64 } %t10, ptr %a155 + store { ptr, i64, i64 } { ptr @.str.6795, i64 18, i64 0 }, ptr %a156 + %t157 = call i32 @finch_str_eq(ptr %a155, ptr %a156) + %t158 = icmp ne i32 %t157, 0 + br i1 %t158, label %match.arm10260, label %match.or10262 +match.or10262: + store { ptr, i64, i64 } %t10, ptr %a159 + store { ptr, i64, i64 } { ptr @.str.6796, i64 23, i64 0 }, ptr %a160 + %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) + %t162 = icmp ne i32 %t161, 0 + br i1 %t162, label %match.arm10260, label %match.or10263 +match.or10263: + store { ptr, i64, i64 } %t10, ptr %a163 + store { ptr, i64, i64 } { ptr @.str.6797, i64 23, i64 0 }, ptr %a164 + %t165 = call i32 @finch_str_eq(ptr %a163, ptr %a164) + %t166 = icmp ne i32 %t165, 0 + br i1 %t166, label %match.arm10260, label %match.or10264 +match.or10264: + store { ptr, i64, i64 } %t10, ptr %a167 + store { ptr, i64, i64 } { ptr @.str.6798, i64 27, i64 0 }, ptr %a168 + %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) + %t170 = icmp ne i32 %t169, 0 + br i1 %t170, label %match.arm10260, label %match.or10265 +match.or10265: + store { ptr, i64, i64 } %t10, ptr %a171 + store { ptr, i64, i64 } { ptr @.str.6799, i64 26, i64 0 }, ptr %a172 + %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) + %t174 = icmp ne i32 %t173, 0 + br i1 %t174, label %match.arm10260, label %match.next10261 +match.arm10260: + %t175 = load %S.json.Json, ptr %a7 + %t176 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t175) + store { ptr, i64, i64 } %t176, ptr %a177 + %t178 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6800, i64 8, i64 0 }) + store %S.json.Json %t178, ptr %a179 + %t180 = call %S.json.Json @finch.json.Json.get(ptr %a179, { ptr, i64, i64 } { ptr @.str.6801, i64 4, i64 0 }) + store %S.json.Json %t180, ptr %a181 + %t182 = call i64 @finch.json.Json.int_or(ptr %a181, i64 0) + %t183 = add i64 %t182, 1 + store i64 %t183, ptr %a184 + %t185 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.6802, i64 8, i64 0 }) + store %S.json.Json %t185, ptr %a186 + %t187 = call %S.json.Json @finch.json.Json.get(ptr %a186, { ptr, i64, i64 } { ptr @.str.6803, i64 9, i64 0 }) + store %S.json.Json %t187, ptr %a188 + %t189 = call i64 @finch.json.Json.int_or(ptr %a188, i64 0) + %t190 = add i64 %t189, 1 + store i64 %t190, ptr %a191 + %t192 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t193 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t193, ptr %a194 + %t195 = call i64 @finch_map_find(ptr %t192, ptr %a194, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t196 = icmp sge i64 %t195, 0 + %t197 = xor i1 %t196, true + br i1 %t197, label %then10266, label %endif10268 +then10266: + %t198 = load %S.json.Json, ptr %a9 + %t199 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t198, %S.json.Json %t199) + ret void +endif10268: + %t200 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 + %t201 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t201, ptr %a202 + %t203 = call i64 @finch_map_find(ptr %t200, ptr %a202, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t204 = icmp slt i64 %t203, 0 + br i1 %t204, label %map.missing10269, label %map.found10270 +map.missing10269: + store { ptr, i64, i64 } zeroinitializer, ptr %a205 + store { ptr, i64, i64 } %t201, ptr %a206 + call void @finch_buf_str(ptr %a205, ptr %a206, i32 1) + call void @finch_map_missing(ptr @.str.6804, i64 842, ptr %a205) + unreachable +map.found10270: + %t207 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t200, i32 0, i32 0 + %t208 = load ptr, ptr %t207 + %t209 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t208, i64 %t203 + %t210 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t209, i32 0, i32 2 + %t211 = load %S.lsp.Analysis, ptr %t210 + store %S.lsp.Analysis %t211, ptr %a212 + call void @finch.copy.S_lsp_Analysis(ptr %a213, ptr %a212) + %t214 = load %S.lsp.Analysis, ptr %a213 + store %S.lsp.Analysis %t214, ptr %a215 + store { ptr, i64, i64 } { ptr @.str.6805, i64 0, i64 0 }, ptr %a216 + %t217 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t218 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t218, ptr %a219 + %t220 = call i64 @finch_map_find(ptr %t217, ptr %a219, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t221 = icmp sge i64 %t220, 0 + br i1 %t221, label %then10271, label %endif10273 +then10271: + %t222 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 + %t223 = load { ptr, i64, i64 }, ptr %a177 + store { ptr, i64, i64 } %t223, ptr %a224 + %t225 = call i64 @finch_map_find(ptr %t222, ptr %a224, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) + %t226 = icmp slt i64 %t225, 0 + br i1 %t226, label %map.missing10274, label %map.found10275 +map.missing10274: + store { ptr, i64, i64 } zeroinitializer, ptr %a227 + store { ptr, i64, i64 } %t223, ptr %a228 + call void @finch_buf_str(ptr %a227, ptr %a228, i32 1) + call void @finch_map_missing(ptr @.str.6806, i64 845, ptr %a227) + unreachable +map.found10275: + %t229 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t222, i32 0, i32 0 + %t230 = load ptr, ptr %t229 + %t231 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t230, i64 %t225 + %t232 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t231, i32 0, i32 2 + %t233 = load { ptr, i64, i64 }, ptr %t232 + store { ptr, i64, i64 } %t233, ptr %a234 + call void @finch_str_copy(ptr %a235, ptr %a234) + %t236 = load { ptr, i64, i64 }, ptr %a235 + store { ptr, i64, i64 } %t236, ptr %a216 + br label %endif10273 +endif10273: + %t237 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t237, ptr %a238 + store { ptr, i64, i64 } { ptr @.str.6807, i64 18, i64 0 }, ptr %a239 + %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) + %t241 = icmp ne i32 %t240, 0 + br i1 %t241, label %match.arm10277, label %match.next10278 +match.arm10277: + %t242 = load %S.json.Json, ptr %a9 + %t243 = load %S.lsp.Analysis, ptr %a215 + %t244 = load { ptr, i64, i64 }, ptr %a177 + %t245 = load i64, ptr %a184 + %t246 = load i64, ptr %a191 + %t247 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t243, { ptr, i64, i64 } %t244, i64 %t245, i64 %t246) + call void @finch.lsp.reply(%S.json.Json %t242, %S.json.Json %t247) + br label %match.end10276 +match.next10278: + store { ptr, i64, i64 } %t237, ptr %a248 + store { ptr, i64, i64 } { ptr @.str.6808, i64 23, i64 0 }, ptr %a249 + %t250 = call i32 @finch_str_eq(ptr %a248, ptr %a249) + %t251 = icmp ne i32 %t250, 0 + br i1 %t251, label %match.arm10279, label %match.next10280 +match.arm10279: + %t252 = load %S.json.Json, ptr %a9 + %t253 = load %S.lsp.Analysis, ptr %a215 + %t254 = load { ptr, i64, i64 }, ptr %a177 + %t255 = load i64, ptr %a184 + %t256 = load i64, ptr %a191 + %t257 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t253, { ptr, i64, i64 } %t254, i64 %t255, i64 %t256) + call void @finch.lsp.reply(%S.json.Json %t252, %S.json.Json %t257) + br label %match.end10276 +match.next10280: + store { ptr, i64, i64 } %t237, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6809, i64 23, i64 0 }, ptr %a259 + %t260 = call i32 @finch_str_eq(ptr %a258, ptr %a259) + %t261 = icmp ne i32 %t260, 0 + br i1 %t261, label %match.arm10281, label %match.next10282 +match.arm10281: + %t262 = load %S.json.Json, ptr %a9 + %t263 = load %S.lsp.Analysis, ptr %a215 + %t264 = load { ptr, i64, i64 }, ptr %a216 + %t265 = load { ptr, i64, i64 }, ptr %a177 + %t266 = load i64, ptr %a184 + %t267 = load i64, ptr %a191 + %t268 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t263, { ptr, i64, i64 } %t264, { ptr, i64, i64 } %t265, i64 %t266, i64 %t267) + call void @finch.lsp.reply(%S.json.Json %t262, %S.json.Json %t268) + br label %match.end10276 +match.next10282: + store { ptr, i64, i64 } %t237, ptr %a269 + store { ptr, i64, i64 } { ptr @.str.6810, i64 27, i64 0 }, ptr %a270 + %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) + %t272 = icmp ne i32 %t271, 0 + br i1 %t272, label %match.arm10283, label %match.next10284 +match.arm10283: + %t273 = load %S.json.Json, ptr %a9 + %t274 = load %S.lsp.Analysis, ptr %a215 + %t275 = load { ptr, i64, i64 }, ptr %a177 + %t276 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t274, { ptr, i64, i64 } %t275) + call void @finch.lsp.reply(%S.json.Json %t273, %S.json.Json %t276) + br label %match.end10276 +match.next10284: + br label %match.arm10285 +match.arm10285: + %t277 = load %S.json.Json, ptr %a9 + %t278 = load %S.lsp.Analysis, ptr %a215 + %t279 = load { ptr, i64, i64 }, ptr %a216 + %t280 = load { ptr, i64, i64 }, ptr %a177 + %t281 = load i64, ptr %a184 + %t282 = load i64, ptr %a191 + %t283 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t278, { ptr, i64, i64 } %t279, { ptr, i64, i64 } %t280, i64 %t281, i64 %t282) + call void @finch.lsp.reply(%S.json.Json %t277, %S.json.Json %t283) + br label %match.end10276 +match.end10276: + br label %match.end10229 +match.next10261: + br label %match.arm10287 +match.arm10287: + %t284 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 + %t285 = load i32, ptr %t284 + %t286 = icmp ne i32 %t285, 0 + br i1 %t286, label %then10289, label %endif10291 +then10289: + %t287 = load %S.json.Json, ptr %a9 + %t288 = call %S.json.Json @finch.json.new_null() + call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t288) + br label %endif10291 +endif10291: + br label %match.end10229 +match.end10229: + ret void +} + +define internal i64 @finch.lsp.run({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca %S.lsp.Server, align 16 + %a22 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca %S.json.Json, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a32 = alloca { ptr, i64, i64 }, align 16 + %a33 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 + %t7 = call i32 @getpid() + %t8 = sext i32 %t7 to i64 + call void @finch_str_from_int(ptr %a9, i64 %t8) + %t10 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } { ptr @.str.6811, i64 15, i64 0 }, ptr %a12 + store { ptr, i64, i64 } %t10, ptr %a13 + call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) + %t14 = load { ptr, i64, i64 }, ptr %a11 + %t15 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t14, 1 + store %S.lsp.Server %t15, ptr %a16 + br label %while.cond10292 +while.cond10292: + br label %while.body10293 +while.body10293: + %t17 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() + %t18 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 0 + %t19 = xor i1 %t18, true + %t20 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 2 + %t21 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t17, 1 + br i1 %t19, label %or.failed10295, label %or.ok10296 +or.failed10295: + store { ptr, i64, i64 } %t20, ptr %a22 + br label %while.end10294 +or.ok10296: + store %S.json.Json %t21, ptr %a23 + %t24 = load %S.json.Json, ptr %a23 + call void @finch.lsp.Server.answer(ptr %a16, %S.json.Json %t24) + br label %while.cond10292 +while.end10294: + %t25 = getelementptr inbounds %S.lsp.Server, ptr %a16, i32 0, i32 1 + %t26 = load { ptr, i64, i64 }, ptr %t25 + store { ptr, i64, i64 } { ptr @.str.6812, i64 8, i64 0 }, ptr %a28 + store { ptr, i64, i64 } %t26, ptr %a29 + call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) + %t30 = load { ptr, i64, i64 }, ptr %a27 + store { ptr, i64, i64 } %t30, ptr %a32 + store { ptr, i64, i64 } { ptr @.str.6813, i64 1, i64 0 }, ptr %a33 + call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) + %t34 = load { ptr, i64, i64 }, ptr %a31 + store { ptr, i64, i64 } %t34, ptr %a36 + call void @finch_str_copy(ptr %a35, ptr %a36) + %t37 = call i64 @finch_shell(ptr %a35) + ret i64 0 +} + +define internal %S.json.Json @finch.json.new_null() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 0, 0 + ret %S.json.Json %t1 +} + +define internal %S.json.Json @finch.json.new_bool(i1 %p0) { +entry: + %a1 = alloca i1, align 16 + store i1 %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 1, 0 + %t3 = load i1, ptr %a1 + %t4 = insertvalue %S.json.Json %t2, i1 %t3, 1 + ret %S.json.Json %t4 +} + +define internal %S.json.Json @finch.json.new_number(double %p0) { +entry: + %a1 = alloca double, align 16 + store double %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 2, 0 + %t3 = load double, ptr %a1 + %t4 = insertvalue %S.json.Json %t2, double %t3, 2 + ret %S.json.Json %t4 +} + +define internal %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = insertvalue %S.json.Json zeroinitializer, i32 3, 0 + %t3 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t3, ptr %a4 + call void @finch_str_copy(ptr %a5, ptr %a4) + %t6 = load { ptr, i64, i64 }, ptr %a5 + %t7 = insertvalue %S.json.Json %t2, { ptr, i64, i64 } %t6, 3 + ret %S.json.Json %t7 +} + +define internal %S.json.Json @finch.json.new_list() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 4, 0 + ret %S.json.Json %t1 +} + +define internal %S.json.Json @finch.json.new_object() { +entry: + + %t1 = insertvalue %S.json.Json zeroinitializer, i32 5, 0 + ret %S.json.Json %t1 +} + +define internal i1 @finch.json.Json.is_null(ptr %self) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t2 = load i32, ptr %t1 + %t3 = icmp eq i32 %t2, 0 + ret i1 %t3 +} + +define internal i64 @finch.json.Json.len(ptr %self) { +entry: + + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t2 = load i32, ptr %t1 + %t3 = icmp eq i32 %t2, 4 + br i1 %t3, label %match.arm10298, label %match.or10300 +match.or10300: + %t4 = icmp eq i32 %t2, 5 + br i1 %t4, label %match.arm10298, label %match.next10299 +match.arm10298: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + br label %match.from10301 +match.from10301: + br label %match.end10297 +match.next10299: + %t8 = icmp eq i32 %t2, 3 + br i1 %t8, label %match.arm10302, label %match.next10303 +match.arm10302: + %t9 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 3 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + br label %match.from10304 +match.from10304: + br label %match.end10297 +match.next10303: + br label %match.arm10305 +match.arm10305: + br label %match.from10307 +match.from10307: + br label %match.end10297 +match.end10297: + %t12 = phi i64 [ %t7, %match.from10301 ], [ %t11, %match.from10304 ], [ 0, %match.from10307 ] + ret i64 %t12 +} + +define internal i1 @finch.json.Json.has(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca i64, align 16 + %a11 = alloca i64, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 5 + br label %logic.from10308 +logic.from10308: + br i1 %t4, label %logic.rhs10309, label %logic.end10310 +logic.rhs10309: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a8 + %t9 = load i64, ptr %t6 + %t10 = load ptr, ptr %t5 + store i64 0, ptr %a11 + br label %find.cond10311 +find.cond10311: + %t12 = load i64, ptr %a11 + %t13 = icmp slt i64 %t12, %t9 + br i1 %t13, label %find.body10312, label %find.end10315 +find.body10312: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t12 + %t15 = load { ptr, i64, i64 }, ptr %t14 + store { ptr, i64, i64 } %t15, ptr %a16 + store { ptr, i64, i64 } %t7, ptr %a17 + %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) + %t19 = icmp ne i32 %t18, 0 + br i1 %t19, label %find.hit10313, label %find.next10314 +find.hit10313: + store i64 %t12, ptr %a8 + br label %find.end10315 +find.next10314: + %t20 = add i64 %t12, 1 + store i64 %t20, ptr %a11 + br label %find.cond10311 +find.end10315: + %t21 = load i64, ptr %a8 + %t22 = icmp sge i64 %t21, 0 + br label %logic.rend10316 +logic.rend10316: + br label %logic.end10310 +logic.end10310: + %t23 = phi i1 [ false, %logic.from10308 ], [ %t22, %logic.rend10316 ] + ret i1 %t23 +} + +define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a12 = alloca i64, align 16 + %a17 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a23 = alloca i64, align 16 + %a35 = alloca %S.json.Json, align 16 + %a36 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp ne i32 %t3, 5 + br i1 %t4, label %then10317, label %endif10319 +then10317: + %t5 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t5 +endif10319: + %t6 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 + %t8 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a9 + %t10 = load i64, ptr %t7 + %t11 = load ptr, ptr %t6 + store i64 0, ptr %a12 + br label %find.cond10320 +find.cond10320: + %t13 = load i64, ptr %a12 + %t14 = icmp slt i64 %t13, %t10 + br i1 %t14, label %find.body10321, label %find.end10324 +find.body10321: + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i64 %t13 + %t16 = load { ptr, i64, i64 }, ptr %t15 + store { ptr, i64, i64 } %t16, ptr %a17 + store { ptr, i64, i64 } %t8, ptr %a18 + %t19 = call i32 @finch_str_eq(ptr %a17, ptr %a18) + %t20 = icmp ne i32 %t19, 0 + br i1 %t20, label %find.hit10322, label %find.next10323 +find.hit10322: + store i64 %t13, ptr %a9 + br label %find.end10324 +find.next10323: + %t21 = add i64 %t13, 1 + store i64 %t21, ptr %a12 + br label %find.cond10320 +find.end10324: + %t22 = load i64, ptr %a9 + store i64 %t22, ptr %a23 + %t24 = load i64, ptr %a23 + %t25 = icmp slt i64 %t24, 0 + br i1 %t25, label %then10325, label %endif10327 +then10325: + %t26 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t26 +endif10327: + %t27 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t28 = load i64, ptr %a23 + %t29 = load { ptr, i64, i64 }, ptr %t27 + %t30 = extractvalue { ptr, i64, i64 } %t29, 1 + %t31 = icmp uge i64 %t28, %t30 + br i1 %t31, label %range10328, label %inrange10329 +range10328: + call void @finch_panic_index(ptr @.str.6814, i64 84, i64 %t28, i64 %t30) + unreachable +inrange10329: + %t32 = extractvalue { ptr, i64, i64 } %t29, 0 + %t33 = getelementptr inbounds %S.json.Json, ptr %t32, i64 %t28 + %t34 = load %S.json.Json, ptr %t33 + store %S.json.Json %t34, ptr %a35 + call void @finch.copy.S_json_Json(ptr %a36, ptr %a35) + %t37 = load %S.json.Json, ptr %a36 + ret %S.json.Json %t37 +} + +define internal %S.json.Json @finch.json.Json.at(ptr %self, i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a23 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + store i64 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp ne i32 %t3, 4 + br label %logic.from10330 +logic.from10330: + br i1 %t4, label %logic.end10332, label %logic.rhs10331 +logic.rhs10331: + %t5 = load i64, ptr %a1 + %t6 = icmp slt i64 %t5, 0 + br label %logic.rend10333 +logic.rend10333: + br label %logic.end10332 +logic.end10332: + %t7 = phi i1 [ true, %logic.from10330 ], [ %t6, %logic.rend10333 ] + br label %logic.from10334 +logic.from10334: + br i1 %t7, label %logic.end10336, label %logic.rhs10335 +logic.rhs10335: + %t8 = load i64, ptr %a1 + %t9 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = icmp sge i64 %t8, %t11 + br label %logic.rend10337 +logic.rend10337: + br label %logic.end10336 +logic.end10336: + %t13 = phi i1 [ true, %logic.from10334 ], [ %t12, %logic.rend10337 ] + br i1 %t13, label %then10338, label %endif10340 +then10338: + %t14 = call %S.json.Json @finch.json.new_null() + ret %S.json.Json %t14 +endif10340: + %t15 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t16 = load i64, ptr %a1 + %t17 = load { ptr, i64, i64 }, ptr %t15 + %t18 = extractvalue { ptr, i64, i64 } %t17, 1 + %t19 = icmp uge i64 %t16, %t18 + br i1 %t19, label %range10341, label %inrange10342 +range10341: + call void @finch_panic_index(ptr @.str.6815, i64 92, i64 %t16, i64 %t18) + unreachable +inrange10342: + %t20 = extractvalue { ptr, i64, i64 } %t17, 0 + %t21 = getelementptr inbounds %S.json.Json, ptr %t20, i64 %t16 + %t22 = load %S.json.Json, ptr %t21 + store %S.json.Json %t22, ptr %a23 + call void @finch.copy.S_json_Json(ptr %a24, ptr %a23) + %t25 = load %S.json.Json, ptr %a24 + ret %S.json.Json %t25 +} + +define internal { ptr, i64, i64 } @finch.json.Json.str_or(ptr %self, { ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 3 + br i1 %t4, label %then10343, label %endif10345 +then10343: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 3 + %t6 = load { ptr, i64, i64 }, ptr %t5 + store { ptr, i64, i64 } %t6, ptr %a7 + call void @finch_str_copy(ptr %a8, ptr %a7) + %t9 = load { ptr, i64, i64 }, ptr %a8 + ret { ptr, i64, i64 } %t9 +endif10345: + %t10 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t10, ptr %a11 + call void @finch_str_copy(ptr %a12, ptr %a11) + %t13 = load { ptr, i64, i64 }, ptr %a12 + ret { ptr, i64, i64 } %t13 +} + +define internal double @finch.json.Json.float_or(ptr %self, double %p0) { +entry: + %a1 = alloca double, align 16 + store double %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 2 + br i1 %t4, label %then10346, label %endif10348 +then10346: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 + %t6 = load double, ptr %t5 + ret double %t6 +endif10348: + %t7 = load double, ptr %a1 + ret double %t7 +} + +define internal i64 @finch.json.Json.int_or(ptr %self, i64 %p0) { +entry: + %a1 = alloca i64, align 16 + store i64 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 2 + br i1 %t4, label %then10349, label %endif10351 +then10349: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 + %t6 = load double, ptr %t5 + %t7 = fptosi double %t6 to i64 + ret i64 %t7 +endif10351: + %t8 = load i64, ptr %a1 + ret i64 %t8 +} + +define internal i1 @finch.json.Json.bool_or(ptr %self, i1 %p0) { +entry: + %a1 = alloca i1, align 16 + store i1 %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 0 + %t3 = load i32, ptr %t2 + %t4 = icmp eq i32 %t3, 1 + br i1 %t4, label %then10352, label %endif10354 +then10352: + %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 + %t6 = load i1, ptr %t5 + ret i1 %t6 +endif10354: + %t7 = load i1, ptr %a1 + ret i1 %t7 +} + +define internal { ptr, i64, i64 } @finch.json.Json.names(ptr %self) { +entry: + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %t1 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t2 = load { ptr, i64, i64 }, ptr %t1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch.copy.arr_str(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + ret { ptr, i64, i64 } %t5 +} + +define internal void @finch.json.Json.push(ptr %self, %S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a5 = alloca %S.json.Json, align 16 + %a6 = alloca %S.json.Json, align 16 + store %S.json.Json %p0, ptr %a1 + %t2 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i32 0, i32 1 + %t4 = load %S.json.Json, ptr %a1 + store %S.json.Json %t4, ptr %a5 + call void @finch.copy.S_json_Json(ptr %a6, ptr %a5) + %t7 = load %S.json.Json, ptr %a6 + %t8 = load i64, ptr %t3 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %t2, i64 %t9, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %t2 + %t11 = getelementptr inbounds %S.json.Json, ptr %t10, i64 %t8 + store %S.json.Json %t7, ptr %t11 + store i64 %t9, ptr %t3 + ret void +} + +define internal void @finch.json.Json.set(ptr %self, { ptr, i64, i64 } %p0, %S.json.Json %p1) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a2 = alloca %S.json.Json, align 16 + %a6 = alloca i64, align 16 + %a9 = alloca i64, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca i64, align 16 + %a31 = alloca %S.json.Json, align 16 + %a32 = alloca %S.json.Json, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a38 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca %S.json.Json, align 16 + %a48 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + store %S.json.Json %p1, ptr %a2 + %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 + %t5 = load { ptr, i64, i64 }, ptr %a1 + store i64 -1, ptr %a6 + %t7 = load i64, ptr %t4 + %t8 = load ptr, ptr %t3 + store i64 0, ptr %a9 + br label %find.cond10355 +find.cond10355: + %t10 = load i64, ptr %a9 + %t11 = icmp slt i64 %t10, %t7 + br i1 %t11, label %find.body10356, label %find.end10359 +find.body10356: + %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 %t10 + %t13 = load { ptr, i64, i64 }, ptr %t12 + store { ptr, i64, i64 } %t13, ptr %a14 + store { ptr, i64, i64 } %t5, ptr %a15 + %t16 = call i32 @finch_str_eq(ptr %a14, ptr %a15) + %t17 = icmp ne i32 %t16, 0 + br i1 %t17, label %find.hit10357, label %find.next10358 +find.hit10357: + store i64 %t10, ptr %a6 + br label %find.end10359 +find.next10358: + %t18 = add i64 %t10, 1 + store i64 %t18, ptr %a9 + br label %find.cond10355 +find.end10359: + %t19 = load i64, ptr %a6 + store i64 %t19, ptr %a20 + %t21 = load i64, ptr %a20 + %t22 = icmp sge i64 %t21, 0 + br i1 %t22, label %then10360, label %endif10362 +then10360: + %t23 = load %S.json.Json, ptr %a2 + %t24 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t25 = load i64, ptr %a20 + %t26 = load { ptr, i64, i64 }, ptr %t24 + %t27 = extractvalue { ptr, i64, i64 } %t26, 1 + %t28 = icmp uge i64 %t25, %t27 + br i1 %t28, label %range10363, label %inrange10364 +range10363: + call void @finch_panic_index(ptr @.str.6816, i64 140, i64 %t25, i64 %t27) + unreachable +inrange10364: + %t29 = extractvalue { ptr, i64, i64 } %t26, 0 + %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 + store %S.json.Json %t23, ptr %a31 + call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) + %t33 = load %S.json.Json, ptr %a32 + store %S.json.Json %t33, ptr %t30 + ret void +endif10362: + %t34 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t36, ptr %a37 + call void @finch_str_copy(ptr %a38, ptr %a37) + %t39 = load { ptr, i64, i64 }, ptr %a38 + %t40 = load i64, ptr %t35 + %t41 = add i64 %t40, 1 + call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t42 = load ptr, ptr %t34 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 + store { ptr, i64, i64 } %t39, ptr %t43 + store i64 %t41, ptr %t35 + %t44 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 + %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 + %t46 = load %S.json.Json, ptr %a2 + store %S.json.Json %t46, ptr %a47 + call void @finch.copy.S_json_Json(ptr %a48, ptr %a47) + %t49 = load %S.json.Json, ptr %a48 + %t50 = load i64, ptr %t45 + %t51 = add i64 %t50, 1 + call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) + %t52 = load ptr, ptr %t44 + %t53 = getelementptr inbounds %S.json.Json, ptr %t52, i64 %t50 + store %S.json.Json %t49, ptr %t53 + store i64 %t51, ptr %t45 + ret void +} + +define internal { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca i64, align 16 + %a17 = alloca i8, align 16 + %a20 = alloca i64, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a63 = alloca { ptr, i64, i64 }, align 16 + %a64 = alloca { ptr, i64, i64 }, align 16 + %a69 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a79 = alloca { ptr, i64, i64 }, align 16 + %a93 = alloca { ptr, i64, i64 }, align 16 + %a94 = alloca { ptr, i64, i64 }, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) + %t3 = call ptr @finch_alloc(i64 %t2) + %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 + store { ptr, i64, i64 } { ptr @.str.6817, i64 1, i64 0 }, ptr %t4 + %t5 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 + %t6 = insertvalue { ptr, i64, i64 } %t5, i64 1, 1 + %t7 = insertvalue { ptr, i64, i64 } %t6, i64 1, 2 + store { ptr, i64, i64 } %t7, ptr %a8 + store i64 0, ptr %a9 + br label %each.cond10365 +each.cond10365: + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = load i64, ptr %a9 + %t13 = icmp slt i64 %t12, %t11 + br i1 %t13, label %each.body10366, label %each.end10368 +each.body10366: + %t14 = load ptr, ptr %a1 + %t15 = getelementptr inbounds i8, ptr %t14, i64 %t12 + %t16 = load i8, ptr %t15 + store i8 %t16, ptr %a17 + %t18 = load i8, ptr %a17 + %t19 = zext i8 %t18 to i64 + store i64 %t19, ptr %a20 + %t21 = load i8, ptr %a17 + %t22 = icmp eq i8 %t21, 34 + br i1 %t22, label %then10369, label %else10370 +then10369: + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = add i64 %t24, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t25, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t26 = load ptr, ptr %a8 + %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t26, i64 %t24 + store { ptr, i64, i64 } { ptr @.str.6818, i64 2, i64 0 }, ptr %t27 + store i64 %t25, ptr %t23 + br label %endif10371 +else10370: + %t28 = load i8, ptr %a17 + %t29 = icmp eq i8 %t28, 92 + br i1 %t29, label %then10372, label %else10373 +then10372: + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t31, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t33 = load ptr, ptr %a8 + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 + store { ptr, i64, i64 } { ptr @.str.6819, i64 2, i64 0 }, ptr %t34 + store i64 %t32, ptr %t30 + br label %endif10374 +else10373: + %t35 = load i8, ptr %a17 + %t36 = icmp eq i8 %t35, 10 + br i1 %t36, label %then10375, label %else10376 +then10375: + %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = add i64 %t38, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t40 = load ptr, ptr %a8 + %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 + store { ptr, i64, i64 } { ptr @.str.6820, i64 2, i64 0 }, ptr %t41 + store i64 %t39, ptr %t37 + br label %endif10377 +else10376: + %t42 = load i8, ptr %a17 + %t43 = icmp eq i8 %t42, 13 + br i1 %t43, label %then10378, label %else10379 +then10378: + %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = add i64 %t45, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t47 = load ptr, ptr %a8 + %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 + store { ptr, i64, i64 } { ptr @.str.6821, i64 2, i64 0 }, ptr %t48 + store i64 %t46, ptr %t44 + br label %endif10380 +else10379: + %t49 = load i8, ptr %a17 + %t50 = icmp eq i8 %t49, 9 + br i1 %t50, label %then10381, label %else10382 +then10381: + %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t52 = load i64, ptr %t51 + %t53 = add i64 %t52, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t54 = load ptr, ptr %a8 + %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 + store { ptr, i64, i64 } { ptr @.str.6822, i64 2, i64 0 }, ptr %t55 + store i64 %t53, ptr %t51 + br label %endif10383 +else10382: + %t56 = load i64, ptr %a20 + %t57 = icmp slt i64 %t56, 32 + br i1 %t57, label %then10384, label %else10385 +then10384: + %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t59 = load i64, ptr %a20 + %t60 = sdiv i64 %t59, 16 + %t61 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t60) + store { ptr, i64, i64 } { ptr @.str.6823, i64 4, i64 0 }, ptr %a63 + store { ptr, i64, i64 } %t61, ptr %a64 + call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) + %t65 = load { ptr, i64, i64 }, ptr %a62 + %t66 = load i64, ptr %a20 + %t67 = srem i64 %t66, 16 + %t68 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t67) + store { ptr, i64, i64 } %t65, ptr %a70 + store { ptr, i64, i64 } %t68, ptr %a71 + call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) + %t72 = load { ptr, i64, i64 }, ptr %a69 + %t73 = load i64, ptr %t58 + %t74 = add i64 %t73, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t74, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t75 = load ptr, ptr %a8 + %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t75, i64 %t73 + store { ptr, i64, i64 } %t72, ptr %t76 + store i64 %t74, ptr %t58 + br label %endif10386 +else10385: + %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t78 = load i8, ptr %a17 + call void @finch_str_from_char(ptr %a79, i8 signext %t78) + %t80 = load { ptr, i64, i64 }, ptr %a79 + %t81 = load i64, ptr %t77 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %a8 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 + store { ptr, i64, i64 } %t80, ptr %t84 + store i64 %t82, ptr %t77 + br label %endif10386 +endif10386: + br label %endif10383 +endif10383: + br label %endif10380 +endif10380: + br label %endif10377 +endif10377: + br label %endif10374 +endif10374: + br label %endif10371 +endif10371: + br label %each.step10367 +each.step10367: + %t85 = load i64, ptr %a9 + %t86 = add i64 %t85, 1 + store i64 %t86, ptr %a9 + br label %each.cond10365 +each.end10368: + %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + %t88 = load i64, ptr %t87 + %t89 = add i64 %t88, 1 + call void @finch_arr_reserve(ptr %a8, i64 %t89, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t90 = load ptr, ptr %a8 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %t90, i64 %t88 + store { ptr, i64, i64 } { ptr @.str.6824, i64 1, i64 0 }, ptr %t91 + store i64 %t89, ptr %t87 + %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6825, i64 0, i64 0 }, ptr %a93 + call void @finch_str_join(ptr %a94, ptr %a8, ptr %a93) + %t95 = load { ptr, i64, i64 }, ptr %a94 + ret { ptr, i64, i64 } %t95 +} + +define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + store i64 %p0, ptr %a1 + store { ptr, i64, i64 } { ptr @.str.6826, i64 16, i64 0 }, ptr %a2 + %t3 = load i64, ptr %a1 + %t4 = load { ptr, i64, i64 }, ptr %a2 + %t5 = extractvalue { ptr, i64, i64 } %t4, 1 + %t6 = icmp uge i64 %t3, %t5 + br i1 %t6, label %range10387, label %inrange10388 +range10387: + call void @finch_panic_index(ptr @.str.6827, i64 175, i64 %t3, i64 %t5) + unreachable +inrange10388: + %t7 = extractvalue { ptr, i64, i64 } %t4, 0 + %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 + %t9 = load i8, ptr %t8 + call void @finch_str_from_char(ptr %a10, i8 signext %t9) + %t11 = load { ptr, i64, i64 }, ptr %a10 + ret { ptr, i64, i64 } %t11 +} + +define internal { ptr, i64, i64 } @finch.json.number_text(double %p0) { +entry: + %a1 = alloca double, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + store double %p0, ptr %a1 + %t2 = load double, ptr %a1 + %t3 = load double, ptr %a1 + %t4 = fptosi double %t3 to i64 + %t5 = sitofp i64 %t4 to double + %t6 = fcmp oeq double %t2, %t5 + br label %logic.from10389 +logic.from10389: + br i1 %t6, label %logic.rhs10390, label %logic.end10391 +logic.rhs10390: + %t7 = load double, ptr %a1 + %t8 = fneg double 1000000000000000.0 + %t9 = fcmp ogt double %t7, %t8 + br label %logic.rend10392 +logic.rend10392: + br label %logic.end10391 +logic.end10391: + %t10 = phi i1 [ false, %logic.from10389 ], [ %t9, %logic.rend10392 ] + br label %logic.from10393 +logic.from10393: + br i1 %t10, label %logic.rhs10394, label %logic.end10395 +logic.rhs10394: + %t11 = load double, ptr %a1 + %t12 = fcmp olt double %t11, 1000000000000000.0 + br label %logic.rend10396 +logic.rend10396: + br label %logic.end10395 +logic.end10395: + %t13 = phi i1 [ false, %logic.from10393 ], [ %t12, %logic.rend10396 ] + br i1 %t13, label %then10397, label %endif10399 +then10397: + %t14 = load double, ptr %a1 + %t15 = fptosi double %t14 to i64 + call void @finch_str_from_int(ptr %a16, i64 %t15) + %t17 = load { ptr, i64, i64 }, ptr %a16 + ret { ptr, i64, i64 } %t17 +endif10399: + %t18 = load double, ptr %a1 + call void @finch_str_from_float(ptr %a19, double %t18) + %t20 = load { ptr, i64, i64 }, ptr %a19 + ret { ptr, i64, i64 } %t20 +} + +define internal void @finch.json.write(%S.json.Json %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, ptr %p3) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca ptr, align 16 + %a5 = alloca { ptr, i64, i64 }, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a8 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a90 = alloca { ptr, i64, i64 }, align 16 + %a91 = alloca { ptr, i64, i64 }, align 16 + %a92 = alloca { ptr, i64, i64 }, align 16 + %a99 = alloca i64, align 16 + %a107 = alloca i64, align 16 + %a108 = alloca %S.json.Json, align 16 + %a117 = alloca { ptr, i64, i64 }, align 16 + %a118 = alloca { ptr, i64, i64 }, align 16 + %a119 = alloca { ptr, i64, i64 }, align 16 + %a130 = alloca { ptr, i64, i64 }, align 16 + %a131 = alloca { ptr, i64, i64 }, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a150 = alloca { ptr, i64, i64 }, align 16 + %a151 = alloca { ptr, i64, i64 }, align 16 + %a153 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a155 = alloca { ptr, i64, i64 }, align 16 + %a179 = alloca { ptr, i64, i64 }, align 16 + %a180 = alloca { ptr, i64, i64 }, align 16 + %a181 = alloca { ptr, i64, i64 }, align 16 + %a188 = alloca i64, align 16 + %a196 = alloca i64, align 16 + %a197 = alloca %S.json.Json, align 16 + %a206 = alloca { ptr, i64, i64 }, align 16 + %a207 = alloca { ptr, i64, i64 }, align 16 + %a208 = alloca { ptr, i64, i64 }, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a229 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a233 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a253 = alloca { ptr, i64, i64 }, align 16 + %a254 = alloca { ptr, i64, i64 }, align 16 + %a255 = alloca { ptr, i64, i64 }, align 16 + %a257 = alloca { ptr, i64, i64 }, align 16 + %a258 = alloca { ptr, i64, i64 }, align 16 + %a259 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + store { ptr, i64, i64 } %p2, ptr %a3 + store ptr %p3, ptr %a4 + store { ptr, i64, i64 } { ptr @.str.6828, i64 0, i64 0 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6829, i64 0, i64 0 }, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6830, i64 1, i64 0 }, ptr %a7 + store { ptr, i64, i64 } { ptr @.str.6831, i64 1, i64 0 }, ptr %a8 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp sgt i64 %t10, 0 + br i1 %t11, label %then10400, label %endif10402 +then10400: + store { ptr, i64, i64 } { ptr @.str.6832, i64 1, i64 0 }, ptr %a5 + %t12 = load { ptr, i64, i64 }, ptr %a3 + %t13 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t12, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a6 + store { ptr, i64, i64 } { ptr @.str.6833, i64 2, i64 0 }, ptr %a8 + br label %endif10402 +endif10402: + %t18 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 + %t19 = load i32, ptr %t18 + %t20 = icmp eq i32 %t19, 0 + br i1 %t20, label %match.arm10404, label %match.next10405 +match.arm10404: + %t21 = load ptr, ptr %a4 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic10406, label %ok10407 +panic10406: + call void @finch_panic(ptr @.str.6834, i64 200, ptr @.str.6835) + unreachable +ok10407: + %t23 = getelementptr inbounds %S.json.Writer, ptr %t21, i32 0, i32 0 + %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = add i64 %t25, 1 + call void @finch_arr_reserve(ptr %t23, i64 %t26, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t27 = load ptr, ptr %t23 + %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t27, i64 %t25 + store { ptr, i64, i64 } { ptr @.str.6836, i64 4, i64 0 }, ptr %t28 + store i64 %t26, ptr %t24 + br label %match.end10403 +match.next10405: + %t29 = icmp eq i32 %t19, 1 + br i1 %t29, label %match.arm10408, label %match.next10409 +match.arm10408: + %t30 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 + %t31 = load i1, ptr %t30 + br i1 %t31, label %then10410, label %else10411 +then10410: + %t32 = load ptr, ptr %a4 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10413, label %ok10414 +panic10413: + call void @finch_panic(ptr @.str.6837, i64 203, ptr @.str.6838) + unreachable +ok10414: + %t34 = getelementptr inbounds %S.json.Writer, ptr %t32, i32 0, i32 0 + %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 + %t36 = load i64, ptr %t35 + %t37 = add i64 %t36, 1 + call void @finch_arr_reserve(ptr %t34, i64 %t37, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t38 = load ptr, ptr %t34 + %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t36 + store { ptr, i64, i64 } { ptr @.str.6839, i64 4, i64 0 }, ptr %t39 + store i64 %t37, ptr %t35 + br label %endif10412 +else10411: + %t40 = load ptr, ptr %a4 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic10415, label %ok10416 +panic10415: + call void @finch_panic(ptr @.str.6840, i64 205, ptr @.str.6841) + unreachable +ok10416: + %t42 = getelementptr inbounds %S.json.Writer, ptr %t40, i32 0, i32 0 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 + %t44 = load i64, ptr %t43 + %t45 = add i64 %t44, 1 + call void @finch_arr_reserve(ptr %t42, i64 %t45, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t46 = load ptr, ptr %t42 + %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t44 + store { ptr, i64, i64 } { ptr @.str.6842, i64 5, i64 0 }, ptr %t47 + store i64 %t45, ptr %t43 + br label %endif10412 +endif10412: + br label %match.end10403 +match.next10409: + %t48 = icmp eq i32 %t19, 2 + br i1 %t48, label %match.arm10417, label %match.next10418 +match.arm10417: + %t49 = load ptr, ptr %a4 + %t50 = icmp eq ptr %t49, null + br i1 %t50, label %panic10419, label %ok10420 +panic10419: + call void @finch_panic(ptr @.str.6843, i64 208, ptr @.str.6844) + unreachable +ok10420: + %t51 = getelementptr inbounds %S.json.Writer, ptr %t49, i32 0, i32 0 + %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i32 0, i32 1 + %t53 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 + %t54 = load double, ptr %t53 + %t55 = call { ptr, i64, i64 } @finch.json.number_text(double %t54) + %t56 = load i64, ptr %t52 + %t57 = add i64 %t56, 1 + call void @finch_arr_reserve(ptr %t51, i64 %t57, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t58 = load ptr, ptr %t51 + %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 %t56 + store { ptr, i64, i64 } %t55, ptr %t59 + store i64 %t57, ptr %t52 + br label %match.end10403 +match.next10418: + %t60 = icmp eq i32 %t19, 3 + br i1 %t60, label %match.arm10421, label %match.next10422 +match.arm10421: + %t61 = load ptr, ptr %a4 + %t62 = icmp eq ptr %t61, null + br i1 %t62, label %panic10423, label %ok10424 +panic10423: + call void @finch_panic(ptr @.str.6845, i64 209, ptr @.str.6846) + unreachable +ok10424: + %t63 = getelementptr inbounds %S.json.Writer, ptr %t61, i32 0, i32 0 + %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 + %t65 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 + %t66 = load { ptr, i64, i64 }, ptr %t65 + %t67 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t66) + %t68 = load i64, ptr %t64 + %t69 = add i64 %t68, 1 + call void @finch_arr_reserve(ptr %t63, i64 %t69, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t70 = load ptr, ptr %t63 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t68 + store { ptr, i64, i64 } %t67, ptr %t71 + store i64 %t69, ptr %t64 + br label %match.end10403 +match.next10422: + %t72 = icmp eq i32 %t19, 4 + br i1 %t72, label %match.arm10425, label %match.next10426 +match.arm10425: + %t73 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = icmp eq i64 %t75, 0 + br i1 %t76, label %then10427, label %endif10429 +then10427: + %t77 = load ptr, ptr %a4 + %t78 = icmp eq ptr %t77, null + br i1 %t78, label %panic10430, label %ok10431 +panic10430: + call void @finch_panic(ptr @.str.6847, i64 212, ptr @.str.6848) + unreachable +ok10431: + %t79 = getelementptr inbounds %S.json.Writer, ptr %t77, i32 0, i32 0 + %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 + %t81 = load i64, ptr %t80 + %t82 = add i64 %t81, 1 + call void @finch_arr_reserve(ptr %t79, i64 %t82, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t83 = load ptr, ptr %t79 + %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 %t81 + store { ptr, i64, i64 } { ptr @.str.6849, i64 2, i64 0 }, ptr %t84 + store i64 %t82, ptr %t80 + ret void +endif10429: + %t85 = load ptr, ptr %a4 + %t86 = icmp eq ptr %t85, null + br i1 %t86, label %panic10432, label %ok10433 +panic10432: + call void @finch_panic(ptr @.str.6850, i64 215, ptr @.str.6851) + unreachable +ok10433: + %t87 = getelementptr inbounds %S.json.Writer, ptr %t85, i32 0, i32 0 + %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 + %t89 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6852, i64 1, i64 0 }, ptr %a91 + store { ptr, i64, i64 } %t89, ptr %a92 + call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) + %t93 = load { ptr, i64, i64 }, ptr %a90 + %t94 = load i64, ptr %t88 + %t95 = add i64 %t94, 1 + call void @finch_arr_reserve(ptr %t87, i64 %t95, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t96 = load ptr, ptr %t87 + %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t94 + store { ptr, i64, i64 } %t93, ptr %t97 + store i64 %t95, ptr %t88 + %t98 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a99 + br label %each.cond10434 +each.cond10434: + %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 + %t101 = load i64, ptr %t100 + %t102 = load i64, ptr %a99 + %t103 = icmp slt i64 %t102, %t101 + br i1 %t103, label %each.body10435, label %each.end10437 +each.body10435: + %t104 = load ptr, ptr %t98 + %t105 = getelementptr inbounds %S.json.Json, ptr %t104, i64 %t102 + %t106 = load %S.json.Json, ptr %t105 + store i64 %t102, ptr %a107 + store %S.json.Json %t106, ptr %a108 + %t109 = load i64, ptr %a107 + %t110 = icmp sgt i64 %t109, 0 + br i1 %t110, label %then10438, label %endif10440 +then10438: + %t111 = load ptr, ptr %a4 + %t112 = icmp eq ptr %t111, null + br i1 %t112, label %panic10441, label %ok10442 +panic10441: + call void @finch_panic(ptr @.str.6853, i64 218, ptr @.str.6854) + unreachable +ok10442: + %t113 = getelementptr inbounds %S.json.Writer, ptr %t111, i32 0, i32 0 + %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 + %t115 = load { ptr, i64, i64 }, ptr %a7 + %t116 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t115, ptr %a118 + store { ptr, i64, i64 } %t116, ptr %a119 + call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) + %t120 = load { ptr, i64, i64 }, ptr %a117 + %t121 = load i64, ptr %t114 + %t122 = add i64 %t121, 1 + call void @finch_arr_reserve(ptr %t113, i64 %t122, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t123 = load ptr, ptr %t113 + %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t121 + store { ptr, i64, i64 } %t120, ptr %t124 + store i64 %t122, ptr %t114 + br label %endif10440 +endif10440: + %t125 = load ptr, ptr %a4 + %t126 = icmp eq ptr %t125, null + br i1 %t126, label %panic10443, label %ok10444 +panic10443: + call void @finch_panic(ptr @.str.6855, i64 220, ptr @.str.6856) + unreachable +ok10444: + %t127 = getelementptr inbounds %S.json.Writer, ptr %t125, i32 0, i32 0 + %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 + %t129 = load { ptr, i64, i64 }, ptr %a6 + store { ptr, i64, i64 } %t129, ptr %a130 + call void @finch_str_copy(ptr %a131, ptr %a130) + %t132 = load { ptr, i64, i64 }, ptr %a131 + %t133 = load i64, ptr %t128 + %t134 = add i64 %t133, 1 + call void @finch_arr_reserve(ptr %t127, i64 %t134, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t135 = load ptr, ptr %t127 + %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i64 %t133 + store { ptr, i64, i64 } %t132, ptr %t136 + store i64 %t134, ptr %t128 + %t137 = load %S.json.Json, ptr %a108 + %t138 = load { ptr, i64, i64 }, ptr %a2 + %t139 = load { ptr, i64, i64 }, ptr %a6 + %t140 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139, ptr %t140) + br label %each.step10436 +each.step10436: + %t141 = load i64, ptr %a99 + %t142 = add i64 %t141, 1 + store i64 %t142, ptr %a99 + br label %each.cond10434 +each.end10437: + %t143 = load ptr, ptr %a4 + %t144 = icmp eq ptr %t143, null + br i1 %t144, label %panic10445, label %ok10446 +panic10445: + call void @finch_panic(ptr @.str.6857, i64 223, ptr @.str.6858) + unreachable +ok10446: + %t145 = getelementptr inbounds %S.json.Writer, ptr %t143, i32 0, i32 0 + %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 + %t147 = load { ptr, i64, i64 }, ptr %a5 + %t148 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t147, ptr %a150 + store { ptr, i64, i64 } %t148, ptr %a151 + call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) + %t152 = load { ptr, i64, i64 }, ptr %a149 + store { ptr, i64, i64 } %t152, ptr %a154 + store { ptr, i64, i64 } { ptr @.str.6859, i64 1, i64 0 }, ptr %a155 + call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) + %t156 = load { ptr, i64, i64 }, ptr %a153 + %t157 = load i64, ptr %t146 + %t158 = add i64 %t157, 1 + call void @finch_arr_reserve(ptr %t145, i64 %t158, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t159 = load ptr, ptr %t145 + %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %t159, i64 %t157 + store { ptr, i64, i64 } %t156, ptr %t160 + store i64 %t158, ptr %t146 + br label %match.end10403 +match.next10426: + %t161 = icmp eq i32 %t19, 5 + br i1 %t161, label %match.arm10447, label %match.next10448 +match.arm10447: + %t162 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 + %t164 = load i64, ptr %t163 + %t165 = icmp eq i64 %t164, 0 + br i1 %t165, label %then10449, label %endif10451 +then10449: + %t166 = load ptr, ptr %a4 + %t167 = icmp eq ptr %t166, null + br i1 %t167, label %panic10452, label %ok10453 +panic10452: + call void @finch_panic(ptr @.str.6860, i64 227, ptr @.str.6861) + unreachable +ok10453: + %t168 = getelementptr inbounds %S.json.Writer, ptr %t166, i32 0, i32 0 + %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i32 0, i32 1 + %t170 = load i64, ptr %t169 + %t171 = add i64 %t170, 1 + call void @finch_arr_reserve(ptr %t168, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t172 = load ptr, ptr %t168 + %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 + store { ptr, i64, i64 } { ptr @.str.6862, i64 2, i64 0 }, ptr %t173 + store i64 %t171, ptr %t169 + ret void +endif10451: + %t174 = load ptr, ptr %a4 + %t175 = icmp eq ptr %t174, null + br i1 %t175, label %panic10454, label %ok10455 +panic10454: + call void @finch_panic(ptr @.str.6863, i64 230, ptr @.str.6864) + unreachable +ok10455: + %t176 = getelementptr inbounds %S.json.Writer, ptr %t174, i32 0, i32 0 + %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i32 0, i32 1 + %t178 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } { ptr @.str.6865, i64 1, i64 0 }, ptr %a180 + store { ptr, i64, i64 } %t178, ptr %a181 + call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) + %t182 = load { ptr, i64, i64 }, ptr %a179 + %t183 = load i64, ptr %t177 + %t184 = add i64 %t183, 1 + call void @finch_arr_reserve(ptr %t176, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t185 = load ptr, ptr %t176 + %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 + store { ptr, i64, i64 } %t182, ptr %t186 + store i64 %t184, ptr %t177 + %t187 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 + store i64 0, ptr %a188 + br label %each.cond10456 +each.cond10456: + %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 + %t190 = load i64, ptr %t189 + %t191 = load i64, ptr %a188 + %t192 = icmp slt i64 %t191, %t190 + br i1 %t192, label %each.body10457, label %each.end10459 +each.body10457: + %t193 = load ptr, ptr %t187 + %t194 = getelementptr inbounds %S.json.Json, ptr %t193, i64 %t191 + %t195 = load %S.json.Json, ptr %t194 + store i64 %t191, ptr %a196 + store %S.json.Json %t195, ptr %a197 + %t198 = load i64, ptr %a196 + %t199 = icmp sgt i64 %t198, 0 + br i1 %t199, label %then10460, label %endif10462 +then10460: + %t200 = load ptr, ptr %a4 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic10463, label %ok10464 +panic10463: + call void @finch_panic(ptr @.str.6866, i64 233, ptr @.str.6867) + unreachable +ok10464: + %t202 = getelementptr inbounds %S.json.Writer, ptr %t200, i32 0, i32 0 + %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 + %t204 = load { ptr, i64, i64 }, ptr %a7 + %t205 = load { ptr, i64, i64 }, ptr %a5 + store { ptr, i64, i64 } %t204, ptr %a207 + store { ptr, i64, i64 } %t205, ptr %a208 + call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) + %t209 = load { ptr, i64, i64 }, ptr %a206 + %t210 = load i64, ptr %t203 + %t211 = add i64 %t210, 1 + call void @finch_arr_reserve(ptr %t202, i64 %t211, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t212 = load ptr, ptr %t202 + %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t210 + store { ptr, i64, i64 } %t209, ptr %t213 + store i64 %t211, ptr %t203 + br label %endif10462 +endif10462: + %t214 = load ptr, ptr %a4 + %t215 = icmp eq ptr %t214, null + br i1 %t215, label %panic10465, label %ok10466 +panic10465: + call void @finch_panic(ptr @.str.6868, i64 235, ptr @.str.6869) + unreachable +ok10466: + %t216 = getelementptr inbounds %S.json.Writer, ptr %t214, i32 0, i32 0 + %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i32 0, i32 1 + %t218 = load { ptr, i64, i64 }, ptr %a6 + %t219 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 + %t220 = load i64, ptr %a196 + %t221 = load { ptr, i64, i64 }, ptr %t219 + %t222 = extractvalue { ptr, i64, i64 } %t221, 1 + %t223 = icmp uge i64 %t220, %t222 + br i1 %t223, label %range10467, label %inrange10468 +range10467: + call void @finch_panic_index(ptr @.str.6870, i64 235, i64 %t220, i64 %t222) + unreachable +inrange10468: + %t224 = extractvalue { ptr, i64, i64 } %t221, 0 + %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %t224, i64 %t220 + %t226 = load { ptr, i64, i64 }, ptr %t225 + %t227 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t226) + store { ptr, i64, i64 } %t218, ptr %a229 + store { ptr, i64, i64 } %t227, ptr %a230 + call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) + %t231 = load { ptr, i64, i64 }, ptr %a228 + %t232 = load { ptr, i64, i64 }, ptr %a8 + store { ptr, i64, i64 } %t231, ptr %a234 + store { ptr, i64, i64 } %t232, ptr %a235 + call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) + %t236 = load { ptr, i64, i64 }, ptr %a233 + %t237 = load i64, ptr %t217 + %t238 = add i64 %t237, 1 + call void @finch_arr_reserve(ptr %t216, i64 %t238, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t239 = load ptr, ptr %t216 + %t240 = getelementptr inbounds { ptr, i64, i64 }, ptr %t239, i64 %t237 + store { ptr, i64, i64 } %t236, ptr %t240 + store i64 %t238, ptr %t217 + %t241 = load %S.json.Json, ptr %a197 + %t242 = load { ptr, i64, i64 }, ptr %a2 + %t243 = load { ptr, i64, i64 }, ptr %a6 + %t244 = load ptr, ptr %a4 + call void @finch.json.write(%S.json.Json %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, ptr %t244) + br label %each.step10458 +each.step10458: + %t245 = load i64, ptr %a188 + %t246 = add i64 %t245, 1 + store i64 %t246, ptr %a188 + br label %each.cond10456 +each.end10459: + %t247 = load ptr, ptr %a4 + %t248 = icmp eq ptr %t247, null + br i1 %t248, label %panic10469, label %ok10470 +panic10469: + call void @finch_panic(ptr @.str.6871, i64 238, ptr @.str.6872) + unreachable +ok10470: + %t249 = getelementptr inbounds %S.json.Writer, ptr %t247, i32 0, i32 0 + %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t249, i32 0, i32 1 + %t251 = load { ptr, i64, i64 }, ptr %a5 + %t252 = load { ptr, i64, i64 }, ptr %a3 + store { ptr, i64, i64 } %t251, ptr %a254 + store { ptr, i64, i64 } %t252, ptr %a255 + call void @finch_str_concat(ptr %a253, ptr %a254, ptr %a255) + %t256 = load { ptr, i64, i64 }, ptr %a253 + store { ptr, i64, i64 } %t256, ptr %a258 + store { ptr, i64, i64 } { ptr @.str.6873, i64 1, i64 0 }, ptr %a259 + call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) + %t260 = load { ptr, i64, i64 }, ptr %a257 + %t261 = load i64, ptr %t250 + %t262 = add i64 %t261, 1 + call void @finch_arr_reserve(ptr %t249, i64 %t262, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t263 = load ptr, ptr %t249 + %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i64 %t261 + store { ptr, i64, i64 } %t260, ptr %t264 + store i64 %t262, ptr %t250 + br label %match.end10403 +match.next10448: + br i1 true, label %panic10471, label %ok10472 +panic10471: + call void @finch_panic(ptr @.str.6874, i64 199, ptr @.str.6875) + unreachable +ok10472: + unreachable +match.end10403: + ret void +} + +define internal { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Writer, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Writer zeroinitializer, ptr %a2 + %t3 = load %S.json.Json, ptr %a1 + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.6876, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6877, i64 0, i64 0 }, ptr %a2) + %t4 = getelementptr inbounds %S.json.Writer, ptr %a2, i32 0, i32 0 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6878, i64 0, i64 0 }, ptr %a6 + call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t8 +} + +define internal { ptr, i64, i64 } @finch.json.pretty(%S.json.Json %p0) { +entry: + %a1 = alloca %S.json.Json, align 16 + %a2 = alloca %S.json.Writer, align 16 + %a6 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + store %S.json.Json %p0, ptr %a1 + store %S.json.Writer zeroinitializer, ptr %a2 + %t3 = load %S.json.Json, ptr %a1 + call void @finch.json.write(%S.json.Json %t3, { ptr, i64, i64 } { ptr @.str.6879, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.6880, i64 0, i64 0 }, ptr %a2) + %t4 = getelementptr inbounds %S.json.Writer, ptr %a2, i32 0, i32 0 + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6881, i64 0, i64 0 }, ptr %a6 + call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) + %t8 = load { ptr, i64, i64 }, ptr %a7 + ret { ptr, i64, i64 } %t8 +} + +define internal { ptr, i64, i64 } @finch.json.where(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + %a8 = alloca i64, align 16 + %a37 = alloca { ptr, i64, i64 }, align 16 + %a39 = alloca { ptr, i64, i64 }, align 16 + %a40 = alloca { ptr, i64, i64 }, align 16 + %a41 = alloca { ptr, i64, i64 }, align 16 + %a43 = alloca { ptr, i64, i64 }, align 16 + %a44 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a50 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store i64 1, ptr %a2 + store i64 1, ptr %a3 + %t4 = load ptr, ptr %a1 + %t5 = icmp eq ptr %t4, null + br i1 %t5, label %panic10473, label %ok10474 +panic10473: + call void @finch_panic(ptr @.str.6882, i64 268, ptr @.str.6883) + unreachable +ok10474: + %t6 = getelementptr inbounds %S.json.Reader, ptr %t4, i32 0, i32 1 + %t7 = load i64, ptr %t6 + store i64 0, ptr %a8 + br label %for.cond10475 +for.cond10475: + %t9 = load i64, ptr %a8 + %t10 = icmp slt i64 %t9, %t7 + br i1 %t10, label %for.body10476, label %for.end10478 +for.body10476: + %t11 = load i64, ptr %a8 + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10479, label %ok10480 +panic10479: + call void @finch_panic(ptr @.str.6884, i64 269, ptr @.str.6885) + unreachable +ok10480: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = icmp slt i64 %t11, %t16 + br label %logic.from10481 +logic.from10481: + br i1 %t17, label %logic.rhs10482, label %logic.end10483 +logic.rhs10482: + %t18 = load ptr, ptr %a1 + %t19 = icmp eq ptr %t18, null + br i1 %t19, label %panic10484, label %ok10485 +panic10484: + call void @finch_panic(ptr @.str.6886, i64 269, ptr @.str.6887) + unreachable +ok10485: + %t20 = getelementptr inbounds %S.json.Reader, ptr %t18, i32 0, i32 0 + %t21 = load i64, ptr %a8 + %t22 = load { ptr, i64, i64 }, ptr %t20 + %t23 = extractvalue { ptr, i64, i64 } %t22, 1 + %t24 = icmp uge i64 %t21, %t23 + br i1 %t24, label %range10486, label %inrange10487 +range10486: + call void @finch_panic_index(ptr @.str.6888, i64 269, i64 %t21, i64 %t23) + unreachable +inrange10487: + %t25 = extractvalue { ptr, i64, i64 } %t22, 0 + %t26 = getelementptr inbounds i8, ptr %t25, i64 %t21 + %t27 = load i8, ptr %t26 + %t28 = icmp eq i8 %t27, 10 + br label %logic.rend10488 +logic.rend10488: + br label %logic.end10483 +logic.end10483: + %t29 = phi i1 [ false, %logic.from10481 ], [ %t28, %logic.rend10488 ] + br i1 %t29, label %then10489, label %else10490 +then10489: + %t30 = load i64, ptr %a2 + %t31 = add i64 %t30, 1 + store i64 %t31, ptr %a2 + store i64 1, ptr %a3 + br label %endif10491 +else10490: + %t32 = load i64, ptr %a3 + %t33 = add i64 %t32, 1 + store i64 %t33, ptr %a3 + br label %endif10491 +endif10491: + br label %for.step10477 +for.step10477: + %t34 = load i64, ptr %a8 + %t35 = add i64 %t34, 1 + store i64 %t35, ptr %a8 + br label %for.cond10475 +for.end10478: + %t36 = load i64, ptr %a2 + call void @finch_str_from_int(ptr %a37, i64 %t36) + %t38 = load { ptr, i64, i64 }, ptr %a37 + store { ptr, i64, i64 } { ptr @.str.6889, i64 5, i64 0 }, ptr %a40 + store { ptr, i64, i64 } %t38, ptr %a41 + call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) + %t42 = load { ptr, i64, i64 }, ptr %a39 + store { ptr, i64, i64 } %t42, ptr %a44 + store { ptr, i64, i64 } { ptr @.str.6890, i64 9, i64 0 }, ptr %a45 + call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) + %t46 = load { ptr, i64, i64 }, ptr %a43 + %t47 = load i64, ptr %a3 + call void @finch_str_from_int(ptr %a48, i64 %t47) + %t49 = load { ptr, i64, i64 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a51 + store { ptr, i64, i64 } %t49, ptr %a52 + call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) + %t53 = load { ptr, i64, i64 }, ptr %a50 + ret { ptr, i64, i64 } %t53 +} + +define internal i8 @finch.json.peek(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10492, label %ok10493 +panic10492: + call void @finch_panic(ptr @.str.6891, i64 280, ptr @.str.6892) + unreachable +ok10493: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10494, label %ok10495 +panic10494: + call void @finch_panic(ptr @.str.6893, i64 280, ptr @.str.6894) + unreachable +ok10495: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 0 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp slt i64 %t5, %t10 + br i1 %t11, label %then10496, label %endif10498 +then10496: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10499, label %ok10500 +panic10499: + call void @finch_panic(ptr @.str.6895, i64 281, ptr @.str.6896) + unreachable +ok10500: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10501, label %ok10502 +panic10501: + call void @finch_panic(ptr @.str.6897, i64 281, ptr @.str.6898) + unreachable +ok10502: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load { ptr, i64, i64 }, ptr %t14 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range10503, label %inrange10504 +range10503: + call void @finch_panic_index(ptr @.str.6899, i64 281, i64 %t18, i64 %t20) + unreachable +inrange10504: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 + %t24 = load i8, ptr %t23 + ret i8 %t24 +endif10498: + %t25 = trunc i64 0 to i8 + ret i8 %t25 +} + +define internal void @finch.json.skip_space(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + store ptr %p0, ptr %a1 + br label %while.cond10505 +while.cond10505: + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10508, label %ok10509 +panic10508: + call void @finch_panic(ptr @.str.6900, i64 287, ptr @.str.6901) + unreachable +ok10509: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10510, label %ok10511 +panic10510: + call void @finch_panic(ptr @.str.6902, i64 287, ptr @.str.6903) + unreachable +ok10511: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 0 + %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 + %t10 = load i64, ptr %t9 + %t11 = icmp slt i64 %t5, %t10 + br label %logic.from10512 +logic.from10512: + br i1 %t11, label %logic.rhs10513, label %logic.end10514 +logic.rhs10513: + %t12 = load ptr, ptr %a1 + %t13 = icmp eq ptr %t12, null + br i1 %t13, label %panic10515, label %ok10516 +panic10515: + call void @finch_panic(ptr @.str.6904, i64 287, ptr @.str.6905) + unreachable +ok10516: + %t14 = getelementptr inbounds %S.json.Reader, ptr %t12, i32 0, i32 0 + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10517, label %ok10518 +panic10517: + call void @finch_panic(ptr @.str.6906, i64 287, ptr @.str.6907) + unreachable +ok10518: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load { ptr, i64, i64 }, ptr %t14 + %t20 = extractvalue { ptr, i64, i64 } %t19, 1 + %t21 = icmp uge i64 %t18, %t20 + br i1 %t21, label %range10519, label %inrange10520 +range10519: + call void @finch_panic_index(ptr @.str.6908, i64 287, i64 %t18, i64 %t20) + unreachable +inrange10520: + %t22 = extractvalue { ptr, i64, i64 } %t19, 0 + %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 + %t24 = load i8, ptr %t23 + %t25 = icmp eq i8 %t24, 32 + br label %logic.from10521 +logic.from10521: + br i1 %t25, label %logic.end10523, label %logic.rhs10522 +logic.rhs10522: + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic10524, label %ok10525 +panic10524: + call void @finch_panic(ptr @.str.6909, i64 287, ptr @.str.6910) + unreachable +ok10525: + %t28 = getelementptr inbounds %S.json.Reader, ptr %t26, i32 0, i32 0 + %t29 = load ptr, ptr %a1 + %t30 = icmp eq ptr %t29, null + br i1 %t30, label %panic10526, label %ok10527 +panic10526: + call void @finch_panic(ptr @.str.6911, i64 287, ptr @.str.6912) + unreachable +ok10527: + %t31 = getelementptr inbounds %S.json.Reader, ptr %t29, i32 0, i32 1 + %t32 = load i64, ptr %t31 + %t33 = load { ptr, i64, i64 }, ptr %t28 + %t34 = extractvalue { ptr, i64, i64 } %t33, 1 + %t35 = icmp uge i64 %t32, %t34 + br i1 %t35, label %range10528, label %inrange10529 +range10528: + call void @finch_panic_index(ptr @.str.6913, i64 287, i64 %t32, i64 %t34) + unreachable +inrange10529: + %t36 = extractvalue { ptr, i64, i64 } %t33, 0 + %t37 = getelementptr inbounds i8, ptr %t36, i64 %t32 + %t38 = load i8, ptr %t37 + %t39 = icmp eq i8 %t38, 10 + br label %logic.rend10530 +logic.rend10530: + br label %logic.end10523 +logic.end10523: + %t40 = phi i1 [ true, %logic.from10521 ], [ %t39, %logic.rend10530 ] + br label %logic.from10531 +logic.from10531: + br i1 %t40, label %logic.end10533, label %logic.rhs10532 +logic.rhs10532: + %t41 = load ptr, ptr %a1 + %t42 = icmp eq ptr %t41, null + br i1 %t42, label %panic10534, label %ok10535 +panic10534: + call void @finch_panic(ptr @.str.6914, i64 287, ptr @.str.6915) + unreachable +ok10535: + %t43 = getelementptr inbounds %S.json.Reader, ptr %t41, i32 0, i32 0 + %t44 = load ptr, ptr %a1 + %t45 = icmp eq ptr %t44, null + br i1 %t45, label %panic10536, label %ok10537 +panic10536: + call void @finch_panic(ptr @.str.6916, i64 287, ptr @.str.6917) + unreachable +ok10537: + %t46 = getelementptr inbounds %S.json.Reader, ptr %t44, i32 0, i32 1 + %t47 = load i64, ptr %t46 + %t48 = load { ptr, i64, i64 }, ptr %t43 + %t49 = extractvalue { ptr, i64, i64 } %t48, 1 + %t50 = icmp uge i64 %t47, %t49 + br i1 %t50, label %range10538, label %inrange10539 +range10538: + call void @finch_panic_index(ptr @.str.6918, i64 287, i64 %t47, i64 %t49) + unreachable +inrange10539: + %t51 = extractvalue { ptr, i64, i64 } %t48, 0 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t47 + %t53 = load i8, ptr %t52 + %t54 = icmp eq i8 %t53, 9 + br label %logic.rend10540 +logic.rend10540: + br label %logic.end10533 +logic.end10533: + %t55 = phi i1 [ true, %logic.from10531 ], [ %t54, %logic.rend10540 ] + br label %logic.from10541 +logic.from10541: + br i1 %t55, label %logic.end10543, label %logic.rhs10542 +logic.rhs10542: + %t56 = load ptr, ptr %a1 + %t57 = icmp eq ptr %t56, null + br i1 %t57, label %panic10544, label %ok10545 +panic10544: + call void @finch_panic(ptr @.str.6919, i64 287, ptr @.str.6920) + unreachable +ok10545: + %t58 = getelementptr inbounds %S.json.Reader, ptr %t56, i32 0, i32 0 + %t59 = load ptr, ptr %a1 + %t60 = icmp eq ptr %t59, null + br i1 %t60, label %panic10546, label %ok10547 +panic10546: + call void @finch_panic(ptr @.str.6921, i64 287, ptr @.str.6922) + unreachable +ok10547: + %t61 = getelementptr inbounds %S.json.Reader, ptr %t59, i32 0, i32 1 + %t62 = load i64, ptr %t61 + %t63 = load { ptr, i64, i64 }, ptr %t58 + %t64 = extractvalue { ptr, i64, i64 } %t63, 1 + %t65 = icmp uge i64 %t62, %t64 + br i1 %t65, label %range10548, label %inrange10549 +range10548: + call void @finch_panic_index(ptr @.str.6923, i64 287, i64 %t62, i64 %t64) + unreachable +inrange10549: + %t66 = extractvalue { ptr, i64, i64 } %t63, 0 + %t67 = getelementptr inbounds i8, ptr %t66, i64 %t62 + %t68 = load i8, ptr %t67 + %t69 = icmp eq i8 %t68, 13 + br label %logic.rend10550 +logic.rend10550: + br label %logic.end10543 +logic.end10543: + %t70 = phi i1 [ true, %logic.from10541 ], [ %t69, %logic.rend10550 ] + br label %logic.rend10551 +logic.rend10551: + br label %logic.end10514 +logic.end10514: + %t71 = phi i1 [ false, %logic.from10512 ], [ %t70, %logic.rend10551 ] + br i1 %t71, label %while.body10506, label %while.end10507 +while.body10506: + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic10552, label %ok10553 +panic10552: + call void @finch_panic(ptr @.str.6924, i64 288, ptr @.str.6925) + unreachable +ok10553: + %t74 = getelementptr inbounds %S.json.Reader, ptr %t72, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = add i64 %t75, 1 + store i64 %t76, ptr %t74 + br label %while.cond10505 +while.end10507: + ret void +} + +define internal { ptr, i64, i64 } @finch.json.unexpected(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + %a16 = alloca { ptr, i64, i64 }, align 16 + %a18 = alloca { ptr, i64, i64 }, align 16 + %a19 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a24 = alloca { ptr, i64, i64 }, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a28 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a45 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca { ptr, i64, i64 }, align 16 + %a48 = alloca { ptr, i64, i64 }, align 16 + %a49 = alloca { ptr, i64, i64 }, align 16 + %a51 = alloca { ptr, i64, i64 }, align 16 + %a52 = alloca { ptr, i64, i64 }, align 16 + %a53 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a57 = alloca { ptr, i64, i64 }, align 16 + %a58 = alloca { ptr, i64, i64 }, align 16 + %a60 = alloca { ptr, i64, i64 }, align 16 + %a61 = alloca { ptr, i64, i64 }, align 16 + %a62 = alloca { ptr, i64, i64 }, align 16 + %a66 = alloca { ptr, i64, i64 }, align 16 + %a67 = alloca { ptr, i64, i64 }, align 16 + %a68 = alloca { ptr, i64, i64 }, align 16 + %a70 = alloca { ptr, i64, i64 }, align 16 + %a71 = alloca { ptr, i64, i64 }, align 16 + %a72 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic10554, label %ok10555 +panic10554: + call void @finch_panic(ptr @.str.6926, i64 293, ptr @.str.6927) + unreachable +ok10555: + %t5 = getelementptr inbounds %S.json.Reader, ptr %t3, i32 0, i32 1 + %t6 = load i64, ptr %t5 + %t7 = load ptr, ptr %a1 + %t8 = icmp eq ptr %t7, null + br i1 %t8, label %panic10556, label %ok10557 +panic10556: + call void @finch_panic(ptr @.str.6928, i64 293, ptr @.str.6929) + unreachable +ok10557: + %t9 = getelementptr inbounds %S.json.Reader, ptr %t7, i32 0, i32 0 + %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = icmp sge i64 %t6, %t11 + br i1 %t12, label %then10558, label %endif10560 +then10558: + %t13 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6930, i64 26, i64 0 }, ptr %a15 + store { ptr, i64, i64 } %t13, ptr %a16 + call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) + %t17 = load { ptr, i64, i64 }, ptr %a14 + store { ptr, i64, i64 } %t17, ptr %a19 + store { ptr, i64, i64 } { ptr @.str.6931, i64 12, i64 0 }, ptr %a20 + call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) + %t21 = load { ptr, i64, i64 }, ptr %a18 + %t22 = load ptr, ptr %a1 + %t23 = call { ptr, i64, i64 } @finch.json.where(ptr %t22) + store { ptr, i64, i64 } %t21, ptr %a25 + store { ptr, i64, i64 } %t23, ptr %a26 + call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) + %t27 = load { ptr, i64, i64 }, ptr %a24 + store { ptr, i64, i64 } %t27, ptr %a29 + store { ptr, i64, i64 } { ptr @.str.6932, i64 1, i64 0 }, ptr %a30 + call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) + %t31 = load { ptr, i64, i64 }, ptr %a28 + ret { ptr, i64, i64 } %t31 +endif10560: + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10561, label %ok10562 +panic10561: + call void @finch_panic(ptr @.str.6934, i64 296, ptr @.str.6935) + unreachable +ok10562: + %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 0 + %t35 = load ptr, ptr %a1 + %t36 = icmp eq ptr %t35, null + br i1 %t36, label %panic10563, label %ok10564 +panic10563: + call void @finch_panic(ptr @.str.6936, i64 296, ptr @.str.6937) + unreachable +ok10564: + %t37 = getelementptr inbounds %S.json.Reader, ptr %t35, i32 0, i32 1 + %t38 = load i64, ptr %t37 + %t39 = load { ptr, i64, i64 }, ptr %t34 + %t40 = extractvalue { ptr, i64, i64 } %t39, 1 + %t41 = icmp uge i64 %t38, %t40 + br i1 %t41, label %range10565, label %inrange10566 +range10565: + call void @finch_panic_index(ptr @.str.6938, i64 296, i64 %t38, i64 %t40) + unreachable +inrange10566: + %t42 = extractvalue { ptr, i64, i64 } %t39, 0 + %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 + %t44 = load i8, ptr %t43 + call void @finch_str_from_char(ptr %a45, i8 signext %t44) + %t46 = load { ptr, i64, i64 }, ptr %a45 + store { ptr, i64, i64 } { ptr @.str.6933, i64 13, i64 0 }, ptr %a48 + store { ptr, i64, i64 } %t46, ptr %a49 + call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) + %t50 = load { ptr, i64, i64 }, ptr %a47 + store { ptr, i64, i64 } %t50, ptr %a52 + store { ptr, i64, i64 } { ptr @.str.6939, i64 8, i64 0 }, ptr %a53 + call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) + %t54 = load { ptr, i64, i64 }, ptr %a51 + %t55 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t54, ptr %a57 + store { ptr, i64, i64 } %t55, ptr %a58 + call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) + %t59 = load { ptr, i64, i64 }, ptr %a56 + store { ptr, i64, i64 } %t59, ptr %a61 + store { ptr, i64, i64 } { ptr @.str.6940, i64 12, i64 0 }, ptr %a62 + call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) + %t63 = load { ptr, i64, i64 }, ptr %a60 + %t64 = load ptr, ptr %a1 + %t65 = call { ptr, i64, i64 } @finch.json.where(ptr %t64) + store { ptr, i64, i64 } %t63, ptr %a67 + store { ptr, i64, i64 } %t65, ptr %a68 + call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) + %t69 = load { ptr, i64, i64 }, ptr %a66 + store { ptr, i64, i64 } %t69, ptr %a71 + store { ptr, i64, i64 } { ptr @.str.6941, i64 1, i64 0 }, ptr %a72 + call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) + %t73 = load { ptr, i64, i64 }, ptr %a70 + ret { ptr, i64, i64 } %t73 +} + +define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a20 = alloca { ptr, i64, i64 }, align 16 + %a21 = alloca { ptr, i64, i64 }, align 16 + %a35 = alloca { ptr, i64, i64 }, align 16 + %a36 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = icmp eq ptr %t3, null + br i1 %t4, label %panic10567, label %ok10568 +panic10567: + call void @finch_panic(ptr @.str.6942, i64 301, ptr @.str.6943) + unreachable +ok10568: + %t5 = getelementptr inbounds %S.json.Reader, ptr %t3, i32 0, i32 0 + %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 + %t7 = load i64, ptr %t6 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic10569, label %ok10570 +panic10569: + call void @finch_panic(ptr @.str.6944, i64 301, ptr @.str.6945) + unreachable +ok10570: + %t10 = getelementptr inbounds %S.json.Reader, ptr %t8, i32 0, i32 1 + %t11 = load i64, ptr %t10 + %t12 = sub i64 %t7, %t11 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t12, %t14 + br label %logic.from10571 +logic.from10571: + br i1 %t15, label %logic.rhs10572, label %logic.end10573 +logic.rhs10572: + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic10574, label %ok10575 +panic10574: + call void @finch_panic(ptr @.str.6946, i64 301, ptr @.str.6947) + unreachable +ok10575: + %t18 = getelementptr inbounds %S.json.Reader, ptr %t16, i32 0, i32 0 + %t19 = load { ptr, i64, i64 }, ptr %t18 + store { ptr, i64, i64 } %t19, ptr %a20 + %t22 = load ptr, ptr %a1 + %t23 = icmp eq ptr %t22, null + br i1 %t23, label %panic10576, label %ok10577 +panic10576: + call void @finch_panic(ptr @.str.6949, i64 301, ptr @.str.6950) + unreachable +ok10577: + %t24 = getelementptr inbounds %S.json.Reader, ptr %t22, i32 0, i32 1 + %t25 = load i64, ptr %t24 + %t26 = load ptr, ptr %a1 + %t27 = icmp eq ptr %t26, null + br i1 %t27, label %panic10578, label %ok10579 +panic10578: + call void @finch_panic(ptr @.str.6951, i64 301, ptr @.str.6952) + unreachable +ok10579: + %t28 = getelementptr inbounds %S.json.Reader, ptr %t26, i32 0, i32 1 + %t29 = load i64, ptr %t28 + %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = add i64 %t29, %t31 + call void @finch_str_sub(ptr %a21, ptr %a20, i64 %t25, i64 %t32, ptr @.str.6948, i64 301) + %t33 = load { ptr, i64, i64 }, ptr %a21 + %t34 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } %t33, ptr %a35 + store { ptr, i64, i64 } %t34, ptr %a36 + %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) + %t38 = icmp ne i32 %t37, 0 + br label %logic.rend10580 +logic.rend10580: + br label %logic.end10573 +logic.end10573: + %t39 = phi i1 [ false, %logic.from10571 ], [ %t38, %logic.rend10580 ] + ret i1 %t39 +} + +define internal { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %p0, { ptr, i64, i64 } %p1) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a9 = alloca { ptr, i64, i64 }, align 16 + %a10 = alloca { ptr, i64, i64 }, align 16 + %a11 = alloca { ptr, i64, i64 }, align 16 + %a13 = alloca { ptr, i64, i64 }, align 16 + %a14 = alloca { ptr, i64, i64 }, align 16 + %a15 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + store { ptr, i64, i64 } %p1, ptr %a2 + %t3 = load ptr, ptr %a1 + %t4 = load { ptr, i64, i64 }, ptr %a2 + %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) + %t6 = xor i1 %t5, true + br i1 %t6, label %then10581, label %endif10583 +then10581: + %t7 = load ptr, ptr %a1 + %t8 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } { ptr @.str.6953, i64 1, i64 0 }, ptr %a10 + store { ptr, i64, i64 } %t8, ptr %a11 + call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) + %t12 = load { ptr, i64, i64 }, ptr %a9 + store { ptr, i64, i64 } %t12, ptr %a14 + store { ptr, i64, i64 } { ptr @.str.6954, i64 1, i64 0 }, ptr %a15 + call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) + %t16 = load { ptr, i64, i64 }, ptr %a13 + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t16) + %t18 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t17, 2 + ret { i1, i8, { ptr, i64, i64 } } %t18 +endif10583: + %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t20 = load i64, ptr %t19 + %t21 = load ptr, ptr %a1 + %t22 = icmp eq ptr %t21, null + br i1 %t22, label %panic10584, label %ok10585 +panic10584: + call void @finch_panic(ptr @.str.6955, i64 308, ptr @.str.6956) + unreachable +ok10585: + %t23 = getelementptr inbounds %S.json.Reader, ptr %t21, i32 0, i32 1 + %t24 = load i64, ptr %t23 + %t25 = add i64 %t24, %t20 + store i64 %t25, ptr %t23 + ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } +} + +define internal i64 @finch.json.hex_value(i8 %p0) { +entry: + %a1 = alloca i8, align 16 + store i8 %p0, ptr %a1 + %t2 = load i8, ptr %a1 + %t3 = icmp uge i8 %t2, 48 + br label %logic.from10586 +logic.from10586: + br i1 %t3, label %logic.rhs10587, label %logic.end10588 +logic.rhs10587: + %t4 = load i8, ptr %a1 + %t5 = icmp ule i8 %t4, 57 + br label %logic.rend10589 +logic.rend10589: + br label %logic.end10588 +logic.end10588: + %t6 = phi i1 [ false, %logic.from10586 ], [ %t5, %logic.rend10589 ] + br i1 %t6, label %then10590, label %endif10592 +then10590: + %t7 = load i8, ptr %a1 + %t8 = zext i8 %t7 to i64 + %t9 = zext i8 48 to i64 + %t10 = sub i64 %t8, %t9 + ret i64 %t10 +endif10592: + %t11 = load i8, ptr %a1 + %t12 = icmp uge i8 %t11, 97 + br label %logic.from10593 +logic.from10593: + br i1 %t12, label %logic.rhs10594, label %logic.end10595 +logic.rhs10594: + %t13 = load i8, ptr %a1 + %t14 = icmp ule i8 %t13, 102 + br label %logic.rend10596 +logic.rend10596: + br label %logic.end10595 +logic.end10595: + %t15 = phi i1 [ false, %logic.from10593 ], [ %t14, %logic.rend10596 ] + br i1 %t15, label %then10597, label %endif10599 +then10597: + %t16 = load i8, ptr %a1 + %t17 = zext i8 %t16 to i64 + %t18 = zext i8 97 to i64 + %t19 = sub i64 %t17, %t18 + %t20 = add i64 %t19, 10 + ret i64 %t20 +endif10599: + %t21 = load i8, ptr %a1 + %t22 = icmp uge i8 %t21, 65 + br label %logic.from10600 +logic.from10600: + br i1 %t22, label %logic.rhs10601, label %logic.end10602 +logic.rhs10601: + %t23 = load i8, ptr %a1 + %t24 = icmp ule i8 %t23, 70 + br label %logic.rend10603 +logic.rend10603: + br label %logic.end10602 +logic.end10602: + %t25 = phi i1 [ false, %logic.from10600 ], [ %t24, %logic.rend10603 ] + br i1 %t25, label %then10604, label %endif10606 +then10604: + %t26 = load i8, ptr %a1 + %t27 = zext i8 %t26 to i64 + %t28 = zext i8 65 to i64 + %t29 = sub i64 %t27, %t28 + %t30 = add i64 %t29, 10 + ret i64 %t30 +endif10606: + ret i64 -1 +} + +define internal { ptr, i64, i64 } @finch.json.utf8(i64 %p0) { +entry: + %a1 = alloca i64, align 16 + %a2 = alloca { ptr, i64, i64 }, align 16 + %a101 = alloca { ptr, i64, i64 }, align 16 + %a102 = alloca { ptr, i64, i64 }, align 16 + store i64 %p0, ptr %a1 + store { ptr, i64, i64 } zeroinitializer, ptr %a2 + %t3 = load i64, ptr %a1 + %t4 = icmp slt i64 %t3, 128 + br i1 %t4, label %then10607, label %else10608 +then10607: + %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t6 = load i64, ptr %a1 + %t7 = trunc i64 %t6 to i8 + %t8 = load i64, ptr %t5 + %t9 = add i64 %t8, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t9, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t10 = load ptr, ptr %a2 + %t11 = getelementptr inbounds i8, ptr %t10, i64 %t8 + store i8 %t7, ptr %t11 + store i64 %t9, ptr %t5 + br label %endif10609 +else10608: + %t12 = load i64, ptr %a1 + %t13 = icmp slt i64 %t12, 2048 + br i1 %t13, label %then10610, label %else10611 +then10610: + %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t15 = load i64, ptr %a1 + %t16 = sdiv i64 %t15, 64 + %t17 = add i64 192, %t16 + %t18 = trunc i64 %t17 to i8 + %t19 = load i64, ptr %t14 + %t20 = add i64 %t19, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t20, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t21 = load ptr, ptr %a2 + %t22 = getelementptr inbounds i8, ptr %t21, i64 %t19 + store i8 %t18, ptr %t22 + store i64 %t20, ptr %t14 + %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t24 = load i64, ptr %a1 + %t25 = srem i64 %t24, 64 + %t26 = add i64 128, %t25 + %t27 = trunc i64 %t26 to i8 + %t28 = load i64, ptr %t23 + %t29 = add i64 %t28, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t29, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t30 = load ptr, ptr %a2 + %t31 = getelementptr inbounds i8, ptr %t30, i64 %t28 + store i8 %t27, ptr %t31 + store i64 %t29, ptr %t23 + br label %endif10612 +else10611: + %t32 = load i64, ptr %a1 + %t33 = icmp slt i64 %t32, 65536 + br i1 %t33, label %then10613, label %else10614 +then10613: + %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t35 = load i64, ptr %a1 + %t36 = sdiv i64 %t35, 4096 + %t37 = add i64 224, %t36 + %t38 = trunc i64 %t37 to i8 + %t39 = load i64, ptr %t34 + %t40 = add i64 %t39, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t40, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t41 = load ptr, ptr %a2 + %t42 = getelementptr inbounds i8, ptr %t41, i64 %t39 + store i8 %t38, ptr %t42 + store i64 %t40, ptr %t34 + %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t44 = load i64, ptr %a1 + %t45 = sdiv i64 %t44, 64 + %t46 = srem i64 %t45, 64 + %t47 = add i64 128, %t46 + %t48 = trunc i64 %t47 to i8 + %t49 = load i64, ptr %t43 + %t50 = add i64 %t49, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t50, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t51 = load ptr, ptr %a2 + %t52 = getelementptr inbounds i8, ptr %t51, i64 %t49 + store i8 %t48, ptr %t52 + store i64 %t50, ptr %t43 + %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t54 = load i64, ptr %a1 + %t55 = srem i64 %t54, 64 + %t56 = add i64 128, %t55 + %t57 = trunc i64 %t56 to i8 + %t58 = load i64, ptr %t53 + %t59 = add i64 %t58, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t59, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t60 = load ptr, ptr %a2 + %t61 = getelementptr inbounds i8, ptr %t60, i64 %t58 + store i8 %t57, ptr %t61 + store i64 %t59, ptr %t53 + br label %endif10615 +else10614: + %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t63 = load i64, ptr %a1 + %t64 = sdiv i64 %t63, 262144 + %t65 = add i64 240, %t64 + %t66 = trunc i64 %t65 to i8 + %t67 = load i64, ptr %t62 + %t68 = add i64 %t67, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t68, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t69 = load ptr, ptr %a2 + %t70 = getelementptr inbounds i8, ptr %t69, i64 %t67 + store i8 %t66, ptr %t70 + store i64 %t68, ptr %t62 + %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t72 = load i64, ptr %a1 + %t73 = sdiv i64 %t72, 4096 + %t74 = srem i64 %t73, 64 + %t75 = add i64 128, %t74 + %t76 = trunc i64 %t75 to i8 + %t77 = load i64, ptr %t71 + %t78 = add i64 %t77, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t78, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t79 = load ptr, ptr %a2 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t77 + store i8 %t76, ptr %t80 + store i64 %t78, ptr %t71 + %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t82 = load i64, ptr %a1 + %t83 = sdiv i64 %t82, 64 + %t84 = srem i64 %t83, 64 + %t85 = add i64 128, %t84 + %t86 = trunc i64 %t85 to i8 + %t87 = load i64, ptr %t81 + %t88 = add i64 %t87, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t88, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t89 = load ptr, ptr %a2 + %t90 = getelementptr inbounds i8, ptr %t89, i64 %t87 + store i8 %t86, ptr %t90 + store i64 %t88, ptr %t81 + %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 + %t92 = load i64, ptr %a1 + %t93 = srem i64 %t92, 64 + %t94 = add i64 128, %t93 + %t95 = trunc i64 %t94 to i8 + %t96 = load i64, ptr %t91 + %t97 = add i64 %t96, 1 + call void @finch_arr_reserve(ptr %a2, i64 %t97, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) + %t98 = load ptr, ptr %a2 + %t99 = getelementptr inbounds i8, ptr %t98, i64 %t96 + store i8 %t95, ptr %t99 + store i64 %t97, ptr %t91 + br label %endif10615 +endif10615: + br label %endif10612 +endif10612: + br label %endif10609 +endif10609: + %t100 = load { ptr, i64, i64 }, ptr %a2 + store { ptr, i64, i64 } zeroinitializer, ptr %a101 + store { ptr, i64, i64 } %t100, ptr %a102 + call void @finch_str_from_bytes(ptr %a101, ptr %a102) + %t103 = load { ptr, i64, i64 }, ptr %a101 + ret { ptr, i64, i64 } %t103 +} + +define internal { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a2 = alloca i64, align 16 + %a3 = alloca i64, align 16 + store ptr %p0, ptr %a1 + store i64 0, ptr %a2 + store i64 0, ptr %a3 + br label %for.cond10616 +for.cond10616: + %t4 = load i64, ptr %a3 + %t5 = icmp slt i64 %t4, 4 + br i1 %t5, label %for.body10617, label %for.end10619 +for.body10617: + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10620, label %ok10621 +panic10620: + call void @finch_panic(ptr @.str.6957, i64 348, ptr @.str.6958) + unreachable +ok10621: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10622, label %ok10623 +panic10622: + call void @finch_panic(ptr @.str.6959, i64 348, ptr @.str.6960) + unreachable +ok10623: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 0 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t9, %t14 + br label %logic.from10624 +logic.from10624: + br i1 %t15, label %logic.end10626, label %logic.rhs10625 +logic.rhs10625: + %t16 = load ptr, ptr %a1 + %t17 = icmp eq ptr %t16, null + br i1 %t17, label %panic10627, label %ok10628 +panic10627: + call void @finch_panic(ptr @.str.6961, i64 348, ptr @.str.6962) + unreachable +ok10628: + %t18 = getelementptr inbounds %S.json.Reader, ptr %t16, i32 0, i32 0 + %t19 = load ptr, ptr %a1 + %t20 = icmp eq ptr %t19, null + br i1 %t20, label %panic10629, label %ok10630 +panic10629: + call void @finch_panic(ptr @.str.6963, i64 348, ptr @.str.6964) + unreachable +ok10630: + %t21 = getelementptr inbounds %S.json.Reader, ptr %t19, i32 0, i32 1 + %t22 = load i64, ptr %t21 + %t23 = load { ptr, i64, i64 }, ptr %t18 + %t24 = extractvalue { ptr, i64, i64 } %t23, 1 + %t25 = icmp uge i64 %t22, %t24 + br i1 %t25, label %range10631, label %inrange10632 +range10631: + call void @finch_panic_index(ptr @.str.6965, i64 348, i64 %t22, i64 %t24) + unreachable +inrange10632: + %t26 = extractvalue { ptr, i64, i64 } %t23, 0 + %t27 = getelementptr inbounds i8, ptr %t26, i64 %t22 + %t28 = load i8, ptr %t27 + %t29 = call i64 @finch.json.hex_value(i8 %t28) + %t30 = icmp slt i64 %t29, 0 + br label %logic.rend10633 +logic.rend10633: + br label %logic.end10626 +logic.end10626: + %t31 = phi i1 [ true, %logic.from10624 ], [ %t30, %logic.rend10633 ] + br i1 %t31, label %then10634, label %endif10636 +then10634: + %t32 = load ptr, ptr %a1 + %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.6966, i64 19, i64 0 }) + %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 + ret { i1, i64, { ptr, i64, i64 } } %t34 +endif10636: + %t35 = load i64, ptr %a2 + %t36 = mul i64 %t35, 16 + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic10637, label %ok10638 +panic10637: + call void @finch_panic(ptr @.str.6967, i64 351, ptr @.str.6968) + unreachable +ok10638: + %t39 = getelementptr inbounds %S.json.Reader, ptr %t37, i32 0, i32 0 + %t40 = load ptr, ptr %a1 + %t41 = icmp eq ptr %t40, null + br i1 %t41, label %panic10639, label %ok10640 +panic10639: + call void @finch_panic(ptr @.str.6969, i64 351, ptr @.str.6970) + unreachable +ok10640: + %t42 = getelementptr inbounds %S.json.Reader, ptr %t40, i32 0, i32 1 + %t43 = load i64, ptr %t42 + %t44 = load { ptr, i64, i64 }, ptr %t39 + %t45 = extractvalue { ptr, i64, i64 } %t44, 1 + %t46 = icmp uge i64 %t43, %t45 + br i1 %t46, label %range10641, label %inrange10642 +range10641: + call void @finch_panic_index(ptr @.str.6971, i64 351, i64 %t43, i64 %t45) + unreachable +inrange10642: + %t47 = extractvalue { ptr, i64, i64 } %t44, 0 + %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 + %t49 = load i8, ptr %t48 + %t50 = call i64 @finch.json.hex_value(i8 %t49) + %t51 = add i64 %t36, %t50 + store i64 %t51, ptr %a2 + %t52 = load ptr, ptr %a1 + %t53 = icmp eq ptr %t52, null + br i1 %t53, label %panic10643, label %ok10644 +panic10643: + call void @finch_panic(ptr @.str.6972, i64 352, ptr @.str.6973) + unreachable +ok10644: + %t54 = getelementptr inbounds %S.json.Reader, ptr %t52, i32 0, i32 1 + %t55 = load i64, ptr %t54 + %t56 = add i64 %t55, 1 + store i64 %t56, ptr %t54 + br label %for.step10618 +for.step10618: + %t57 = load i64, ptr %a3 + %t58 = add i64 %t57, 1 + store i64 %t58, ptr %a3 + br label %for.cond10616 +for.end10619: + %t59 = load i64, ptr %a2 + %t60 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t61 = insertvalue { i1, i64, { ptr, i64, i64 } } %t60, i64 %t59, 1 + ret { i1, i64, { ptr, i64, i64 } } %t61 +} + +define internal { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a7 = alloca { ptr, i64, i64 }, align 16 + %a12 = alloca i64, align 16 + %a25 = alloca { ptr, i64, i64 }, align 16 + %a26 = alloca { ptr, i64, i64 }, align 16 + %a27 = alloca { ptr, i64, i64 }, align 16 + %a29 = alloca { ptr, i64, i64 }, align 16 + %a30 = alloca { ptr, i64, i64 }, align 16 + %a31 = alloca { ptr, i64, i64 }, align 16 + %a47 = alloca i8, align 16 + %a55 = alloca { ptr, i64, i64 }, align 16 + %a56 = alloca { ptr, i64, i64 }, align 16 + %a73 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca { ptr, i64, i64 }, align 16 + %a83 = alloca { ptr, i64, i64 }, align 16 + %a84 = alloca { ptr, i64, i64 }, align 16 + %a85 = alloca { ptr, i64, i64 }, align 16 + %a87 = alloca { ptr, i64, i64 }, align 16 + %a88 = alloca { ptr, i64, i64 }, align 16 + %a89 = alloca { ptr, i64, i64 }, align 16 + %a104 = alloca { ptr, i64, i64 }, align 16 + %a105 = alloca { ptr, i64, i64 }, align 16 + %a123 = alloca i8, align 16 + %a176 = alloca { ptr, i64, i64 }, align 16 + %a191 = alloca i64, align 16 + %a212 = alloca i64, align 16 + %a228 = alloca { ptr, i64, i64 }, align 16 + %a230 = alloca { ptr, i64, i64 }, align 16 + %a231 = alloca { ptr, i64, i64 }, align 16 + %a232 = alloca { ptr, i64, i64 }, align 16 + %a234 = alloca { ptr, i64, i64 }, align 16 + %a235 = alloca { ptr, i64, i64 }, align 16 + %a236 = alloca { ptr, i64, i64 }, align 16 + %a240 = alloca { ptr, i64, i64 }, align 16 + %a241 = alloca { ptr, i64, i64 }, align 16 + %a242 = alloca { ptr, i64, i64 }, align 16 + %a244 = alloca { ptr, i64, i64 }, align 16 + %a245 = alloca { ptr, i64, i64 }, align 16 + %a246 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10645, label %ok10646 +panic10645: + call void @finch_panic(ptr @.str.6974, i64 358, ptr @.str.6975) + unreachable +ok10646: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + %t6 = add i64 %t5, 1 + store i64 %t6, ptr %t4 + store { ptr, i64, i64 } zeroinitializer, ptr %a7 + %t8 = load ptr, ptr %a1 + %t9 = icmp eq ptr %t8, null + br i1 %t9, label %panic10647, label %ok10648 +panic10647: + call void @finch_panic(ptr @.str.6976, i64 360, ptr @.str.6977) + unreachable +ok10648: + %t10 = getelementptr inbounds %S.json.Reader, ptr %t8, i32 0, i32 1 + %t11 = load i64, ptr %t10 + store i64 %t11, ptr %a12 + br label %while.cond10649 +while.cond10649: + br label %while.body10650 +while.body10650: + %t13 = load ptr, ptr %a1 + %t14 = icmp eq ptr %t13, null + br i1 %t14, label %panic10652, label %ok10653 +panic10652: + call void @finch_panic(ptr @.str.6978, i64 362, ptr @.str.6979) + unreachable +ok10653: + %t15 = getelementptr inbounds %S.json.Reader, ptr %t13, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = load ptr, ptr %a1 + %t18 = icmp eq ptr %t17, null + br i1 %t18, label %panic10654, label %ok10655 +panic10654: + call void @finch_panic(ptr @.str.6980, i64 362, ptr @.str.6981) + unreachable +ok10655: + %t19 = getelementptr inbounds %S.json.Reader, ptr %t17, i32 0, i32 0 + %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 + %t21 = load i64, ptr %t20 + %t22 = icmp sge i64 %t16, %t21 + br i1 %t22, label %then10656, label %endif10658 +then10656: + %t23 = load ptr, ptr %a1 + %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) + store { ptr, i64, i64 } { ptr @.str.6982, i64 30, i64 0 }, ptr %a26 + store { ptr, i64, i64 } %t24, ptr %a27 + call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) + %t28 = load { ptr, i64, i64 }, ptr %a25 + store { ptr, i64, i64 } %t28, ptr %a30 + store { ptr, i64, i64 } { ptr @.str.6983, i64 1, i64 0 }, ptr %a31 + call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) + %t32 = load { ptr, i64, i64 }, ptr %a29 + %t33 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t32, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t33 +endif10658: + %t34 = load ptr, ptr %a1 + %t35 = icmp eq ptr %t34, null + br i1 %t35, label %panic10659, label %ok10660 +panic10659: + call void @finch_panic(ptr @.str.6984, i64 365, ptr @.str.6985) + unreachable +ok10660: + %t36 = getelementptr inbounds %S.json.Reader, ptr %t34, i32 0, i32 0 + %t37 = load ptr, ptr %a1 + %t38 = icmp eq ptr %t37, null + br i1 %t38, label %panic10661, label %ok10662 +panic10661: + call void @finch_panic(ptr @.str.6986, i64 365, ptr @.str.6987) + unreachable +ok10662: + %t39 = getelementptr inbounds %S.json.Reader, ptr %t37, i32 0, i32 1 + %t40 = load i64, ptr %t39 + %t41 = load { ptr, i64, i64 }, ptr %t36 + %t42 = extractvalue { ptr, i64, i64 } %t41, 1 + %t43 = icmp uge i64 %t40, %t42 + br i1 %t43, label %range10663, label %inrange10664 +range10663: + call void @finch_panic_index(ptr @.str.6988, i64 365, i64 %t40, i64 %t42) + unreachable +inrange10664: + %t44 = extractvalue { ptr, i64, i64 } %t41, 0 + %t45 = getelementptr inbounds i8, ptr %t44, i64 %t40 + %t46 = load i8, ptr %t45 + store i8 %t46, ptr %a47 + %t48 = load i8, ptr %a47 + %t49 = icmp eq i8 %t48, 34 + br i1 %t49, label %then10665, label %endif10667 +then10665: + %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t51 = load ptr, ptr %a1 + %t52 = icmp eq ptr %t51, null + br i1 %t52, label %panic10668, label %ok10669 +panic10668: + call void @finch_panic(ptr @.str.6989, i64 367, ptr @.str.6990) + unreachable +ok10669: + %t53 = getelementptr inbounds %S.json.Reader, ptr %t51, i32 0, i32 0 + %t54 = load { ptr, i64, i64 }, ptr %t53 + store { ptr, i64, i64 } %t54, ptr %a55 + %t57 = load i64, ptr %a12 + %t58 = load ptr, ptr %a1 + %t59 = icmp eq ptr %t58, null + br i1 %t59, label %panic10670, label %ok10671 +panic10670: + call void @finch_panic(ptr @.str.6992, i64 367, ptr @.str.6993) + unreachable +ok10671: + %t60 = getelementptr inbounds %S.json.Reader, ptr %t58, i32 0, i32 1 + %t61 = load i64, ptr %t60 + call void @finch_str_sub(ptr %a56, ptr %a55, i64 %t57, i64 %t61, ptr @.str.6991, i64 367) + %t62 = load { ptr, i64, i64 }, ptr %a56 + %t63 = load i64, ptr %t50 + %t64 = add i64 %t63, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t64, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t65 = load ptr, ptr %a7 + %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i64 %t63 + store { ptr, i64, i64 } %t62, ptr %t66 + store i64 %t64, ptr %t50 + %t67 = load ptr, ptr %a1 + %t68 = icmp eq ptr %t67, null + br i1 %t68, label %panic10672, label %ok10673 +panic10672: + call void @finch_panic(ptr @.str.6994, i64 368, ptr @.str.6995) + unreachable +ok10673: + %t69 = getelementptr inbounds %S.json.Reader, ptr %t67, i32 0, i32 1 + %t70 = load i64, ptr %t69 + %t71 = add i64 %t70, 1 + store i64 %t71, ptr %t69 + %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + store { ptr, i64, i64 } { ptr @.str.6996, i64 0, i64 0 }, ptr %a73 + call void @finch_str_join(ptr %a74, ptr %a7, ptr %a73) + %t75 = load { ptr, i64, i64 }, ptr %a74 + %t76 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t77 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t76, { ptr, i64, i64 } %t75, 1 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t77 +endif10667: + %t78 = load i8, ptr %a47 + %t79 = zext i8 %t78 to i64 + %t80 = icmp slt i64 %t79, 32 + br i1 %t80, label %then10674, label %endif10676 +then10674: + %t81 = load ptr, ptr %a1 + %t82 = call { ptr, i64, i64 } @finch.json.where(ptr %t81) + store { ptr, i64, i64 } { ptr @.str.6997, i64 55, i64 0 }, ptr %a84 + store { ptr, i64, i64 } %t82, ptr %a85 + call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) + %t86 = load { ptr, i64, i64 }, ptr %a83 + store { ptr, i64, i64 } %t86, ptr %a88 + store { ptr, i64, i64 } { ptr @.str.6998, i64 1, i64 0 }, ptr %a89 + call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) + %t90 = load { ptr, i64, i64 }, ptr %a87 + %t91 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t90, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t91 +endif10676: + %t92 = load i8, ptr %a47 + %t93 = icmp ne i8 %t92, 92 + br i1 %t93, label %then10677, label %endif10679 +then10677: + %t94 = load ptr, ptr %a1 + %t95 = icmp eq ptr %t94, null + br i1 %t95, label %panic10680, label %ok10681 +panic10680: + call void @finch_panic(ptr @.str.6999, i64 375, ptr @.str.7000) + unreachable +ok10681: + %t96 = getelementptr inbounds %S.json.Reader, ptr %t94, i32 0, i32 1 + %t97 = load i64, ptr %t96 + %t98 = add i64 %t97, 1 + store i64 %t98, ptr %t96 + br label %while.cond10649 +endif10679: + %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t100 = load ptr, ptr %a1 + %t101 = icmp eq ptr %t100, null + br i1 %t101, label %panic10682, label %ok10683 +panic10682: + call void @finch_panic(ptr @.str.7001, i64 378, ptr @.str.7002) + unreachable +ok10683: + %t102 = getelementptr inbounds %S.json.Reader, ptr %t100, i32 0, i32 0 + %t103 = load { ptr, i64, i64 }, ptr %t102 + store { ptr, i64, i64 } %t103, ptr %a104 + %t106 = load i64, ptr %a12 + %t107 = load ptr, ptr %a1 + %t108 = icmp eq ptr %t107, null + br i1 %t108, label %panic10684, label %ok10685 +panic10684: + call void @finch_panic(ptr @.str.7004, i64 378, ptr @.str.7005) + unreachable +ok10685: + %t109 = getelementptr inbounds %S.json.Reader, ptr %t107, i32 0, i32 1 + %t110 = load i64, ptr %t109 + call void @finch_str_sub(ptr %a105, ptr %a104, i64 %t106, i64 %t110, ptr @.str.7003, i64 378) + %t111 = load { ptr, i64, i64 }, ptr %a105 + %t112 = load i64, ptr %t99 + %t113 = add i64 %t112, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t113, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t114 = load ptr, ptr %a7 + %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 + store { ptr, i64, i64 } %t111, ptr %t115 + store i64 %t113, ptr %t99 + %t116 = load ptr, ptr %a1 + %t117 = icmp eq ptr %t116, null + br i1 %t117, label %panic10686, label %ok10687 +panic10686: + call void @finch_panic(ptr @.str.7006, i64 379, ptr @.str.7007) + unreachable +ok10687: + %t118 = getelementptr inbounds %S.json.Reader, ptr %t116, i32 0, i32 1 + %t119 = load i64, ptr %t118 + %t120 = add i64 %t119, 1 + store i64 %t120, ptr %t118 + %t121 = load ptr, ptr %a1 + %t122 = call i8 @finch.json.peek(ptr %t121) + store i8 %t122, ptr %a123 + %t124 = load ptr, ptr %a1 + %t125 = icmp eq ptr %t124, null + br i1 %t125, label %panic10688, label %ok10689 +panic10688: + call void @finch_panic(ptr @.str.7008, i64 381, ptr @.str.7009) + unreachable +ok10689: + %t126 = getelementptr inbounds %S.json.Reader, ptr %t124, i32 0, i32 1 + %t127 = load i64, ptr %t126 + %t128 = add i64 %t127, 1 + store i64 %t128, ptr %t126 + %t129 = load i8, ptr %a123 + %t130 = icmp eq i8 %t129, 110 + br i1 %t130, label %then10690, label %else10691 +then10690: + %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t132 = load i64, ptr %t131 + %t133 = add i64 %t132, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t133, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t134 = load ptr, ptr %a7 + %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 %t132 + store { ptr, i64, i64 } { ptr @.str.7010, i64 1, i64 0 }, ptr %t135 + store i64 %t133, ptr %t131 + br label %endif10692 +else10691: + %t136 = load i8, ptr %a123 + %t137 = icmp eq i8 %t136, 116 + br i1 %t137, label %then10693, label %else10694 +then10693: + %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t139 = load i64, ptr %t138 + %t140 = add i64 %t139, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t141 = load ptr, ptr %a7 + %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 + store { ptr, i64, i64 } { ptr @.str.7011, i64 1, i64 0 }, ptr %t142 + store i64 %t140, ptr %t138 + br label %endif10695 +else10694: + %t143 = load i8, ptr %a123 + %t144 = icmp eq i8 %t143, 114 + br i1 %t144, label %then10696, label %else10697 +then10696: + %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t146 = load i64, ptr %t145 + %t147 = add i64 %t146, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t147, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t148 = load ptr, ptr %a7 + %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 %t146 + store { ptr, i64, i64 } { ptr @.str.7012, i64 1, i64 0 }, ptr %t149 + store i64 %t147, ptr %t145 + br label %endif10698 +else10697: + %t150 = load i8, ptr %a123 + %t151 = icmp eq i8 %t150, 98 + br i1 %t151, label %then10699, label %else10700 +then10699: + %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t153 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) + %t154 = load i64, ptr %t152 + %t155 = add i64 %t154, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t155, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t156 = load ptr, ptr %a7 + %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i64 %t154 + store { ptr, i64, i64 } %t153, ptr %t157 + store i64 %t155, ptr %t152 + br label %endif10701 +else10700: + %t158 = load i8, ptr %a123 + %t159 = icmp eq i8 %t158, 102 + br i1 %t159, label %then10702, label %else10703 +then10702: + %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t161 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) + %t162 = load i64, ptr %t160 + %t163 = add i64 %t162, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t163, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t164 = load ptr, ptr %a7 + %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i64 %t162 + store { ptr, i64, i64 } %t161, ptr %t165 + store i64 %t163, ptr %t160 + br label %endif10704 +else10703: + %t166 = load i8, ptr %a123 + %t167 = icmp eq i8 %t166, 34 + br label %logic.from10705 +logic.from10705: + br i1 %t167, label %logic.end10707, label %logic.rhs10706 +logic.rhs10706: + %t168 = load i8, ptr %a123 + %t169 = icmp eq i8 %t168, 92 + br label %logic.rend10708 +logic.rend10708: + br label %logic.end10707 +logic.end10707: + %t170 = phi i1 [ true, %logic.from10705 ], [ %t169, %logic.rend10708 ] + br label %logic.from10709 +logic.from10709: + br i1 %t170, label %logic.end10711, label %logic.rhs10710 +logic.rhs10710: + %t171 = load i8, ptr %a123 + %t172 = icmp eq i8 %t171, 47 + br label %logic.rend10712 +logic.rend10712: + br label %logic.end10711 +logic.end10711: + %t173 = phi i1 [ true, %logic.from10709 ], [ %t172, %logic.rend10712 ] + br i1 %t173, label %then10713, label %else10714 +then10713: + %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t175 = load i8, ptr %a123 + call void @finch_str_from_char(ptr %a176, i8 signext %t175) + %t177 = load { ptr, i64, i64 }, ptr %a176 + %t178 = load i64, ptr %t174 + %t179 = add i64 %t178, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t179, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t180 = load ptr, ptr %a7 + %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i64 %t178 + store { ptr, i64, i64 } %t177, ptr %t181 + store i64 %t179, ptr %t174 + br label %endif10715 +else10714: + %t182 = load i8, ptr %a123 + %t183 = icmp eq i8 %t182, 117 + br i1 %t183, label %then10716, label %else10717 +then10716: + %t184 = load ptr, ptr %a1 + %t185 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t184) + %t186 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 0 + %t187 = xor i1 %t186, true + %t188 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 2 + %t189 = extractvalue { i1, i64, { ptr, i64, i64 } } %t185, 1 + br i1 %t187, label %try.failed10719, label %try.ok10720 +try.failed10719: + %t190 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t188, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t190 +try.ok10720: + store i64 %t189, ptr %a191 + %t192 = load i64, ptr %a191 + %t193 = icmp sge i64 %t192, 55296 + br label %logic.from10721 +logic.from10721: + br i1 %t193, label %logic.rhs10722, label %logic.end10723 +logic.rhs10722: + %t194 = load i64, ptr %a191 + %t195 = icmp slt i64 %t194, 56320 + br label %logic.rend10724 +logic.rend10724: + br label %logic.end10723 +logic.end10723: + %t196 = phi i1 [ false, %logic.from10721 ], [ %t195, %logic.rend10724 ] + br label %logic.from10725 +logic.from10725: + br i1 %t196, label %logic.rhs10726, label %logic.end10727 +logic.rhs10726: + %t197 = load ptr, ptr %a1 + %t198 = call i1 @finch.json.comes(ptr %t197, { ptr, i64, i64 } { ptr @.str.7013, i64 2, i64 0 }) + br label %logic.rend10728 +logic.rend10728: + br label %logic.end10727 +logic.end10727: + %t199 = phi i1 [ false, %logic.from10725 ], [ %t198, %logic.rend10728 ] + br i1 %t199, label %then10729, label %endif10731 +then10729: + %t200 = load ptr, ptr %a1 + %t201 = icmp eq ptr %t200, null + br i1 %t201, label %panic10732, label %ok10733 +panic10732: + call void @finch_panic(ptr @.str.7014, i64 398, ptr @.str.7015) + unreachable +ok10733: + %t202 = getelementptr inbounds %S.json.Reader, ptr %t200, i32 0, i32 1 + %t203 = load i64, ptr %t202 + %t204 = add i64 %t203, 2 + store i64 %t204, ptr %t202 + %t205 = load ptr, ptr %a1 + %t206 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t205) + %t207 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 0 + %t208 = xor i1 %t207, true + %t209 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 2 + %t210 = extractvalue { i1, i64, { ptr, i64, i64 } } %t206, 1 + br i1 %t208, label %try.failed10734, label %try.ok10735 +try.failed10734: + %t211 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t209, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t211 +try.ok10735: + store i64 %t210, ptr %a212 + %t213 = load i64, ptr %a191 + %t214 = sub i64 %t213, 55296 + %t215 = mul i64 %t214, 1024 + %t216 = add i64 65536, %t215 + %t217 = load i64, ptr %a212 + %t218 = sub i64 %t217, 56320 + %t219 = add i64 %t216, %t218 + store i64 %t219, ptr %a191 + br label %endif10731 +endif10731: + %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 + %t221 = load i64, ptr %a191 + %t222 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t221) + %t223 = load i64, ptr %t220 + %t224 = add i64 %t223, 1 + call void @finch_arr_reserve(ptr %a7, i64 %t224, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) + %t225 = load ptr, ptr %a7 + %t226 = getelementptr inbounds { ptr, i64, i64 }, ptr %t225, i64 %t223 + store { ptr, i64, i64 } %t222, ptr %t226 + store i64 %t224, ptr %t220 + br label %endif10718 +else10717: + %t227 = load i8, ptr %a123 + call void @finch_str_from_char(ptr %a228, i8 signext %t227) + %t229 = load { ptr, i64, i64 }, ptr %a228 + store { ptr, i64, i64 } { ptr @.str.7016, i64 22, i64 0 }, ptr %a231 + store { ptr, i64, i64 } %t229, ptr %a232 + call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) + %t233 = load { ptr, i64, i64 }, ptr %a230 + store { ptr, i64, i64 } %t233, ptr %a235 + store { ptr, i64, i64 } { ptr @.str.7017, i64 12, i64 0 }, ptr %a236 + call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) + %t237 = load { ptr, i64, i64 }, ptr %a234 + %t238 = load ptr, ptr %a1 + %t239 = call { ptr, i64, i64 } @finch.json.where(ptr %t238) + store { ptr, i64, i64 } %t237, ptr %a241 + store { ptr, i64, i64 } %t239, ptr %a242 + call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) + %t243 = load { ptr, i64, i64 }, ptr %a240 + store { ptr, i64, i64 } %t243, ptr %a245 + store { ptr, i64, i64 } { ptr @.str.7018, i64 1, i64 0 }, ptr %a246 + call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) + %t247 = load { ptr, i64, i64 }, ptr %a244 + %t248 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t247, 2 + ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t248 +endif10718: + br label %endif10715 +endif10715: + br label %endif10704 +endif10704: + br label %endif10701 +endif10701: + br label %endif10698 +endif10698: + br label %endif10695 +endif10695: + br label %endif10692 +endif10692: + %t249 = load ptr, ptr %a1 + %t250 = icmp eq ptr %t249, null + br i1 %t250, label %panic10736, label %ok10737 +panic10736: + call void @finch_panic(ptr @.str.7019, i64 406, ptr @.str.7020) + unreachable +ok10737: + %t251 = getelementptr inbounds %S.json.Reader, ptr %t249, i32 0, i32 1 + %t252 = load i64, ptr %t251 + store i64 %t252, ptr %a12 + br label %while.cond10649 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a6 = alloca i64, align 16 + %a139 = alloca { ptr, i64, i64 }, align 16 + %a140 = alloca { ptr, i64, i64 }, align 16 + %a147 = alloca { ptr, i64, i64 }, align 16 + %a148 = alloca double, align 16 + %a149 = alloca { ptr, i64, i64 }, align 16 + %a154 = alloca { ptr, i64, i64 }, align 16 + %a162 = alloca double, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + %t3 = icmp eq ptr %t2, null + br i1 %t3, label %panic10738, label %ok10739 +panic10738: + call void @finch_panic(ptr @.str.7021, i64 411, ptr @.str.7022) + unreachable +ok10739: + %t4 = getelementptr inbounds %S.json.Reader, ptr %t2, i32 0, i32 1 + %t5 = load i64, ptr %t4 + store i64 %t5, ptr %a6 + %t7 = load ptr, ptr %a1 + %t8 = call i8 @finch.json.peek(ptr %t7) + %t9 = icmp eq i8 %t8, 45 + br i1 %t9, label %then10740, label %endif10742 +then10740: + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10743, label %ok10744 +panic10743: + call void @finch_panic(ptr @.str.7023, i64 413, ptr @.str.7024) + unreachable +ok10744: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 1 + %t13 = load i64, ptr %t12 + %t14 = add i64 %t13, 1 + store i64 %t14, ptr %t12 + br label %endif10742 +endif10742: + br label %while.cond10745 +while.cond10745: + %t15 = load ptr, ptr %a1 + %t16 = icmp eq ptr %t15, null + br i1 %t16, label %panic10748, label %ok10749 +panic10748: + call void @finch_panic(ptr @.str.7025, i64 415, ptr @.str.7026) + unreachable +ok10749: + %t17 = getelementptr inbounds %S.json.Reader, ptr %t15, i32 0, i32 1 + %t18 = load i64, ptr %t17 + %t19 = load ptr, ptr %a1 + %t20 = icmp eq ptr %t19, null + br i1 %t20, label %panic10750, label %ok10751 +panic10750: + call void @finch_panic(ptr @.str.7027, i64 415, ptr @.str.7028) + unreachable +ok10751: + %t21 = getelementptr inbounds %S.json.Reader, ptr %t19, i32 0, i32 0 + %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 + %t23 = load i64, ptr %t22 + %t24 = icmp slt i64 %t18, %t23 + br label %logic.from10752 +logic.from10752: + br i1 %t24, label %logic.rhs10753, label %logic.end10754 +logic.rhs10753: + %t25 = load ptr, ptr %a1 + %t26 = icmp eq ptr %t25, null + br i1 %t26, label %panic10755, label %ok10756 +panic10755: + call void @finch_panic(ptr @.str.7029, i64 415, ptr @.str.7030) + unreachable +ok10756: + %t27 = getelementptr inbounds %S.json.Reader, ptr %t25, i32 0, i32 0 + %t28 = load ptr, ptr %a1 + %t29 = icmp eq ptr %t28, null + br i1 %t29, label %panic10757, label %ok10758 +panic10757: + call void @finch_panic(ptr @.str.7031, i64 415, ptr @.str.7032) + unreachable +ok10758: + %t30 = getelementptr inbounds %S.json.Reader, ptr %t28, i32 0, i32 1 + %t31 = load i64, ptr %t30 + %t32 = load { ptr, i64, i64 }, ptr %t27 + %t33 = extractvalue { ptr, i64, i64 } %t32, 1 + %t34 = icmp uge i64 %t31, %t33 + br i1 %t34, label %range10759, label %inrange10760 +range10759: + call void @finch_panic_index(ptr @.str.7033, i64 415, i64 %t31, i64 %t33) + unreachable +inrange10760: + %t35 = extractvalue { ptr, i64, i64 } %t32, 0 + %t36 = getelementptr inbounds i8, ptr %t35, i64 %t31 + %t37 = load i8, ptr %t36 + %t38 = icmp uge i8 %t37, 48 + br label %logic.from10761 +logic.from10761: + br i1 %t38, label %logic.rhs10762, label %logic.end10763 +logic.rhs10762: + %t39 = load ptr, ptr %a1 + %t40 = icmp eq ptr %t39, null + br i1 %t40, label %panic10764, label %ok10765 +panic10764: + call void @finch_panic(ptr @.str.7034, i64 415, ptr @.str.7035) + unreachable +ok10765: + %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 0 + %t42 = load ptr, ptr %a1 + %t43 = icmp eq ptr %t42, null + br i1 %t43, label %panic10766, label %ok10767 +panic10766: + call void @finch_panic(ptr @.str.7036, i64 415, ptr @.str.7037) + unreachable +ok10767: + %t44 = getelementptr inbounds %S.json.Reader, ptr %t42, i32 0, i32 1 + %t45 = load i64, ptr %t44 + %t46 = load { ptr, i64, i64 }, ptr %t41 + %t47 = extractvalue { ptr, i64, i64 } %t46, 1 + %t48 = icmp uge i64 %t45, %t47 + br i1 %t48, label %range10768, label %inrange10769 +range10768: + call void @finch_panic_index(ptr @.str.7038, i64 415, i64 %t45, i64 %t47) + unreachable +inrange10769: + %t49 = extractvalue { ptr, i64, i64 } %t46, 0 + %t50 = getelementptr inbounds i8, ptr %t49, i64 %t45 + %t51 = load i8, ptr %t50 + %t52 = icmp ule i8 %t51, 57 + br label %logic.rend10770 +logic.rend10770: + br label %logic.end10763 +logic.end10763: + %t53 = phi i1 [ false, %logic.from10761 ], [ %t52, %logic.rend10770 ] + br label %logic.from10771 +logic.from10771: + br i1 %t53, label %logic.end10773, label %logic.rhs10772 +logic.rhs10772: + %t54 = load ptr, ptr %a1 + %t55 = icmp eq ptr %t54, null + br i1 %t55, label %panic10774, label %ok10775 +panic10774: + call void @finch_panic(ptr @.str.7039, i64 415, ptr @.str.7040) + unreachable +ok10775: + %t56 = getelementptr inbounds %S.json.Reader, ptr %t54, i32 0, i32 0 + %t57 = load ptr, ptr %a1 + %t58 = icmp eq ptr %t57, null + br i1 %t58, label %panic10776, label %ok10777 +panic10776: + call void @finch_panic(ptr @.str.7041, i64 415, ptr @.str.7042) + unreachable +ok10777: + %t59 = getelementptr inbounds %S.json.Reader, ptr %t57, i32 0, i32 1 + %t60 = load i64, ptr %t59 + %t61 = load { ptr, i64, i64 }, ptr %t56 + %t62 = extractvalue { ptr, i64, i64 } %t61, 1 + %t63 = icmp uge i64 %t60, %t62 + br i1 %t63, label %range10778, label %inrange10779 +range10778: + call void @finch_panic_index(ptr @.str.7043, i64 415, i64 %t60, i64 %t62) + unreachable +inrange10779: + %t64 = extractvalue { ptr, i64, i64 } %t61, 0 + %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 + %t66 = load i8, ptr %t65 + %t67 = icmp eq i8 %t66, 46 + br label %logic.rend10780 +logic.rend10780: + br label %logic.end10773 +logic.end10773: + %t68 = phi i1 [ true, %logic.from10771 ], [ %t67, %logic.rend10780 ] + br label %logic.from10781 +logic.from10781: + br i1 %t68, label %logic.end10783, label %logic.rhs10782 +logic.rhs10782: + %t69 = load ptr, ptr %a1 + %t70 = icmp eq ptr %t69, null + br i1 %t70, label %panic10784, label %ok10785 +panic10784: + call void @finch_panic(ptr @.str.7044, i64 415, ptr @.str.7045) + unreachable +ok10785: + %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 0 + %t72 = load ptr, ptr %a1 + %t73 = icmp eq ptr %t72, null + br i1 %t73, label %panic10786, label %ok10787 +panic10786: + call void @finch_panic(ptr @.str.7046, i64 415, ptr @.str.7047) + unreachable +ok10787: + %t74 = getelementptr inbounds %S.json.Reader, ptr %t72, i32 0, i32 1 + %t75 = load i64, ptr %t74 + %t76 = load { ptr, i64, i64 }, ptr %t71 + %t77 = extractvalue { ptr, i64, i64 } %t76, 1 + %t78 = icmp uge i64 %t75, %t77 + br i1 %t78, label %range10788, label %inrange10789 +range10788: + call void @finch_panic_index(ptr @.str.7048, i64 415, i64 %t75, i64 %t77) + unreachable +inrange10789: + %t79 = extractvalue { ptr, i64, i64 } %t76, 0 + %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 + %t81 = load i8, ptr %t80 + %t82 = icmp eq i8 %t81, 101 + br label %logic.rend10790 +logic.rend10790: + br label %logic.end10783 +logic.end10783: + %t83 = phi i1 [ true, %logic.from10781 ], [ %t82, %logic.rend10790 ] + br label %logic.from10791 +logic.from10791: + br i1 %t83, label %logic.end10793, label %logic.rhs10792 +logic.rhs10792: + %t84 = load ptr, ptr %a1 + %t85 = icmp eq ptr %t84, null + br i1 %t85, label %panic10794, label %ok10795 +panic10794: + call void @finch_panic(ptr @.str.7049, i64 415, ptr @.str.7050) + unreachable +ok10795: + %t86 = getelementptr inbounds %S.json.Reader, ptr %t84, i32 0, i32 0 + %t87 = load ptr, ptr %a1 + %t88 = icmp eq ptr %t87, null + br i1 %t88, label %panic10796, label %ok10797 +panic10796: + call void @finch_panic(ptr @.str.7051, i64 415, ptr @.str.7052) + unreachable +ok10797: + %t89 = getelementptr inbounds %S.json.Reader, ptr %t87, i32 0, i32 1 + %t90 = load i64, ptr %t89 + %t91 = load { ptr, i64, i64 }, ptr %t86 + %t92 = extractvalue { ptr, i64, i64 } %t91, 1 + %t93 = icmp uge i64 %t90, %t92 + br i1 %t93, label %range10798, label %inrange10799 +range10798: + call void @finch_panic_index(ptr @.str.7053, i64 415, i64 %t90, i64 %t92) + unreachable +inrange10799: + %t94 = extractvalue { ptr, i64, i64 } %t91, 0 + %t95 = getelementptr inbounds i8, ptr %t94, i64 %t90 + %t96 = load i8, ptr %t95 + %t97 = icmp eq i8 %t96, 69 + br label %logic.rend10800 +logic.rend10800: + br label %logic.end10793 +logic.end10793: + %t98 = phi i1 [ true, %logic.from10791 ], [ %t97, %logic.rend10800 ] + br label %logic.from10801 +logic.from10801: + br i1 %t98, label %logic.end10803, label %logic.rhs10802 +logic.rhs10802: + %t99 = load ptr, ptr %a1 + %t100 = icmp eq ptr %t99, null + br i1 %t100, label %panic10804, label %ok10805 +panic10804: + call void @finch_panic(ptr @.str.7054, i64 415, ptr @.str.7055) + unreachable +ok10805: + %t101 = getelementptr inbounds %S.json.Reader, ptr %t99, i32 0, i32 0 + %t102 = load ptr, ptr %a1 + %t103 = icmp eq ptr %t102, null + br i1 %t103, label %panic10806, label %ok10807 +panic10806: + call void @finch_panic(ptr @.str.7056, i64 415, ptr @.str.7057) + unreachable +ok10807: + %t104 = getelementptr inbounds %S.json.Reader, ptr %t102, i32 0, i32 1 + %t105 = load i64, ptr %t104 + %t106 = load { ptr, i64, i64 }, ptr %t101 + %t107 = extractvalue { ptr, i64, i64 } %t106, 1 + %t108 = icmp uge i64 %t105, %t107 + br i1 %t108, label %range10808, label %inrange10809 +range10808: + call void @finch_panic_index(ptr @.str.7058, i64 415, i64 %t105, i64 %t107) + unreachable +inrange10809: + %t109 = extractvalue { ptr, i64, i64 } %t106, 0 + %t110 = getelementptr inbounds i8, ptr %t109, i64 %t105 + %t111 = load i8, ptr %t110 + %t112 = icmp eq i8 %t111, 43 + br label %logic.rend10810 +logic.rend10810: + br label %logic.end10803 +logic.end10803: + %t113 = phi i1 [ true, %logic.from10801 ], [ %t112, %logic.rend10810 ] + br label %logic.from10811 +logic.from10811: + br i1 %t113, label %logic.end10813, label %logic.rhs10812 +logic.rhs10812: + %t114 = load ptr, ptr %a1 + %t115 = icmp eq ptr %t114, null + br i1 %t115, label %panic10814, label %ok10815 +panic10814: + call void @finch_panic(ptr @.str.7059, i64 415, ptr @.str.7060) + unreachable +ok10815: + %t116 = getelementptr inbounds %S.json.Reader, ptr %t114, i32 0, i32 0 + %t117 = load ptr, ptr %a1 + %t118 = icmp eq ptr %t117, null + br i1 %t118, label %panic10816, label %ok10817 +panic10816: + call void @finch_panic(ptr @.str.7061, i64 415, ptr @.str.7062) + unreachable +ok10817: + %t119 = getelementptr inbounds %S.json.Reader, ptr %t117, i32 0, i32 1 + %t120 = load i64, ptr %t119 + %t121 = load { ptr, i64, i64 }, ptr %t116 + %t122 = extractvalue { ptr, i64, i64 } %t121, 1 + %t123 = icmp uge i64 %t120, %t122 + br i1 %t123, label %range10818, label %inrange10819 +range10818: + call void @finch_panic_index(ptr @.str.7063, i64 415, i64 %t120, i64 %t122) + unreachable +inrange10819: + %t124 = extractvalue { ptr, i64, i64 } %t121, 0 + %t125 = getelementptr inbounds i8, ptr %t124, i64 %t120 + %t126 = load i8, ptr %t125 + %t127 = icmp eq i8 %t126, 45 + br label %logic.rend10820 +logic.rend10820: + br label %logic.end10813 +logic.end10813: + %t128 = phi i1 [ true, %logic.from10811 ], [ %t127, %logic.rend10820 ] + br label %logic.rend10821 +logic.rend10821: + br label %logic.end10754 +logic.end10754: + %t129 = phi i1 [ false, %logic.from10752 ], [ %t128, %logic.rend10821 ] + br i1 %t129, label %while.body10746, label %while.end10747 +while.body10746: + %t130 = load ptr, ptr %a1 + %t131 = icmp eq ptr %t130, null + br i1 %t131, label %panic10822, label %ok10823 +panic10822: + call void @finch_panic(ptr @.str.7064, i64 416, ptr @.str.7065) + unreachable +ok10823: + %t132 = getelementptr inbounds %S.json.Reader, ptr %t130, i32 0, i32 1 + %t133 = load i64, ptr %t132 + %t134 = add i64 %t133, 1 + store i64 %t134, ptr %t132 + br label %while.cond10745 +while.end10747: + %t135 = load ptr, ptr %a1 + %t136 = icmp eq ptr %t135, null + br i1 %t136, label %panic10824, label %ok10825 +panic10824: + call void @finch_panic(ptr @.str.7066, i64 418, ptr @.str.7067) + unreachable +ok10825: + %t137 = getelementptr inbounds %S.json.Reader, ptr %t135, i32 0, i32 0 + %t138 = load { ptr, i64, i64 }, ptr %t137 + store { ptr, i64, i64 } %t138, ptr %a139 + %t141 = load i64, ptr %a6 + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic10826, label %ok10827 +panic10826: + call void @finch_panic(ptr @.str.7069, i64 418, ptr @.str.7070) + unreachable +ok10827: + %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 + %t145 = load i64, ptr %t144 + call void @finch_str_sub(ptr %a140, ptr %a139, i64 %t141, i64 %t145, ptr @.str.7068, i64 418) + %t146 = load { ptr, i64, i64 }, ptr %a140 + store { ptr, i64, i64 } zeroinitializer, ptr %a147 + store double 0.0, ptr %a148 + store { ptr, i64, i64 } %t146, ptr %a149 + %t150 = call i32 @finch_str_try_float(ptr %a149, ptr %a148, ptr %a147) + %t151 = icmp eq i32 %t150, 0 + %t152 = load { ptr, i64, i64 }, ptr %a147 + %t153 = load double, ptr %a148 + br i1 %t151, label %or.failed10828, label %or.ok10829 +or.failed10828: + store { ptr, i64, i64 } %t152, ptr %a154 + %t155 = load i64, ptr %a6 + %t156 = load ptr, ptr %a1 + %t157 = icmp eq ptr %t156, null + br i1 %t157, label %panic10830, label %ok10831 +panic10830: + call void @finch_panic(ptr @.str.7071, i64 419, ptr @.str.7072) + unreachable +ok10831: + %t158 = getelementptr inbounds %S.json.Reader, ptr %t156, i32 0, i32 1 + store i64 %t155, ptr %t158 + %t159 = load ptr, ptr %a1 + %t160 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t159, { ptr, i64, i64 } { ptr @.str.7073, i64 8, i64 0 }) + %t161 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t160, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t161 +or.ok10829: + store double %t153, ptr %a162 + %t163 = load double, ptr %a162 + %t164 = call %S.json.Json @finch.json.new_number(double %t163) + %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { +entry: + %a1 = alloca ptr, align 16 + %a5 = alloca i8, align 16 + %a22 = alloca %S.json.Json, align 16 + %a54 = alloca { ptr, i64, i64 }, align 16 + %a74 = alloca %S.json.Json, align 16 + %a103 = alloca %S.json.Json, align 16 + %a128 = alloca %S.json.Json, align 16 + %a162 = alloca { ptr, i64, i64 }, align 16 + store ptr %p0, ptr %a1 + %t2 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t2) + %t3 = load ptr, ptr %a1 + %t4 = call i8 @finch.json.peek(ptr %t3) + store i8 %t4, ptr %a5 + %t6 = load ptr, ptr %a1 + %t7 = icmp eq ptr %t6, null + br i1 %t7, label %panic10832, label %ok10833 +panic10832: + call void @finch_panic(ptr @.str.7074, i64 428, ptr @.str.7075) + unreachable +ok10833: + %t8 = getelementptr inbounds %S.json.Reader, ptr %t6, i32 0, i32 1 + %t9 = load i64, ptr %t8 + %t10 = load ptr, ptr %a1 + %t11 = icmp eq ptr %t10, null + br i1 %t11, label %panic10834, label %ok10835 +panic10834: + call void @finch_panic(ptr @.str.7076, i64 428, ptr @.str.7077) + unreachable +ok10835: + %t12 = getelementptr inbounds %S.json.Reader, ptr %t10, i32 0, i32 0 + %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 + %t14 = load i64, ptr %t13 + %t15 = icmp sge i64 %t9, %t14 + br i1 %t15, label %then10836, label %endif10838 +then10836: + %t16 = load ptr, ptr %a1 + %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7078, i64 7, i64 0 }) + %t18 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t17, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t18 +endif10838: + %t19 = load i8, ptr %a5 + %t20 = icmp eq i8 %t19, 123 + br i1 %t20, label %then10839, label %endif10841 +then10839: + %t21 = call %S.json.Json @finch.json.new_object() + store %S.json.Json %t21, ptr %a22 + %t23 = load ptr, ptr %a1 + %t24 = icmp eq ptr %t23, null + br i1 %t24, label %panic10842, label %ok10843 +panic10842: + call void @finch_panic(ptr @.str.7079, i64 433, ptr @.str.7080) + unreachable +ok10843: + %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 + %t26 = load i64, ptr %t25 + %t27 = add i64 %t26, 1 + store i64 %t27, ptr %t25 + %t28 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t28) + %t29 = load ptr, ptr %a1 + %t30 = call i8 @finch.json.peek(ptr %t29) + %t31 = icmp eq i8 %t30, 125 + br i1 %t31, label %then10844, label %endif10846 +then10844: + %t32 = load ptr, ptr %a1 + %t33 = icmp eq ptr %t32, null + br i1 %t33, label %panic10847, label %ok10848 +panic10847: + call void @finch_panic(ptr @.str.7081, i64 436, ptr @.str.7082) + unreachable +ok10848: + %t34 = getelementptr inbounds %S.json.Reader, ptr %t32, i32 0, i32 1 + %t35 = load i64, ptr %t34 + %t36 = add i64 %t35, 1 + store i64 %t36, ptr %t34 + %t37 = load %S.json.Json, ptr %a22 + %t38 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t39 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t38, %S.json.Json %t37, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t39 +endif10846: + br label %while.cond10849 +while.cond10849: + br label %while.body10850 +while.body10850: + %t40 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t40) + %t41 = load ptr, ptr %a1 + %t42 = call i8 @finch.json.peek(ptr %t41) + %t43 = icmp ne i8 %t42, 34 + br i1 %t43, label %then10852, label %endif10854 +then10852: + %t44 = load ptr, ptr %a1 + %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7083, i64 15, i64 0 }) + %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 +endif10854: + %t47 = load ptr, ptr %a1 + %t48 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %t47) + %t49 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 0 + %t50 = xor i1 %t49, true + %t51 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 2 + %t52 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t48, 1 + br i1 %t50, label %try.failed10855, label %try.ok10856 +try.failed10855: + %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 +try.ok10856: + store { ptr, i64, i64 } %t52, ptr %a54 + %t55 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t55) + %t56 = load ptr, ptr %a1 + %t57 = call i8 @finch.json.peek(ptr %t56) + %t58 = icmp ne i8 %t57, 58 + br i1 %t58, label %then10857, label %endif10859 +then10857: + %t59 = load ptr, ptr %a1 + %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7084, i64 3, i64 0 }) + %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 +endif10859: + %t62 = load ptr, ptr %a1 + %t63 = icmp eq ptr %t62, null + br i1 %t63, label %panic10860, label %ok10861 +panic10860: + call void @finch_panic(ptr @.str.7085, i64 449, ptr @.str.7086) + unreachable +ok10861: + %t64 = getelementptr inbounds %S.json.Reader, ptr %t62, i32 0, i32 1 + %t65 = load i64, ptr %t64 + %t66 = add i64 %t65, 1 + store i64 %t66, ptr %t64 + %t67 = load ptr, ptr %a1 + %t68 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %t67) + %t69 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 0 + %t70 = xor i1 %t69, true + %t71 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 2 + %t72 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t68, 1 + br i1 %t70, label %try.failed10862, label %try.ok10863 +try.failed10862: + %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 +try.ok10863: + store %S.json.Json %t72, ptr %a74 + %t75 = load { ptr, i64, i64 }, ptr %a54 + %t76 = load %S.json.Json, ptr %a74 + call void @finch.json.Json.set(ptr %a22, { ptr, i64, i64 } %t75, %S.json.Json %t76) + %t77 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t77) + %t78 = load ptr, ptr %a1 + %t79 = call i8 @finch.json.peek(ptr %t78) + %t80 = icmp eq i8 %t79, 44 + br i1 %t80, label %then10864, label %endif10866 +then10864: + %t81 = load ptr, ptr %a1 + %t82 = icmp eq ptr %t81, null + br i1 %t82, label %panic10867, label %ok10868 +panic10867: + call void @finch_panic(ptr @.str.7087, i64 454, ptr @.str.7088) + unreachable +ok10868: + %t83 = getelementptr inbounds %S.json.Reader, ptr %t81, i32 0, i32 1 + %t84 = load i64, ptr %t83 + %t85 = add i64 %t84, 1 + store i64 %t85, ptr %t83 + br label %while.cond10849 +endif10866: + %t86 = load ptr, ptr %a1 + %t87 = call i8 @finch.json.peek(ptr %t86) + %t88 = icmp eq i8 %t87, 125 + br i1 %t88, label %then10869, label %endif10871 +then10869: + %t89 = load ptr, ptr %a1 + %t90 = icmp eq ptr %t89, null + br i1 %t90, label %panic10872, label %ok10873 +panic10872: + call void @finch_panic(ptr @.str.7089, i64 458, ptr @.str.7090) + unreachable +ok10873: + %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 + %t92 = load i64, ptr %t91 + %t93 = add i64 %t92, 1 + store i64 %t93, ptr %t91 + %t94 = load %S.json.Json, ptr %a22 + %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 +endif10871: + %t97 = load ptr, ptr %a1 + %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7091, i64 10, i64 0 }) + %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 +endif10841: + %t100 = load i8, ptr %a5 + %t101 = icmp eq i8 %t100, 91 + br i1 %t101, label %then10874, label %endif10876 +then10874: + %t102 = call %S.json.Json @finch.json.new_list() + store %S.json.Json %t102, ptr %a103 + %t104 = load ptr, ptr %a1 + %t105 = icmp eq ptr %t104, null + br i1 %t105, label %panic10877, label %ok10878 +panic10877: + call void @finch_panic(ptr @.str.7092, i64 466, ptr @.str.7093) + unreachable +ok10878: + %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 1 + %t107 = load i64, ptr %t106 + %t108 = add i64 %t107, 1 + store i64 %t108, ptr %t106 + %t109 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t109) + %t110 = load ptr, ptr %a1 + %t111 = call i8 @finch.json.peek(ptr %t110) + %t112 = icmp eq i8 %t111, 93 + br i1 %t112, label %then10879, label %endif10881 +then10879: + %t113 = load ptr, ptr %a1 + %t114 = icmp eq ptr %t113, null + br i1 %t114, label %panic10882, label %ok10883 +panic10882: + call void @finch_panic(ptr @.str.7094, i64 469, ptr @.str.7095) + unreachable +ok10883: + %t115 = getelementptr inbounds %S.json.Reader, ptr %t113, i32 0, i32 1 + %t116 = load i64, ptr %t115 + %t117 = add i64 %t116, 1 + store i64 %t117, ptr %t115 + %t118 = load %S.json.Json, ptr %a103 + %t119 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t120 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t119, %S.json.Json %t118, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t120 +endif10881: + br label %while.cond10884 +while.cond10884: + br label %while.body10885 +while.body10885: + %t121 = load ptr, ptr %a1 + %t122 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %t121) + %t123 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 0 + %t124 = xor i1 %t123, true + %t125 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 2 + %t126 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t122, 1 + br i1 %t124, label %try.failed10887, label %try.ok10888 +try.failed10887: + %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 +try.ok10888: + store %S.json.Json %t126, ptr %a128 + %t129 = load %S.json.Json, ptr %a128 + call void @finch.json.Json.push(ptr %a103, %S.json.Json %t129) + %t130 = load ptr, ptr %a1 + call void @finch.json.skip_space(ptr %t130) + %t131 = load ptr, ptr %a1 + %t132 = call i8 @finch.json.peek(ptr %t131) + %t133 = icmp eq i8 %t132, 44 + br i1 %t133, label %then10889, label %endif10891 +then10889: + %t134 = load ptr, ptr %a1 + %t135 = icmp eq ptr %t134, null + br i1 %t135, label %panic10892, label %ok10893 +panic10892: + call void @finch_panic(ptr @.str.7096, i64 477, ptr @.str.7097) + unreachable +ok10893: + %t136 = getelementptr inbounds %S.json.Reader, ptr %t134, i32 0, i32 1 + %t137 = load i64, ptr %t136 + %t138 = add i64 %t137, 1 + store i64 %t138, ptr %t136 + br label %while.cond10884 +endif10891: + %t139 = load ptr, ptr %a1 + %t140 = call i8 @finch.json.peek(ptr %t139) + %t141 = icmp eq i8 %t140, 93 + br i1 %t141, label %then10894, label %endif10896 +then10894: + %t142 = load ptr, ptr %a1 + %t143 = icmp eq ptr %t142, null + br i1 %t143, label %panic10897, label %ok10898 +panic10897: + call void @finch_panic(ptr @.str.7098, i64 481, ptr @.str.7099) + unreachable +ok10898: + %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 + %t145 = load i64, ptr %t144 + %t146 = add i64 %t145, 1 + store i64 %t146, ptr %t144 + %t147 = load %S.json.Json, ptr %a103 + %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 +endif10896: + %t150 = load ptr, ptr %a1 + %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7100, i64 10, i64 0 }) + %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 +endif10876: + %t153 = load i8, ptr %a5 + %t154 = icmp eq i8 %t153, 34 + br i1 %t154, label %then10899, label %endif10901 +then10899: + %t155 = load ptr, ptr %a1 + %t156 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.json.read_string(ptr %t155) + %t157 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 0 + %t158 = xor i1 %t157, true + %t159 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 2 + %t160 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t156, 1 + br i1 %t158, label %try.failed10902, label %try.ok10903 +try.failed10902: + %t161 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t159, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t161 +try.ok10903: + store { ptr, i64, i64 } %t160, ptr %a162 + %t163 = load { ptr, i64, i64 }, ptr %a162 + %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) + %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 +endif10901: + %t167 = load i8, ptr %a5 + %t168 = icmp eq i8 %t167, 116 + br i1 %t168, label %then10904, label %endif10906 +then10904: + %t169 = load ptr, ptr %a1 + %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7101, i64 4, i64 0 }) + %t171 = extractvalue { i1, i8, { ptr, i64, i64 } } %t170, 0 + %t172 = xor i1 %t171, true + %t173 = extractvalue { i1, i8, { ptr, i64, i64 } } %t170, 2 + br i1 %t172, label %try.failed10907, label %try.ok10908 +try.failed10907: + %t174 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t173, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t174 +try.ok10908: + %t175 = call %S.json.Json @finch.json.new_bool(i1 true) + %t176 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t177 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t176, %S.json.Json %t175, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t177 +endif10906: + %t178 = load i8, ptr %a5 + %t179 = icmp eq i8 %t178, 102 + br i1 %t179, label %then10909, label %endif10911 +then10909: + %t180 = load ptr, ptr %a1 + %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7102, i64 5, i64 0 }) + %t182 = extractvalue { i1, i8, { ptr, i64, i64 } } %t181, 0 + %t183 = xor i1 %t182, true + %t184 = extractvalue { i1, i8, { ptr, i64, i64 } } %t181, 2 + br i1 %t183, label %try.failed10912, label %try.ok10913 +try.failed10912: + %t185 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t184, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t185 +try.ok10913: + %t186 = call %S.json.Json @finch.json.new_bool(i1 false) + %t187 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t188 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t187, %S.json.Json %t186, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t188 +endif10911: + %t189 = load i8, ptr %a5 + %t190 = icmp eq i8 %t189, 110 + br i1 %t190, label %then10914, label %endif10916 +then10914: + %t191 = load ptr, ptr %a1 + %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7103, i64 4, i64 0 }) + %t193 = extractvalue { i1, i8, { ptr, i64, i64 } } %t192, 0 + %t194 = xor i1 %t193, true + %t195 = extractvalue { i1, i8, { ptr, i64, i64 } } %t192, 2 + br i1 %t194, label %try.failed10917, label %try.ok10918 +try.failed10917: + %t196 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t195, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t196 +try.ok10918: + %t197 = call %S.json.Json @finch.json.new_null() + %t198 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t199 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t198, %S.json.Json %t197, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t199 +endif10916: + %t200 = load i8, ptr %a5 + %t201 = icmp eq i8 %t200, 45 + br label %logic.from10919 +logic.from10919: + br i1 %t201, label %logic.end10921, label %logic.rhs10920 +logic.rhs10920: + %t202 = load i8, ptr %a5 + %t203 = icmp uge i8 %t202, 48 + br label %logic.from10922 +logic.from10922: + br i1 %t203, label %logic.rhs10923, label %logic.end10924 +logic.rhs10923: + %t204 = load i8, ptr %a5 + %t205 = icmp ule i8 %t204, 57 + br label %logic.rend10925 +logic.rend10925: + br label %logic.end10924 +logic.end10924: + %t206 = phi i1 [ false, %logic.from10922 ], [ %t205, %logic.rend10925 ] + br label %logic.rend10926 +logic.rend10926: + br label %logic.end10921 +logic.end10921: + %t207 = phi i1 [ true, %logic.from10919 ], [ %t206, %logic.rend10926 ] + br i1 %t207, label %then10927, label %endif10929 +then10927: + %t208 = load ptr, ptr %a1 + %t209 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_number(ptr %t208) + %t210 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 0 + %t211 = xor i1 %t210, true + %t212 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 2 + %t213 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t209, 1 + br i1 %t211, label %try.failed10930, label %try.ok10931 +try.failed10930: + %t214 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t212, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t214 +try.ok10931: + %t215 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t216 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t215, %S.json.Json %t213, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t216 +endif10929: + %t217 = load ptr, ptr %a1 + %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7104, i64 7, i64 0 }) + %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 +} + +define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { +entry: + %a1 = alloca { ptr, i64, i64 }, align 16 + %a3 = alloca { ptr, i64, i64 }, align 16 + %a4 = alloca { ptr, i64, i64 }, align 16 + %a7 = alloca %S.json.Reader, align 16 + %a14 = alloca %S.json.Json, align 16 + %a24 = alloca %S.json.Json, align 16 + %a25 = alloca %S.json.Json, align 16 + store { ptr, i64, i64 } %p0, ptr %a1 + %t2 = load { ptr, i64, i64 }, ptr %a1 + store { ptr, i64, i64 } %t2, ptr %a3 + call void @finch_str_copy(ptr %a4, ptr %a3) + %t5 = load { ptr, i64, i64 }, ptr %a4 + %t6 = insertvalue %S.json.Reader zeroinitializer, { ptr, i64, i64 } %t5, 0 + store %S.json.Reader %t6, ptr %a7 + %t8 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %a7) + %t9 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 0 + %t10 = xor i1 %t9, true + %t11 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 2 + %t12 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t8, 1 + br i1 %t10, label %try.failed10932, label %try.ok10933 +try.failed10932: + %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 +try.ok10933: + store %S.json.Json %t12, ptr %a14 + call void @finch.json.skip_space(ptr %a7) + %t15 = getelementptr inbounds %S.json.Reader, ptr %a7, i32 0, i32 1 + %t16 = load i64, ptr %t15 + %t17 = getelementptr inbounds %S.json.Reader, ptr %a7, i32 0, i32 0 + %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 + %t19 = load i64, ptr %t18 + %t20 = icmp slt i64 %t16, %t19 + br i1 %t20, label %then10934, label %endif10936 +then10934: + %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7105, i64 19, i64 0 }) + %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 +endif10936: + %t23 = load %S.json.Json, ptr %a14 + store %S.json.Json %t23, ptr %a24 + call void @finch.copy.S_json_Json(ptr %a25, ptr %a24) + %t26 = load %S.json.Json, ptr %a25 + %t27 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 + %t28 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t27, %S.json.Json %t26, 1 + ret { i1, %S.json.Json, { ptr, i64, i64 } } %t28 +} + define i32 @main(i32 %argc, ptr %argv) { entry: %args = alloca { ptr, i64, i64 } diff --git a/shell.nix b/shell.nix index 41090bd..1e3655a 100644 --- a/shell.nix +++ b/shell.nix @@ -6,6 +6,7 @@ pkgs.mkShell { llvmPackages.clang llvmPackages.libclang # reads C headers for `import "stdio.h"` pkg-config # finds the right flags for `link "..."` + python3 # tests/lsp_test.py # for the graphics examples (window, opengl, raylib, vulkan) glfw diff --git a/src/ast.fch b/src/ast.fch index 39e19a2..28bb900 100644 --- a/src/ast.fch +++ b/src/ast.fch @@ -108,6 +108,7 @@ struct Node { int line int col int file + int endLine // block, fn: the line of the closing } } struct Program { diff --git a/src/docs.fch b/src/docs.fch new file mode 100644 index 0000000..2c75a0e --- /dev/null +++ b/src/docs.fch @@ -0,0 +1,109 @@ +// One description of every built-in function and method, shared by the compiler (the index the language +// server asks for) and the language server (hover, completion, signature help). + +struct Doc { + str name + str signature + str text +} + +fn doc(str name, str signature, str text) -> Doc { + return Doc(name: name, signature: signature, text: text) +} + +fn builtins() -> []Doc { + return [ + doc("print", "print(a, b, ...)", "Prints the values separated by spaces, then a new line. Works with every type."), + doc("input", "input(str question = \"\") -> str", "Shows the question and reads one line typed by the user, without the newline."), + doc("read_file", "read_file(str path) -> str", "The whole file as text. Stops the program if it can't be read, unless handled: read_file(p) or { ... }, try read_file(p)."), + doc("write_file", "write_file(str path, str text) -> bool", "Writes (replaces) the file. true if it worked; with or / try, the reason it didn't."), + doc("file_exists", "file_exists(str path) -> bool", "Is there a file at this path?"), + doc("delete_file", "delete_file(str path) -> bool", "Deletes the file. true if it worked; with or / try, the reason it didn't."), + doc("error", "error(str message)", "The failure a fallible function returns: return error(\"...\"). The caller handles it with or / try."), + doc("shell", "shell(str command) -> int", "Runs a command in the system's shell and gives back its exit code."), + doc("exit", "exit(int code)", "Ends the program right away with this exit code."), + doc("addr", "addr(x) -> ptr[T]", "A pointer to a variable, field or element. addr(function) gives C a callback."), + doc("new", "new(value) -> ptr[T]", "Puts a copy of the value on the heap. Give it back with free(...)."), + doc("free", "free(ptr p)", "Gives back memory from new(...) (or from C), freeing what the value owns."), + doc("str", "str(x) -> str", "Turns a number, bool, char, []u8 or C char pointer into text."), + doc("int", "int(x) -> int", "Converts to a whole number: cuts off fractions, parses text (stops the program if it isn't a number, unless handled: int(s) or 0)."), + doc("float", "float(x) -> float", "Converts to a decimal number; parses text (int(s) or 0.0 handles bad text)."), + doc("char", "char(int n) -> char", "The character with this code."), + doc("bool", "bool(int n) -> bool", "true for any number but 0."), + doc("ptr", "ptr(x) -> ptr", "An untyped pointer: from a typed pointer, or from a number (an address or offset for C).") + ] +} + +fn arrayMethods() -> []Doc { + return [ + doc("len", ".len -> int", "The number of elements."), + doc("ptr", ".ptr -> ptr[T]", "The address of the first element, for C."), + doc("push", "push(T x)", "Adds x at the end."), + doc("pop", "pop() -> T", "Removes the last element and gives it back."), + doc("insert", "insert(int i, T x)", "Puts x at position i, moving the rest."), + doc("remove", "remove(int i) -> T", "Removes position i and gives it back."), + doc("clear", "clear()", "Removes everything."), + doc("resize", "resize(int n)", "Makes the array n long; new elements are zero."), + doc("find", "find(T x) -> int", "The index of x, or -1."), + doc("contains", "contains(T x) -> bool", "Is x in the array?"), + doc("sort", "sort()", "Sorts in place (numbers, chars, str)."), + doc("reverse", "reverse()", "Reverses in place."), + doc("slice", "slice(int start, int end) -> []T", "A new array with the elements start to end-1."), + doc("join", "join(str sep) -> str", "For []str: one text with sep between the parts.") + ] +} + +fn strMethods() -> []Doc { + return [ + doc("len", ".len -> int", "The number of bytes."), + doc("ptr", ".ptr -> ptr[char]", "The address of the text, for C (valid while the str lives)."), + doc("sub", "sub(int start, int end) -> str", "The part from start to end-1."), + doc("find", "find(str t) -> int", "Where t starts, or -1."), + doc("contains", "contains(str t) -> bool", "Does the text contain t?"), + doc("starts_with", "starts_with(str t) -> bool", "Does the text start with t?"), + doc("ends_with", "ends_with(str t) -> bool", "Does the text end with t?"), + doc("split", "split(str sep) -> []str", "The parts between each sep; split(\"\") gives single characters."), + doc("trim", "trim() -> str", "Without spaces and newlines at both ends."), + doc("upper", "upper() -> str", "With a-z changed to A-Z."), + doc("lower", "lower() -> str", "With A-Z changed to a-z."), + doc("replace", "replace(str from, str to) -> str", "Every from replaced by to."), + doc("repeat", "repeat(int n) -> str", "The text n times."), + doc("bytes", "bytes() -> []u8", "The bytes of the text.") + ] +} + +fn mapMethods() -> []Doc { + return [ + doc("len", ".len -> int", "The number of keys."), + doc("has", "has(K key) -> bool", "Is the key in the map?"), + doc("get", "get(K key, V default) -> V", "The value for key, or default if the key isn't there."), + doc("remove", "remove(K key) -> bool", "Removes the key and its value; true if it was there."), + doc("clear", "clear()", "Removes everything."), + doc("keys", "keys() -> []K", "The keys, in the order they were added."), + doc("values", "values() -> []V", "The values, in the order their keys were added.") + ] +} + +fn keywords() -> []str { + return ["fn", "return", "if", "else", "while", "for", "in", "break", "continue", "true", "false", "null", "import", + "link", "struct", "enum", "match", "export", "defer", "or", "try", "self"] +} + +fn typeNames() -> []str { + return ["int", "float", "bool", "char", "str", "ptr", "map", "i8", "i16", "i32", "i64", "u8", "u16", "u32", "u64", "f32", "f64"] +} + +// the entry called `name`, or an empty Doc +fn find([]Doc list, str name) -> Doc { + for d in list { + if d.name == name { + return d + } + } + return Doc() +} + +// the text of a hover for a documented built-in +fn hover(Doc d) -> str { + return "```finch\n" + d.signature + "\n```\n" + d.text +} diff --git a/src/gen.fch b/src/gen.fch index 25070d6..66e8ff8 100644 --- a/src/gen.fch +++ b/src/gen.fch @@ -4,6 +4,7 @@ // C runtime the main compiler uses. This compiler copies values like the main one // (so programs behave the same) but never frees them: it is the bootstrap compiler. import ast +import docs import cimport import platform @@ -13,6 +14,9 @@ struct Var { str slot bool readonly int order // how many variables were declared before this one (for defer) + str dpath // where it was declared, for the language server + int dline + int dcol } // A scope's variables, and the defers that run when it ends, newest first. @@ -20,6 +24,7 @@ struct Var { // What the driver asks for besides the program itself. struct Options { bool shared // finch build --shared + bool index // finch index: say what every name in the program is, for the language server bool debug // -g str cwd // the folder the compiler was started in (for the debug info) platform.Target target @@ -147,6 +152,8 @@ struct Gen { int nvars // variables declared so far in this function cimport.CImports ci bool shared // building a library (finch build --shared): no main, its export fns are the way in + bool index // the language server's index is being made: see note... + []str idx // its lines bool debug // -g: debug info (DWARF, as LLVM metadata) platform.Target tg // the system the program is for str cwd @@ -168,7 +175,119 @@ struct Gen { // ---------- basics ---------- +// ---------- the language server's index ---------- +// +// `finch index file.fch` runs the compiler up to the end of type checking and prints what it learned instead of +// the program, one record per line, fields separated by tabs: +// @R file line col len defFile defLine defCol hover a name in the source, what it is, where it was made +// @V name type file line col fnFile fnLine fnEnd a variable (for completion), in the function that spans those lines +// @F module name recv file line col endLine signature a function or method +// @S module name file line col and @SF module struct field type +// @E module name file line col variants an enum +// @I module a module the file imports +// Text in a record has its newlines written \n. + +fn esc(str s) -> str { + return s.replace("\\", "\\\\").replace("\n", "\\n").replace("\t", " ") +} + +fn noteRef(ptr[Gen] g, ast.Node at, int col, int len, str hover, str defPath, int defLine, int defCol) { + if !g.index { + return + } + g.idx.push("@R\t" + g.files[at.file] + "\t" + str(at.line) + "\t" + str(col) + "\t" + str(len) + "\t" + defPath + "\t" + str(defLine) + "\t" + str(defCol) + "\t" + esc(hover)) +} + +// fn add(int a, int b) -> int fn Counter.add(int n) fn parse(str s) -> int! +fn sigText(FnSig sig) -> str { + []str ps + for k in 0..sig.params.len { + ps.push(ast.show(sig.params[k]) + " " + sig.pnames[k]) + } + name := sig.name + if sig.recv.len > 0 { + name = sig.recv + "." + sig.name + } + text := "fn " + name + "(" + ps.join(", ") + ")" + if sig.fallible { + if sig.ret.kind == "void" { + text = text + " -> !" + } else { + text = text + " -> " + ast.show(sig.ret) + "!" + } + } else if sig.ret.kind != "void" { + text = text + " -> " + ast.show(sig.ret) + } + return text +} + +// a call of a Finch function or method: the name in the source, and the function it is +fn noteCall(ptr[Gen] g, ast.Node c, FnSig sig) { + if !g.index { + return + } + col := c.col + if c.kind == "method" { + col = c.col + 1 + } + f := g.progs[sig.prog].fns[sig.index] + shownName := sig.name + if sig.targs.len > 0 && sig.recv.len == 0 { + shownName = f.name + } + noteRef(g, c, col, shownName.len, "```finch\n" + sigText(sig) + "\n```", g.files[f.file], f.line, f.col + 3) +} + +// what is known about every function, struct and enum, for completion and the outline +fn indexAll(ptr[Gen] g, []str mainImports) { + for im in mainImports { + g.idx.push("@I\t" + im) + } + for sg in g.sigs { + f := g.progs[sg.prog].fns[sg.index] + if sg.targs.len > 0 { + continue + } + []str ps + for k in 0..sg.params.len { + ps.push(ast.show(sg.params[k]) + " " + sg.pnames[k]) + } + g.idx.push("@F\t" + sg.module + "\t" + sg.name + "\t" + sg.recv + "\t" + g.files[f.file] + "\t" + str(f.line) + "\t" + str(f.col) + "\t" + str(f.endLine) + "\t" + esc(sigText(sg)) + "\t" + ps.join("|")) + } + for tp in g.templates { + if tp.isStruct { + continue + } + f := g.progs[tp.prog].fns[tp.index] + g.idx.push("@F\t" + tp.module + "\t" + tp.name + "\t" + tp.recv + "\t" + g.files[f.file] + "\t" + str(f.line) + "\t" + str(f.col) + "\t" + str(f.endLine) + "\t" + esc("fn " + tp.name + "[" + tp.tparams.join(", ") + "](...)") + "\t") + } + for sd in g.structs { + if sd.isC || sd.base.len > 0 { + continue + } + node := g.progs[sd.prog].structs[sd.index] + g.idx.push("@S\t" + sd.module + "\t" + sd.name + "\t" + g.files[node.file] + "\t" + str(node.line) + "\t" + str(node.col)) + for k in 0..sd.fnames.len { + g.idx.push("@SF\t" + sd.module + "\t" + sd.name + "\t" + sd.fnames[k] + "\t" + ast.show(sd.ftypes[k])) + } + } + for pi in 0..g.progs.len { + for en in g.progs[pi].enums { + vs := "" + []str names + for v in en.kids { + names.push(v.name) + } + vs = names.join(",") + g.idx.push("@E\t" + g.progs[pi].module + "\t" + en.name + "\t" + g.files[en.file] + "\t" + str(en.line) + "\t" + str(en.col) + "\t" + vs) + } + } +} + fn fail(ptr[Gen] g, ast.Node n, str msg) { + if g.index && g.idx.len > 0 { + print(g.idx.join("\n")) // what was learned before the error + } print(g.files[n.file] + ":" + str(n.line) + ":" + str(n.col) + ": error: " + msg + g.instNote) exit(1) } @@ -1081,9 +1200,14 @@ fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly } slot := alloca(g, llty(g, t)) store(g, llty(g, t), init, slot) - g.scopes[g.scopes.len - 1].vars.push(Var(name: name, ty: t, slot: slot, readonly: readonly, order: g.nvars)) + g.scopes[g.scopes.len - 1].vars.push(Var(name: name, ty: t, slot: slot, readonly: readonly, order: g.nvars, dpath: g.files[at.file], dline: at.line, dcol: at.col)) g.nvars += 1 dbgVariable(g, at, name, t, slot) + if g.index && name != "err" && !name.starts_with("$") { + fnode := g.progs[g.cur.prog].fns[g.cur.index] + g.idx.push("@V\t" + name + "\t" + ast.show(t) + "\t" + g.files[at.file] + "\t" + str(at.line) + "\t" + str(at.col) + "\t" + g.files[fnode.file] + "\t" + str(fnode.line) + "\t" + str(fnode.endLine)) + noteRef(g, at, at.col, name.len, "```finch\n" + ast.show(t) + " " + name + "\n```", "", 0, 0) + } return slot } @@ -1468,6 +1592,7 @@ fn genericCall(ptr[Gen] g, ast.Node c, int ti, int first, str shown) -> Val { } si := instFn(g, ti, b.types, T("void"), c) sig := g.sigs[si] + noteCall(g, c, sig) []str out for k in 0..nparams { v := coerce(g, vals[k], sig.params[k], c.kids[first + k], "argument '" + sig.pnames[k] + "'") @@ -3215,6 +3340,7 @@ fn ref(ptr[Gen] g, ast.Node e, bool write) -> Ref { fail(g, e, "there is no variable named '" + e.name + "'") } v := varAt(g, id) + noteRef(g, e, e.col, e.name.len, "```finch\n" + ast.show(v.ty) + " " + e.name + "\n```", v.dpath, v.dline, v.dcol) return Ref(isPlace: true, pl: Place(addr: v.slot, ty: v.ty)) } if e.kind == "member" { @@ -3263,6 +3389,7 @@ fn enumValue(ptr[Gen] g, ast.Node m, int ei) -> Val { if k < 0 { fail(g, m, "the enum " + ed.name + " has no variant '" + m.name + "' (it has: " + ed.variants.join(", ") + ")") } + noteRef(g, m, m.col + 1, m.name.len, "```finch\n" + ed.name + "." + m.name + " = " + str(ed.values[k]) + "\n```", "", 0, 0) return Val(v: str(ed.values[k]), ty: ast.Type(kind: "enum", name: ed.name, module: ed.module)) } @@ -3357,6 +3484,7 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { fail(g, m, "the struct " + ast.show(t) + " has no field '" + m.name + "' (it has: " + sd.fnames.join(", ") + ")") } ft := sd.ftypes[k] + noteRef(g, m, m.col + 1, m.name.len, "```finch\n" + ast.show(ft) + " " + m.name + "\n```", "", 0, 0) if obj.isPlace { fp := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + obj.pl.addr + ", i32 0, i32 " + str(sd.lidx[k])) return Ref(isPlace: true, pl: Place(addr: fp, ty: ft)) @@ -4009,6 +4137,16 @@ fn cLL(ptr[Gen] g, ast.Type t) -> str { } fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { + if g.index { + []str ps + for p in f.params { + ps.push(ast.show(p)) + } + if f.variadic { + ps.push("...") + } + noteRef(g, c, c.col, f.name.len, "C function from `" + f.header + "`\n```c\n" + ast.show(f.ret) + " " + f.name + "(" + ps.join(", ") + ")\n```", "", 0, 0) + } if f.unsupported.len > 0 { fail(g, c, "the C function '" + f.name + "' can't be used from Finch yet: it " + f.unsupported) } @@ -4163,6 +4301,12 @@ fn headerHint(str name) -> str { fn call(ptr[Gen] g, ast.Node c) -> Val { n := c.name + if g.index && isBuiltin(n) { + d := docs.find(docs.builtins(), n) + if d.name.len > 0 { + noteRef(g, c, c.col, n.len, docs.hover(d), "", 0, 0) + } + } if n == "error" { fail(g, c, "error(...) makes an error to return from a function that can fail: return error(\"...\")") } @@ -4351,6 +4495,11 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } si := findStruct(g, g.module, n) if si >= 0 { + sd := g.structs[si] + if g.index && !sd.isC { + node := g.progs[sd.prog].structs[sd.index] + noteRef(g, c, c.col, n.len, "```finch\nstruct " + sd.name + " { " + sd.fnames.join(", ") + " }\n```", g.files[node.file], node.line, node.col) + } return construct(g, si, c.kids, c.names, c) } ei := findEnum(g, g.module, n) @@ -4376,6 +4525,7 @@ fn callFn(ptr[Gen] g, int fi, ast.Node c, int first, str shown, str selfAddr, st if sig.module.len == 0 && sig.name == "main" { fail(g, c, "main can't be called, it is where the program starts") } + noteCall(g, c, sig) checkArgs(g, c, first, sig.params.len, shown) []str args if sig.recv.len > 0 { @@ -4482,6 +4632,17 @@ fn construct(ptr[Gen] g, int si, []ast.Node args, []str names, ast.Node at) -> V // ---------- methods ---------- +// a method of an array, text or map: hover from the built-in docs +fn noteMethod(ptr[Gen] g, ast.Node m, []docs.Doc list) { + if !g.index { + return + } + d := docs.find(list, m.name) + if d.name.len > 0 { + noteRef(g, m, m.col + 1, m.name.len, docs.hover(d), "", 0, 0) + } +} + fn method(ptr[Gen] g, ast.Node m) -> Val { objNode := m.kids[0] if objNode.kind == "var" && lookup(g, objNode.name) < 0 { @@ -4527,6 +4688,7 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } a = spill(g, r.val) } + noteMethod(g, m, docs.arrayMethods()) return arrayMethod(g, m, a, t) } if t.kind == "str" { @@ -4534,6 +4696,7 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { if r.isPlace { sv = Val(v: load(g, "{ ptr, i64, i64 }", r.pl.addr), ty: t) } + noteMethod(g, m, docs.strMethods()) return strMethod(g, m, spill(g, sv)) } if t.kind == "map" { @@ -4546,6 +4709,7 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } mp = spill(g, r.val) } + noteMethod(g, m, docs.mapMethods()) return mapMethod(g, m, mp, t) } st := t @@ -4958,7 +5122,7 @@ fn assemble(ptr[Gen] g) -> str { fn generate([]ast.Program progs, []str files, cimport.CImports ci, Options opt) -> str { shared := opt.shared - gen := Gen(progs: progs, files: files, ci: ci, shared: opt.shared, debug: opt.debug, cwd: opt.cwd, tg: opt.target, dbgScope: -1) + gen := Gen(progs: progs, files: files, ci: ci, shared: opt.shared, debug: opt.debug, index: opt.index, cwd: opt.cwd, tg: opt.target, dbgScope: -1) g := addr(gen) if g.debug { // !0 the compile unit, !1 and !2 the module flags, then the source files @@ -4986,6 +5150,11 @@ fn generate([]ast.Program progs, []str files, cimport.CImports ci, Options opt) define(g, di) di += 1 } + if g.index { + mainImports := g.progs[0].imports + indexAll(g, mainImports) + return g.idx.join("\n") + } for sg in g.sigs { if sg.exported { exportWrapper(g, sg) diff --git a/src/lsp.fch b/src/lsp.fch new file mode 100644 index 0000000..39742df --- /dev/null +++ b/src/lsp.fch @@ -0,0 +1,875 @@ +// The language server: `finch lsp`. An editor talks to it over stdin and stdout (JSON-RPC, as the Language Server +// Protocol says) and gets errors while it types, hover, go to definition, completion, an outline and signature +// help. +// +// It asks the compiler instead of being one: for every change it runs `finch index` on the text the editor has +// (see the index records in gen.fch), and answers from what comes back. +import json +import docs +import "stdio.h" +import "unistd.h" +import "stdlib.h" + +// ---------- what one run of the compiler told ---------- + +struct Ref { + str file + int line + int col + int len + str defFile + int defLine + int defCol + str hover +} + +struct VarRec { + str name + str type + str file + int line + int col + str fnFile + int fnLine + int fnEnd +} + +struct FnRec { + str module + str name + str recv + str file + int line + int col + int endLine + str signature + []str params +} + +struct StructRec { + str module + str name + str file + int line + int col + []str fields + []str types +} + +struct EnumRec { + str module + str name + str file + int line + int col + []str variants +} + +struct Diag { + bool has + str file + int line + int col + str message +} + +struct Analysis { + []Ref refs + []VarRec vars + []FnRec fns + []StructRec structs + []EnumRec enums + []str imports + Diag diag +} + +struct Server { + str self // the compiler's file: what to run for each check + str tmp // a folder for the copies of the editor's text + map[str]str docs // path -> the text the editor has + map[str]Analysis results // path -> the last check + map[str]Analysis good // path -> the last check that found no error + []str diagnosed // the files an error was shown for + bool stopping +} + +// ---------- paths and text ---------- + +fn hexval(char c) -> int { + if c >= '0' && c <= '9' { + return int(c) - int('0') + } + if c >= 'a' && c <= 'f' { + return int(c) - int('a') + 10 + } + if c >= 'A' && c <= 'F' { + return int(c) - int('A') + 10 + } + return -1 +} + +fn uriToPath(str uri) -> str { + s := uri + if s.starts_with("file://") { + s = s.sub(7, s.len) + } + []u8 out + i := 0 + while i < s.len { + if s[i] == '%' && i + 2 < s.len + 0 && hexval(s[i + 1]) >= 0 && hexval(s[i + 2]) >= 0 { + out.push(u8(hexval(s[i + 1]) * 16 + hexval(s[i + 2]))) + i += 3 + } else { + out.push(u8(s[i])) + i += 1 + } + } + return str(out) +} + +fn pathToUri(str path) -> str { + digits := "0123456789ABCDEF" + []str parts = ["file://"] + for c in path { + n := int(c) + if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || "/-_.~".contains(str(c)) { + parts.push(str(c)) + } else { + parts.push("%" + str(digits[(n / 16) % 16]) + str(digits[n % 16])) + } + } + return parts.join("") +} + +// "\n" written as two characters, back to a line break +fn unesc(str s) -> str { + []str parts + i := 0 + while i < s.len { + if s[i] == '\\' && i + 1 < s.len { + if s[i + 1] == 'n' { + parts.push("\n") + } else { + parts.push(str(s[i + 1])) + } + i += 2 + } else { + parts.push(str(s[i])) + i += 1 + } + } + return parts.join("") +} + +fn lineOf(str text, int line) -> str { + lines := text.split("\n") + if line >= 1 && line <= lines.len { + return lines[line - 1] + } + return "" +} + +// ---------- the protocol ---------- + +fn readLine() -> str { + []u8 bytes + while true { + c := getchar() + if c < 0 { + return "" + } + if c == 10 { + break + } + bytes.push(u8(c)) + } + line := str(bytes) + if line.ends_with("\r") { + line = line.sub(0, line.len - 1) + } + return line +} + +// the next message; an error at the end of the input +fn readMessage() -> json.Json! { + length := 0 + while true { + header := readLine() + if header.len == 0 { + if length > 0 { + break + } + if feof(stdin) != 0 { + return error("the editor closed the connection") + } + continue + } + if header.starts_with("Content-Length:") { + length = int(header.sub(15, header.len).trim()) or 0 + } + } + []u8 body + for i in 0..length { + c := getchar() + if c < 0 { + return error("the message was cut short") + } + body.push(u8(c)) + } + return try json.parse(str(body)) +} + +fn send(json.Json v) { + body := json.stringify(v) + head := "Content-Length: " + str(body.len) + "\r\n\r\n" + text := head + body + fwrite(text.ptr, 1, u64(text.len), stdout) + fflush(stdout) +} + +fn reply(json.Json id, json.Json result) { + m := json.new_object() + m.set("jsonrpc", json.new_text("2.0")) + m.set("id", id) + m.set("result", result) + send(m) +} + +fn notify(str method, json.Json params) { + m := json.new_object() + m.set("jsonrpc", json.new_text("2.0")) + m.set("method", json.new_text(method)) + m.set("params", params) + send(m) +} + +fn num(int n) -> json.Json { + return json.new_number(float(n)) +} + +fn position(int line, int col) -> json.Json { + p := json.new_object() + p.set("line", num(line)) + p.set("character", num(col)) + return p +} + +fn range(int line, int col, int endCol) -> json.Json { + r := json.new_object() + r.set("start", position(line, col)) + r.set("end", position(line, endCol)) + return r +} + +// ---------- asking the compiler ---------- + +fn splitTabs(str line) -> []str { + return line.split("\t") +} + +fn intOf(str s) -> int { + return int(s) or 0 +} + +// "path:line:col: error: message" -> a diagnostic +fn parseDiag(str line) -> Diag { + at := line.find(": error: ") + if at < 0 { + return Diag() + } + where := line.sub(0, at) + message := line.sub(at + 9, line.len) + // the last two colon-separated numbers are the line and column + parts := where.split(":") + if parts.len < 3 { + return Diag() + } + col := intOf(parts[parts.len - 1]) + ln := intOf(parts[parts.len - 2]) + []str pathParts + for i in 0..parts.len - 2 { + pathParts.push(parts[i]) + } + return Diag(has: true, file: pathParts.join(":"), line: ln, col: col, message: message) +} + +fn parseOutput(str output) -> Analysis { + a := Analysis() + for line in output.split("\n") { + if line.starts_with("@") { + f := splitTabs(line) + tag := f[0] + if tag == "@R" && f.len >= 9 { + a.refs.push(Ref(file: f[1], line: intOf(f[2]), col: intOf(f[3]), len: intOf(f[4]), defFile: f[5], defLine: intOf(f[6]), defCol: intOf(f[7]), hover: unesc(f[8]))) + } else if tag == "@V" && f.len >= 9 { + a.vars.push(VarRec(name: f[1], type: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]), fnFile: f[6], fnLine: intOf(f[7]), fnEnd: intOf(f[8]))) + } else if tag == "@F" && f.len >= 10 { + a.fns.push(FnRec(module: f[1], name: f[2], recv: f[3], file: f[4], line: intOf(f[5]), col: intOf(f[6]), endLine: intOf(f[7]), signature: unesc(f[8]), params: f[9].split("|"))) + } else if tag == "@S" && f.len >= 6 { + a.structs.push(StructRec(module: f[1], name: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]))) + } else if tag == "@SF" && f.len >= 5 && a.structs.len > 0 { + k := a.structs.len - 1 + a.structs[k].fields.push(f[3]) + a.structs[k].types.push(f[4]) + } else if tag == "@E" && f.len >= 7 { + a.enums.push(EnumRec(module: f[1], name: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]), variants: f[6].split(","))) + } else if tag == "@I" && f.len >= 2 { + a.imports.push(f[1]) + } + } else if !a.diag.has { + a.diag = parseDiag(line) + } + } + return a +} + +fn Server.analyse(str path) { + // the editor's text, as files the compiler can read: it asks for the file by its real name + shell("mkdir -p '" + self.tmp + "'") + overlays := "" + n := 0 + for p in self.docs.keys() { + copy := self.tmp + "/doc" + str(n) + ".fch" + write_file(copy, self.docs[p]) + overlays = overlays + " --overlay '" + p + "=" + copy + "'" + n += 1 + } + out := self.tmp + "/out.txt" + shell("'" + self.self + "' index '" + path + "'" + overlays + " > '" + out + "' 2>&1") + a := parseOutput(read_file(out) or "") + if !a.diag.has { + self.good[path] = a + } else if self.good.has(path) { + // half-typed code doesn't compile: completion and signatures keep using what the last good version knew + g := self.good[path] + a.fns = g.fns + a.structs = g.structs + a.enums = g.enums + a.vars = g.vars + if a.imports.len == 0 { + a.imports = g.imports + } + } + self.results[path] = a + self.publish(path, a) +} + +fn Server.publish(str path, Analysis a) { + // the files to say something about: the one checked, and any that had an error that is gone + []str files = [path] + for d in self.diagnosed { + if !files.contains(d) { + files.push(d) + } + } + []str now + for f in files { + list := json.new_list() + if a.diag.has && a.diag.file == f { + line := a.diag.line - 1 + if line < 0 { + line = 0 + } + col := a.diag.col - 1 + if col < 0 { + col = 0 + } + d := json.new_object() + d.set("range", range(line, col, col + 1)) + d.set("severity", num(1)) + d.set("source", json.new_text("finch")) + d.set("message", json.new_text(a.diag.message)) + list.push(d) + now.push(f) + } + p := json.new_object() + p.set("uri", json.new_text(pathToUri(f))) + p.set("diagnostics", list) + notify("textDocument/publishDiagnostics", p) + } + self.diagnosed = now +} + +// ---------- the questions ---------- + +fn refAt(Analysis a, str path, int line, int col) -> int { + for i in 0..a.refs.len { + r := a.refs[i] + if r.line == line && col >= r.col && col <= r.col + r.len && r.file == path { + return i + } + } + return -1 +} + +fn hoverAt(Analysis a, str path, int line, int col) -> json.Json { + i := refAt(a, path, line, col) + if i < 0 { + return json.new_null() + } + contents := json.new_object() + contents.set("kind", json.new_text("markdown")) + contents.set("value", json.new_text(a.refs[i].hover)) + out := json.new_object() + out.set("contents", contents) + return out +} + +fn definitionAt(Analysis a, str path, int line, int col) -> json.Json { + i := refAt(a, path, line, col) + if i < 0 || a.refs[i].defFile.len == 0 { + return json.new_null() + } + r := a.refs[i] + out := json.new_object() + out.set("uri", json.new_text(pathToUri(r.defFile))) + out.set("range", range(r.defLine - 1, r.defCol - 1, r.defCol - 1)) + return out +} + +fn symbolsOf(Analysis a, str path) -> json.Json { + list := json.new_list() + for f in a.fns { + if f.file != path { + continue + } + kind := 12 // Function + name := f.name + if f.recv.len > 0 { + kind = 6 // Method + name = f.recv + "." + f.name + } + list.push(symbol(name, kind, f.line, f.col, f.endLine)) + } + for s in a.structs { + if s.file == path { + list.push(symbol(s.name, 23, s.line, s.col, s.line + s.fields.len + 1)) + } + } + for e in a.enums { + if e.file == path { + list.push(symbol(e.name, 10, e.line, e.col, e.line + e.variants.len + 1)) + } + } + return list +} + +fn symbol(str name, int kind, int line, int col, int endLine) -> json.Json { + s := json.new_object() + s.set("name", json.new_text(name)) + s.set("kind", num(kind)) + full := json.new_object() + full.set("start", position(line - 1, 0)) + full.set("end", position(endLine, 0)) + s.set("range", full) + s.set("selectionRange", range(line - 1, col - 1, col - 1)) + return s +} + +// ---------- completion ---------- + +fn item(str label, int kind, str detail, str text) -> json.Json { + o := json.new_object() + o.set("label", json.new_text(label)) + o.set("kind", num(kind)) + if detail.len > 0 { + o.set("detail", json.new_text(detail)) + } + if text.len > 0 { + d := json.new_object() + d.set("kind", json.new_text("markdown")) + d.set("value", json.new_text(text)) + o.set("documentation", d) + } + return o +} + +fn isWordChar(char c) -> bool { + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_' +} + +fn methodItems(ptr[json.Json] items, []docs.Doc list) { + for d in list { + kind := 2 // Method + if d.signature.starts_with(".") { + kind = 5 // Field + } + items.push(item(d.name, kind, d.signature, d.text)) + } +} + +// the variable called `name` that is in scope at `line` (the innermost one declared before it) +fn varNamed(Analysis a, str path, str name, int line) -> VarRec { + found := VarRec() + for v in a.vars { + if v.name == name && v.line <= line && line <= v.fnEnd + 1 && v.fnFile == path { + found = v + } + } + return found +} + +fn completionAt(Analysis a, str text, str path, int line, int col) -> json.Json { + items := json.new_list() + lineText := lineOf(text, line) + end := col - 1 + if end > lineText.len { + end = lineText.len + } + before := lineText.sub(0, end) + // the word being typed, and whether a dot comes right before it + wordStart := before.len + while wordStart > 0 && isWordChar(before[wordStart - 1]) { + wordStart -= 1 + } + afterDot := wordStart > 0 && before[wordStart - 1] == '.' + if afterDot { + s := wordStart - 1 + while s > 0 && (isWordChar(before[s - 1]) || before[s - 1] == '[' || before[s - 1] == ']') { + s -= 1 + } + owner := before.sub(s, wordStart - 1) + element := false + br := owner.find("[") + if br >= 0 { + owner = owner.sub(0, br) + element = true + } + // a module: its functions, structs and enums + if a.imports.contains(owner) { + for f in a.fns { + if f.module == owner && f.recv.len == 0 { + items.push(item(f.name, 3, f.signature, "")) + } + } + for st in a.structs { + if st.module == owner { + items.push(item(st.name, 22, "struct " + st.name, "")) + } + } + for en in a.enums { + if en.module == owner { + items.push(item(en.name, 13, "enum " + en.name, "")) + } + } + return completionList(items) + } + // an enum: its variants + for en in a.enums { + if en.name == owner && varNamed(a, path, owner, line).name.len == 0 { + for v in en.variants { + items.push(item(v, 20, en.name + "." + v, "")) + } + return completionList(items) + } + } + // a variable: by its type + type := varNamed(a, path, owner, line).type + if element && type.starts_with("[]") { + type = type.sub(2, type.len) + } else if element && type == "str" { + type = "char" + } + if type.starts_with("ptr[") && type.ends_with("]") { + type = type.sub(4, type.len - 1) + } + if type.starts_with("[]") { + methodItems(addr(items), docs.arrayMethods()) + } else if type == "str" { + methodItems(addr(items), docs.strMethods()) + } else if type.starts_with("map[") { + methodItems(addr(items), docs.mapMethods()) + } else { + base := type + for st in a.structs { + if st.name == base { + for k in 0..st.fields.len { + items.push(item(st.fields[k], 5, st.types[k], "")) + } + } + } + for f in a.fns { + if f.recv == base { + items.push(item(f.name, 2, f.signature, "")) + } + } + } + return completionList(items) + } + // not after a dot: what is in scope + seen := Names() + for v in a.vars { + if v.line <= line && line <= v.fnEnd + 1 && v.fnFile == path && seen.add(v.name) { + items.push(item(v.name, 6, v.type, "")) + } + } + for f in a.fns { + if f.recv.len == 0 && f.module == "" && seen.add(f.name) { + items.push(item(f.name, 3, f.signature, "")) + } + } + for st in a.structs { + if st.module == "" && seen.add(st.name) { + items.push(item(st.name, 22, "struct " + st.name, "")) + } + } + for en in a.enums { + if en.module == "" && seen.add(en.name) { + items.push(item(en.name, 13, "enum " + en.name, "")) + } + } + for m in a.imports { + if seen.add(m) { + items.push(item(m, 9, "module", "")) + } + } + for d in docs.builtins() { + if seen.add(d.name) { + items.push(item(d.name, 3, d.signature, d.text)) + } + } + for k in docs.keywords() { + if seen.add(k) { + items.push(item(k, 14, "", "")) + } + } + for t in docs.typeNames() { + if seen.add(t) { + items.push(item(t, 25, "", "")) + } + } + return completionList(items) +} + +struct Names { + []str items +} + +fn Names.add(str x) -> bool { + if self.items.contains(x) { + return false + } + self.items.push(x) + return true +} + +fn completionList(json.Json items) -> json.Json { + o := json.new_object() + o.set("isIncomplete", json.new_bool(false)) + o.set("items", items) + return o +} + +// ---------- signature help ---------- + +fn signatureAt(Analysis a, str text, str path, int line, int col) -> json.Json { + lineText := lineOf(text, line) + end := col - 1 + if end > lineText.len { + end = lineText.len + } + before := lineText.sub(0, end) + // back to the `(` that is still open, counting the commas at its own level + depth := 0 + commas := 0 + open := -1 + i := before.len - 1 + while i >= 0 { + c := before[i] + if c == ')' || c == ']' { + depth += 1 + } else if c == '(' || c == '[' { + if depth == 0 { + if c == '(' { + open = i + break + } + } else { + depth -= 1 + } + } else if c == ',' && depth == 0 { + commas += 1 + } + i -= 1 + } + if open < 0 { + return json.new_null() + } + nameEnd := open + nameStart := nameEnd + while nameStart > 0 && isWordChar(before[nameStart - 1]) { + nameStart -= 1 + } + name := before.sub(nameStart, nameEnd) + if name.len == 0 { + return json.new_null() + } + recv := "" + if nameStart > 0 && before[nameStart - 1] == '.' { + // a method: its struct from the type of what comes before the dot + s := nameStart - 1 + while s > 0 && isWordChar(before[s - 1]) { + s -= 1 + } + owner := before.sub(s, nameStart - 1) + type := varNamed(a, path, owner, line).type + if type.starts_with("ptr[") && type.ends_with("]") { + type = type.sub(4, type.len - 1) + } + recv = type + } + for f in a.fns { + if f.name == name && f.recv == recv { + sig := json.new_object() + sig.set("label", json.new_text(f.signature)) + params := json.new_list() + for p in f.params { + if p.len > 0 { + one := json.new_object() + one.set("label", json.new_text(p)) + params.push(one) + } + } + sig.set("parameters", params) + sigs := json.new_list() + sigs.push(sig) + out := json.new_object() + out.set("signatures", sigs) + out.set("activeSignature", num(0)) + out.set("activeParameter", num(commas)) + return out + } + } + d := docs.find(docs.builtins(), name) + if d.name.len > 0 { + sig := json.new_object() + sig.set("label", json.new_text(d.signature)) + sig.set("documentation", json.new_text(d.text)) + sigs := json.new_list() + sigs.push(sig) + out := json.new_object() + out.set("signatures", sigs) + out.set("activeSignature", num(0)) + out.set("activeParameter", num(commas)) + return out + } + return json.new_null() +} + +// ---------- the messages ---------- + +fn textOf(json.Json params) -> str { + return params.get("textDocument").get("text").str_or("") +} + +fn pathOf(json.Json params) -> str { + return uriToPath(params.get("textDocument").get("uri").str_or("")) +} + +fn Server.answer(json.Json msg) { + method := msg.get("method").str_or("") + params := msg.get("params") + id := msg.get("id") + match method { + "initialize" -> { + caps := json.new_object() + caps.set("textDocumentSync", num(1)) + caps.set("hoverProvider", json.new_bool(true)) + caps.set("definitionProvider", json.new_bool(true)) + caps.set("documentSymbolProvider", json.new_bool(true)) + comp := json.new_object() + dot := json.new_list() + dot.push(json.new_text(".")) + comp.set("triggerCharacters", dot) + caps.set("completionProvider", comp) + sigp := json.new_object() + trig := json.new_list() + trig.push(json.new_text("(")) + trig.push(json.new_text(",")) + sigp.set("triggerCharacters", trig) + caps.set("signatureHelpProvider", sigp) + result := json.new_object() + result.set("capabilities", caps) + info := json.new_object() + info.set("name", json.new_text("finch")) + result.set("serverInfo", info) + reply(id, result) + } + "shutdown" -> { + self.stopping = true + reply(id, json.new_null()) + } + "exit" -> { + exit(0) + } + "textDocument/didOpen" -> { + path := pathOf(params) + self.docs[path] = textOf(params) + self.analyse(path) + } + "textDocument/didChange" -> { + path := pathOf(params) + changes := params.get("contentChanges") + if changes.len() > 0 { + self.docs[path] = changes.at(changes.len() - 1).get("text").str_or("") + self.analyse(path) + } + } + "textDocument/didSave" -> { + path := pathOf(params) + if self.docs.has(path) { + self.analyse(path) + } + } + "textDocument/didClose" -> { + path := pathOf(params) + self.docs.remove(path) + self.results.remove(path) + self.good.remove(path) + empty := json.new_object() + empty.set("uri", json.new_text(pathToUri(path))) + empty.set("diagnostics", json.new_list()) + notify("textDocument/publishDiagnostics", empty) + } + "textDocument/hover", "textDocument/definition", "textDocument/completion", "textDocument/documentSymbol", "textDocument/signatureHelp" -> { + path := pathOf(params) + line := params.get("position").get("line").int_or(0) + 1 + col := params.get("position").get("character").int_or(0) + 1 + if !self.results.has(path) { + reply(id, json.new_null()) + return + } + a := self.results[path] + text := "" + if self.docs.has(path) { + text = self.docs[path] + } + match method { + "textDocument/hover" -> reply(id, hoverAt(a, path, line, col)) + "textDocument/definition" -> reply(id, definitionAt(a, path, line, col)) + "textDocument/completion" -> reply(id, completionAt(a, text, path, line, col)) + "textDocument/documentSymbol" -> reply(id, symbolsOf(a, path)) + else -> reply(id, signatureAt(a, text, path, line, col)) + } + } + else -> { + // a request we don't know gets an answer so the editor does not wait; notifications get none + if id.kind != json.Kind.Null { + reply(id, json.new_null()) + } + } + } +} + +// finch lsp +fn run(str self) -> int { + s := Server(self: self, tmp: "/tmp/finch_lsp_" + str(int(getpid()))) + while true { + msg := readMessage() or { + break + } + s.answer(msg) + } + shell("rm -rf '" + s.tmp + "'") + return 0 +} diff --git a/src/main.fch b/src/main.fch index 9f8853e..9c15d2b 100644 --- a/src/main.fch +++ b/src/main.fch @@ -12,6 +12,7 @@ import gen import cimport import platform import linker +import lsp import "stdlib.h" fn dirOf(str path) -> str { @@ -44,6 +45,16 @@ struct Loader { str os // "windows", "macos" or "linux": a module may have a version for each (time_windows.fch) str std // the standard library's folder, or "" []str paths // FINCH_PATH: more folders to look for modules in + []str overlayPaths // --overlay path=file: read `path` from `file` (the text an editor has, not saved yet) + []str overlayFiles +} + +fn textOfFile(ptr[Loader] l, str path) -> str { + k := l.overlayPaths.find(path) + if k >= 0 { + return read_file(l.overlayFiles[k]) + } + return read_file(path) } // import json: the file next to the one that imports it, else the standard library's. @@ -77,7 +88,7 @@ fn findModule(ptr[Loader] l, str from, str name) -> str { } fn load(ptr[Loader] l, str path, str module) { - if !file_exists(path) { + if !file_exists(path) && !l.overlayPaths.contains(path) { if module.len > 0 { print("error: can't find the module '" + module + "' (looked for " + path + ")") } else { @@ -85,7 +96,7 @@ fn load(ptr[Loader] l, str path, str module) { } exit(1) } - src := read_file(path) + src := textOfFile(l, path) file := l.files.len l.files.push(path) prog := parser.parse(lexer.lex(src, path), file, path) @@ -108,13 +119,13 @@ fn usage() { print(" finch build [-o name] build a program") print(" finch ir print the LLVM IR") print(" finch version show the version") + print(" finch lsp the language server, for editors (VS Code, Kate, ...)") print("options:") print(" -O0 no optimization (faster to build)") print(" -l link a library (the same as link \"lib\" in the program)") print(" -I look for imported C headers there too") print(" -g debug info (for gdb and lldb; use -O0 with it)") print(" --target build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple") - print("not in this compiler yet: lsp. It is in the C++ one (branch before-bootstrap).") exit(1) } @@ -123,12 +134,15 @@ fn main([]str args) -> int { print("Finch 2.4.0 (the compiler is written in Finch)") return 0 } + if args.len == 2 && args[1] == "lsp" { + return lsp.run(args[0]) // the language server, for editors + } if args.len < 3 { usage() } cmd := args[1] file := args[2] - if cmd != "build" && cmd != "run" && cmd != "ir" { + if cmd != "build" && cmd != "run" && cmd != "ir" && cmd != "index" { usage() } out := stem(file) @@ -139,6 +153,8 @@ fn main([]str args) -> int { opt := "-O2" []str extraLibs []str extraDirs + []str overlayPaths + []str overlayFiles []str progArgs ai := 3 while ai < args.len { @@ -161,6 +177,11 @@ fn main([]str args) -> int { } else if a == "-I" && ai + 1 < args.len { extraDirs.push(args[ai + 1]) ai += 1 + } else if a == "--overlay" && ai + 1 < args.len { + both := args[ai + 1].split("=") + overlayPaths.push(both[0]) + overlayFiles.push(both[1]) + ai += 1 } else if a == "-g" { debug = true } else if a == "--target" && ai + 1 < args.len { @@ -200,6 +221,8 @@ fn main([]str args) -> int { loader.std = cand } } + loader.overlayPaths = overlayPaths + loader.overlayFiles = overlayFiles for d in getenv("FINCH_PATH").split(":") { if d.len > 0 { loader.paths.push(d) @@ -239,8 +262,8 @@ fn main([]str args) -> int { print(err) return 1 } - ir := gen.generate(loader.progs, loader.files, ci, gen.Options(shared: shared, debug: debug, cwd: getenv("PWD"), target: tg)) - if cmd == "ir" { + ir := gen.generate(loader.progs, loader.files, ci, gen.Options(shared: shared, debug: debug, index: cmd == "index", cwd: getenv("PWD"), target: tg)) + if cmd == "ir" || cmd == "index" { print(ir) return 0 } diff --git a/src/parser.fch b/src/parser.fch index 8d78003..fb5e5e1 100644 --- a/src/parser.fch +++ b/src/parser.fch @@ -420,6 +420,7 @@ fn parseFn(ptr[Parser] p) -> ast.Node { } } f.kids.push(parseBlock(p)) + f.endLine = f.kids[f.kids.len - 1].endLine return f } @@ -438,6 +439,7 @@ fn parseBlock(ptr[Parser] p) -> ast.Node { endOfStatement(p) } p.depth = saved + blk.endLine = cur(p).line next(p) return blk } diff --git a/tests/run.sh b/tests/run.sh index 8c697ac..19f400a 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -78,5 +78,16 @@ else head -5 "$tmp/shared.out" fi +# the language server, talked to the way an editor does +if command -v python3 > /dev/null 2>&1; then + if FINCH="$FINCH" python3 lsp_test.py > "$tmp/lsp.out" 2>&1; then + pass=$((pass + 1)) + else + failed=$((failed + 1)) + echo "FAIL lsp_test.py" + grep FAIL "$tmp/lsp.out" | head -5 + fi +fi + echo "$pass passed, $failed failed" [ $failed -eq 0 ]